Проблемы приеме / передаче через СОМ порт
При передаче / приеме данных через COM порт, возникла такая проблема:
передаю например байт - 0xff, а при его приеме получаю - 0x7f, то есть старший бит куда то пропал, подскажите пожалуйста в чем ошибка и как исправить.
Вот код:
Код:
DWORD fb;
char rx, wx;
wx = 0xff;
if (!WriteFile(COM, &wx, 1, &fb, NULL) || (fb != 1))
{
printf("WriteFile1() failed\n");
CloseHandle(COM);
COM = 0;
return -1;
}
if (!ReadFile(COM, &rx, 1, &fb, NULL))
{
printf("ReadFile() failed\n");
CloseHandle(COM);
COM = 0;
return -1;
}
else if (fb != 1)
{
printf("Timeout\n");
CloseHandle(COM);
COM = 0;
return -1;
}
char rx, wx;
wx = 0xff;
if (!WriteFile(COM, &wx, 1, &fb, NULL) || (fb != 1))
{
printf("WriteFile1() failed\n");
CloseHandle(COM);
COM = 0;
return -1;
}
if (!ReadFile(COM, &rx, 1, &fb, NULL))
{
printf("ReadFile() failed\n");
CloseHandle(COM);
COM = 0;
return -1;
}
else if (fb != 1)
{
printf("Timeout\n");
CloseHandle(COM);
COM = 0;
return -1;
}
Код:
DCB dcb;
memset(&dcb, 0, sizeof(DCB));
dcb.DCBlength = sizeof(DCB);
GetCommState(COM, &dcb);
dcb.BaudRate = 19200;
dcb.ByteSize = 8;
dcb.fBinary = TRUE;
dcb.fParity = FALSE;
dcb.Parity = NOPARITY;
dcb.StopBits = 1;
SetCommState(COM, &dcb);
memset(&dcb, 0, sizeof(DCB));
dcb.DCBlength = sizeof(DCB);
GetCommState(COM, &dcb);
dcb.BaudRate = 19200;
dcb.ByteSize = 8;
dcb.fBinary = TRUE;
dcb.fParity = FALSE;
dcb.Parity = NOPARITY;
dcb.StopBits = 1;
SetCommState(COM, &dcb);
- Можно откомпилированный бинарник поюзать? от CassandraDied, 10 июня 2012 года
- уточняю, я замкнул на своем COM1 RxD и TxD может в этом причина от whmario, 10 июня 2012 года