RS 232 wysyłanie bajtów w HEX [BCB6]

0

Witam

Mam taki oto kod:

int __fastcall Write_Comm(HANDLE hCommDev, DWORD nNumberOfBytesToWrite)
{
DWORD NumberOfBytesWritten;

if (WriteFile(hCommDev, &Buffer_O[0], nNumberOfBytesToWrite,
&NumberOfBytesWritten, NULL) > 0)
{
WaitCommEvent(hCommDev, &fdwEvtMask, NULL);

    return TRUE;
 }
 else
   return FALSE;

}

if (hCommDev > 0)
{
TransmitCommChar(hCommDev, 'I');
}

Znak wysyła bez problemów, a teraz potrzebuję wysłać znak w postaci HEX i znów kod:

if (hCommDev > 0)
{
TransmitCommChar(hCommDev, 0x001);
}

//albo takie coś

Buffer_I[0] = 0x001;
Write_Comm(hCommDev, 1);

po czym pobieram z COM'a dane i cisza, a urządzenie powinno odpowiedzieć.
Wysyłając to samo Terminalem urządzenie odpowiada tak jak jest zaprogramowane.

Jest jakiś inny sposób, czy może coś źle robię?

0

Co masz na myśli pisząc 'znak w postaci hex' ? Bo najpierw wysyłasz literke 'I' (0x49), a później znak o kodzie 0x01 ?

0

a 0x01 nie jest interpretowany jako jakis kod sterujacy?

0

Ale musisz poustawiać odpowiednie parametry transmisji dla urzadzenia
predkośc ,stany linii rządania nadawania lub gotowości i tak dalej w swoim programie
, czy to wszystko jest ok?.Wszystkie te operacje musi wykonać twój program
otwierając port za pomocą struktur opisujących parametry portu.
<url>
http://www.win32prog.republika.pl/winapp/opisrs232c.txt
</url>
<url>
http://www.win32prog.republika.pl/winapp/rs232c.zip
</url>
<url>
http://www.win32prog.republika.pl/win32dir/progwin.html
</url>

0

Ok dzięki wielkie, bity danych miałem troszkę przestawione :/
Już wszystko działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1