Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос по com-порту

15K
17 марта 2006 года
9byte
5 / / 17.03.2006
Вопрос следующий. После того, как данные отправляются в порт, но к нему ничего не подключено, программа просто зависает. Как этого избежать? Пробовал использовать ClearCommError(), но наверное это не то.
520
04 мая 2006 года
inkognitum
155 / / 03.05.2006
Даже не знаю! Яиспользовал com порт и туда ничего небыло подключено, но ниче не висло! Да и не должно.
386
05 мая 2006 года
newcss
297 / / 05.04.2005
Цитата:
Originally posted by 9byte
Вопрос следующий. После того, как данные отправляются в порт, но к нему ничего не подключено, программа просто зависает. Как этого избежать? Пробовал использовать ClearCommError(), но наверное это не то.



У тебя в проге нет бесконечных циклов??? Попробуй в дебаггере глянуть в каком месте виснет и все

479
06 мая 2006 года
Ухух
142 / / 05.05.2006
Цитата:
Originally posted by 9byte
Вопрос следующий. После того, как данные отправляются в порт, но к нему ничего не подключено, программа просто зависает. Как этого избежать? Пробовал использовать 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);

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог