Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
COM в виндах: считывание не в потоке а через какое то время [+]
Отправлено
MegaJohn (81.24.123.188) 01 мая 2010, г. 00:33
Вообщем, нужно отправить данные с компа, и прочитать то что пришло в порт через какую то задержку. Вообще, считывание из порта по методу потока, который все время опращивает порт на возможность считать байт все корректно работает.
Но нужно получить все сразу с задержкой и без потоков.
то есть типо ReadFile
НО, это считывание говорит что данные не пришли - просто 0.
как там правильно с инитить КОМ чтобы не чистил буфера долгое время ?
вроде стоит правлиьно, но чой та не помогает
COMMTIMEOUTS CommTimeouts;
CommTimeouts.ReadIntervalTimeout = 0;
CommTimeouts.ReadTotalTimeoutMultiplier = 0;
CommTimeouts.ReadTotalTimeoutConstant = 0;
Составить ответ | Вернуться на конференцию
Ответы
- может я чо не понимаю, но обмен такой на Дельфи обычно пишу - по таймеру опрашиваю, протокол как автомат пишу - послал - нескока тактов ответ подождал - обработал или по таймауту перешел... - basilmak (01.05.2010, 13:19:4 89.191.241.237, пустое)
- Ответ: - Xan (01.05.2010, 11:56:31 88.204.250.28, 557 байт)
- А для чего это надо? Ресурсы компа экономить? Я заводил чтение в отдельном потоке, создавал событие, которое будило поток при появлении байта в буфере, и загонял поток в сон. В результате поток хавал почти ничего. ЗЫ. Если у тебя FTDI, то могу выслать код. Но там кажется без выделения в поток. Не помню уже. - Звероящер (01.05.2010, 08:34:27 89.31.118.161, пустое)
- ладно, переделаю на потоковую реализацию. Тады исходнег будет более-менее совместим с AVR и x86, а вот ICP DAS в эту концепцию не попадает, придется под него писать свою реализацию - MegaJohn (01.05.2010, 01:09:5 78.111.83.75, пустое)
- во разьяснены эти таймауты - MegaJohn (01.05.2010, 01:04:59 78.111.83.75, пустое, ссылка)
- Если - Леонид Иванович (01.05.2010, 01:04:19 87.252.227.56, 410 байт)
- Просто не читать. Состояние буфера проверять периодически с помошью IOCTL запроса. - Гудвин (01.05.2010, 00:40:36 78.138.170.164, пустое)