![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Dias2004 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 24.1.2006 Где: Москва Репутация: нет Всего: нет |
Помогите новичку разобраться с поведением буфера COM-порта.
Налаживаю связь между ПК с WinXP и внешним интеллектуальным устройством (отечественный ПЛК Овен, если кому интересно). Устройство шлет 8-байтные посылки по таймеру, несколько раз в секунду, ПК их принимает. Программа приема имеет строку: ReadFile(hPort, vPLCStateReg,8,vByteCounter, nil); 8 байт исправно принимаются в буфер vPLCStateReg. ЗАДАЧА: определить выключение внешнего устройства или обрыв связи (по прекращению прихода посылок). Я ожидал, что у ПК после ReadFile() в буфере будет пусто, и тогда обрыв связи можно было бы легко определить по пустому буферу (отсутствию прихода стартовых байтов). Эксперимент показал, что состояние буфера не изменяется с момента прихода последней посылки, и каждый очередной ReadFile() получает одну и ту же "правильную" посылку, несмотря на фактическое прекращение работы внешнего устройства. Как можно сбросить буфер? Можно ли это сделать, задав параметры вызова ReadFile() ? |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
причем тут ReadFile?
ты работаешь с драйвером Com-порта, на сколько я понимаю. как hPort получаешь? через CreateFile? читай доки по работе с com-портом. -------------------- There are always someone smarter than you... |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
надо ещё анализировать количество полученных байт - если он 0, значит, ничего не пришло...
-------------------- qqq |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 6 Всего: 121 |
Почитай про IRP которые определены в системе для устройства с симсольной ссылкой \.\\COM, после чего уже посмотришь, нужные тебе должны быть.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |