Вопрос по com-порту
Вопрос следующий. После того, как данные отправляются в порт, но к нему ничего не подключено, программа просто зависает. Как этого избежать? Пробовал использовать ClearCommError(), но наверное это не то.
У тебя в проге нет бесконечных циклов??? Попробуй в дебаггере глянуть в каком месте виснет и все
Вопрос следующий. После того, как данные отправляются в порт, но к нему ничего не подключено, программа просто зависает. Как этого избежать? Пробовал использовать ClearCommError(), но наверное это не то.
Вполне возможно что включился контроль передачи линиями квитирования, вот примерно так по DCB надо пройти чтобы его не было:
dcb=(DCB*)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,512);
dcb->DCBlength=sizeof(DCB);
BuildCommDCB("baud=4800 parity=N data=8 stop=1",dcb);
DWORD time_out_val=20;
dcb->fNull=FALSE;//0 БАЙТЫ НЕ ОТБРАСЫВАЮТСЯ ПРИ ПРИЕМЕ
dcb->fOutxCtsFlow=FALSE;//Передача не быдет приостанавливаться входами квитирования
dcb->fOutxDsrFlow=FALSE;
dcb->fTXContinueOnXoff=TRUE;//Передача не будет приостанавливаться наличием принятого символа
port=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
ct.ReadIntervalTimeout=0;
ct.ReadTotalTimeoutMultiplier=ct.ReadTotalTimeoutConstant=time_out_val;
ct.WriteTotalTimeoutMultiplier=ct.WriteTotalTimeoutConstant=time_out_val;
SetCommState(port,dcb);
SetCommTimeouts(port,&ct);
PurgeComm(port,PURGE_TXCLEAR|PURGE_RXCLEAR);
SetupComm(port,1024,1024);