У меня есть устройство, которое подключено к порту COM4 (115200 бод, 8-N-1). На основании примеров, которые я нашел здесь я открываю порт с помощью:
Keyboard_Handle=CreateFile("\\\\.\\COM4",GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
if(GetLastError() !=0 || Keyboard_Handle == INVALID_HANDLE_VALUE)
{
AfxMessageBox("Error opening connection to Keyboard");
exit(1);
}
char buffer[100];
strcpy(buffer,"baud=115200 parity=N data=8 stop=1");
BuildCommDCB((char*)&buffer,&dcb))
if(GetCommState(Keyboard_Handle, &dcb))
{
dcb.BaudRate = CBR_115200;
dcb.ByteSize = 8;
dcb.Parity = 0;
dcb.StopBits = 1;
SetCommState(Keyboard_Handle, &dcb);
}
Позже в моем коде я вызываю WriteFile для порта с:
LPDWORD bytes_written;
LPDWORD bytes_read;
LPOVERLAPPED OVERLAP;
char write_buf[10];
write_buf[0] = 's';
write_buf[1] = '\0';
if(Keyboard_Handle != NULL) {
WriteFile(Keyboard_Handle, (LPCVOID)write_buf , strlen(write_buf), bytes_written, OVERLAP);
}
И каждый раз, когда я запускаю код, я получаю отладчик JIT с жалобой на необработанное исключение (хотя WriteFile находится внутри блока Try / catch).
Что-то не так с тем, как я это делаю?