C Builder, kaip?

E

Energingas

Guest
Labas visiems,

Tiesiog į paprastą klausimą,
Aš C Builder Beginer aš pradėti problemų, man padėti
ir patarti ..
Norėčiau išbandyti, jei port COM yra nemokama (žinau tai padaryti)
ir jei jis nėra atidaryti
modalinio formą
ir po to, jei patvirtintumėte mygtukas presed nutraukti prašymo.
Aš, kad:
if (! Atitikti) (
NoComForm-> ShowModal ();
Paraiška-> nutraukti ();
)
else / / (likusią prašymo.)

Ne darbus, šiuo atveju lemia įvykis! Atitikti
ir jos narėmis nesančių valstybių
kitų statybininkų renginiuose manau ..kas dabar?Prašome išspręsti šią problemą ..Best regards Keen

 
kas Atitikti?
tai logiška Jūs apibrėžta?

atidarantis Atitikti panašus atidaryti failo C
Jeigu jums nepavyksta susisiekti su rankena, ji nėra arba jis jau atidarytas

 
Labas,
Ar naudojate išorinį komponentą arba jūs bandote atidaryti Atitikti kaip failą?Jei norite išbandyti Atitikti laisvas, pabandykite atidaryti jį ir atidaryti funkcija grąžina null Jūs negalite naudotis it.If norite naudoti 3rd Party Atitikti komponentas, pabandykite naudoti cport rasti torry.net

Analizatorius.

 
Labas visiems,
Atitikti yra kompiuterio UART.
Tikslinė ką nori padaryti, tai: atvira modalinio forma jei Atitikti
nėra.Apie modalinio forma nei mygtuką,
ir jei aš paspauskite ją, nei
Šio nutraukti tha taikymo,
tai visus, ką aš noriu padaryti pirmą posūkį.
Aš parašė kodo, bet ne darbo vykdymo metu.Kaip aš į šį darbą?Dėl Keen

 
Labas visiems,
Atitikti yra kompiuterio UART.
Tikslinė ką nori padaryti, tai: atvira modalinio forma jei Atitikti
nėra.Apie modalinio forma nei mygtuką,
ir jei aš paspauskite ją, nei
Šio nutraukti tha taikymo,
tai visus, ką aš noriu padaryti pirmą posūkį.
Aš parašė kodo, bet ne darbo vykdymo metu.Kaip aš į šį darbą?Dėl Keen

 
Yra naudinga kasdienybe below.Check ji:

#
include "stdafx.h"
#
include "Serial.h"

CSerial: CSerial ()
(

memset (& m_OverlappedRead, 0, sizeof (sutapo));
memset (& m_OverlappedWrite, 0, sizeof (sutapo));
m_hIDComDev = NULL;
m_bOpened = FALSE;

)

CSerial:: ~ CSerial ()
(

Close ();

)

BOOL CSerial: Atidaryti (int NPORT, int nBaud)
(

jei (m_bOpened) return (TRUE);

char szPort [15];
char szComParams [50];
DCB dcb;

wsprintf (szPort "KOM% d", NPORT);
m_hIDComDev = CreateFile (szPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL);
jei (m_hIDComDev == NULL) return (FALSE);

memset (& m_OverlappedRead, 0, sizeof (sutapo));
memset (& m_OverlappedWrite, 0, sizeof (sutapo));

COMMTIMEOUTS CommTimeOuts;
CommTimeOuts.ReadIntervalTimeout = 0xFFFFFFFF;
CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
CommTimeOuts.ReadTotalTimeoutConstant = 0;
CommTimeOuts.WriteTotalTimeoutMultiplier = 0;
CommTimeOuts.WriteTotalTimeoutConstant = 5000;
SetCommTimeouts (m_hIDComDev, & CommTimeOuts);

wsprintf (szComParams "KOM% d:% d, n, 8,1", NPORT, nBaud);

m_OverlappedRead.hEvent = createEvent (NULL, TRUE, FALSE, NULL);
m_OverlappedWrite.hEvent = createEvent (NULL, TRUE, FALSE, NULL);

dcb.DCBlength = sizeof (DCB);
GetCommState (m_hIDComDev, & dcb);
dcb.BaudRate = nBaud;
dcb.ByteSize = 8;
unsigned char ucSet;
ucSet = (unsigned char) ((FC_RTSCTS & FC_DTRDSR)! = 0);
ucSet = (unsigned char) ((FC_RTSCTS & FC_RTSCTS)! = 0);
ucSet = (unsigned char) ((FC_RTSCTS & FC_XONXOFF)! = 0);
if (! SetCommState (m_hIDComDev, & dcb) | |
! SetupComm (m_hIDComDev, 10000, 10000) | |
m_OverlappedRead.hEvent == NULL | |
m_OverlappedWrite.hEvent == NULL) (
DWORD dwError = GetLastError ();
jei (m_OverlappedRead.hEvent! = NULL) CloseHandle (m_OverlappedRead.hEvent);
jei (m_OverlappedWrite.hEvent! = NULL) CloseHandle (m_OverlappedWrite.hEvent);
CloseHandle (m_hIDComDev);
return (FALSE);
)

m_bOpened = TRUE;

return (m_bOpened);

)

BOOL CSerial:: Uždaryti (tuščia)
(

if (! m_bOpened | | m_hIDComDev == NULL) return (TRUE);

jei (m_OverlappedRead.hEvent! = NULL) CloseHandle (m_OverlappedRead.hEvent);
jei (m_OverlappedWrite.hEvent! = NULL) CloseHandle (m_OverlappedWrite.hEvent);
CloseHandle (m_hIDComDev);
m_bOpened = FALSE;
m_hIDComDev = NULL;

return (TRUE);

)

BOOL CSerial: WriteCommByte (unsigned char ucByte)
(
BOOL bWriteStat;
DWORD dwBytesWritten;

bWriteStat = WriteFile (m_hIDComDev (LPSTR) & ucByte, 1, & dwBytesWritten, & m_OverlappedWrite);
if (! bWriteStat & & (GetLastError () == ERROR_IO_PENDING)) (
jei (WaitForSingleObject (m_OverlappedWrite.hEvent, 1000)) dwBytesWritten = 0;
else (
GetOverlappedResult (m_hIDComDev, & m_OverlappedWrite, & dwBytesWritten, FALSE);
m_OverlappedWrite.Offset = dwBytesWritten;
)
)

return (TRUE);

)

int CSerial: SendData (const char * buferis, int size)
(

if (! m_bOpened | | m_hIDComDev == NULL) return (0);

DWORD dwBytesWritten = 0;
int i;
for (i = 0; i <dydis; i ) (
WriteCommByte (buffer );
dwBytesWritten ;
)

return ((int) dwBytesWritten);

)

int CSerial: ReadDataWaiting (tuščia)
(

if (! m_bOpened | | m_hIDComDev == NULL) return (0);

DWORD dwErrorFlags;
COMSTAT ComStat;

ClearCommError (m_hIDComDev, & dwErrorFlags, & ComStat);

return ((int) ComStat.cbInQue);

)

int CSerial: ReadData (void * buferis, int riba)
(

if (! m_bOpened | | m_hIDComDev == NULL) return (0);

BOOL bReadStatus;
DWORD dwBytesRead, dwErrorFlags;
COMSTAT ComStat;

ClearCommError (m_hIDComDev, & dwErrorFlags, & ComStat);
if (! ComStat.cbInQue) return (0);

dwBytesRead = (DWORD) ComStat.cbInQue;
jei (limitas <(int) dwBytesRead) dwBytesRead = (DWORD) ribos;

bReadStatus = readfile (m_hIDComDev, buferis, dwBytesRead, & dwBytesRead, & m_OverlappedRead);
if (! bReadStatus) (
jei (GetLastError () == ERROR_IO_PENDING) (
WaitForSingleObject (m_OverlappedRead.hEvent, 2000);
return ((int) dwBytesRead);
)
return (0);
)

return ((int) dwBytesRead);

)

 
Analizatoriaus,
Dėkojame už jūsų pagalbą,
Na jo ne problema handl su com port,
kad pagrindinė problema yra, kaip man sakė, mano programa "pakimba"
po aptikti, kad com2 uostas nėra laisvos ..Aš kažką ne
leidžia pamatyti ..

Dėl Keen

 
labas

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Šypsotis" border="0" />

)

Aš įkūrė, Sprawdziliśmy vidaus būklė (Com2Port) & Jei negali pradėti
laikmatç, dėl laiko atveju aš galiu ShowModal forma ..

TNX Br Keen

 

Welcome to EDABoard.com

Sponsor

Back
Top