Цитата(defunct @ Jul 30 2007, 23:15)

Ну не знаю как в PC (и надо ли оно вообще делать Modbus slave на PC).
Порой приходится делать...
Делал девайс, который работал под управлением процессорной платы ICOP (одноплатный 386-й)
Так вот задачей было сгородить на нем Слейв Модбаса для связи со СКАДой.
Плата работает под ДОС-ом, поэтому сказанное ниже некоторый оффтоп, но может кому пригодится идея...
Основной проблемой было отловить 3.5-кратный интервал тишины на линии...
Игра с таймером требуемого результата не принесла...
Внимательно изучив описание стандартного УАРТа заметил (

) очень "полезное" прерывание - по таймауту (4-х кратному интервалу передачи символа).
Ну а дальше - дело техники...
1) Настраиваем ФИФО например на 16 символов.
2) Если возникает прерывание заполнения ФИФО (не таймаут) - вычитываем 16 байт в буфер и продолжаем ожидать "доприема" пакета.
3) Если возникает прерывание по таймауту - вычитываем байты из ФИФО и считаем, что пакет принят, переходим к его анализу.
Естественно, это все не в основном цикле крутится - за все действия отвечают обработчики прерываний от СОМ-порта, выставляющие флаги, анализируемые основной программой.