Цитата(Alex ma @ Jul 29 2007, 20:34)

Вся фишка в проблеме определения стартовой последовательности, в Modbus – это пауза 3,5 кадра вроде....
Да, но на PC таймер под Windows только 1 мс дискретность.
Ну не знаю как в PC (и надо ли оно вообще делать Modbus slave на PC).
На МК я поступаю так:
Приняв любой байт по УАРТу взвожу таймер, на интервал равный 4-м кадрам. И продолжаю прием.
По прерыванию таймера - взвожу флажек "Таймаут". В этом же обработчике таймера, отцепляю буфер текущего пакета, и подставляю вместо него новый.
Цитата(bodja74 @ Jul 30 2007, 14:35)

Делать задержки на таймере не самое лучшее решение,используйте API функцию SLEEP из KERNEL32.
Типа так обьявляем
RTU-Мастер не обязан выдерживать точные паузы. Если скорость обмена некритична, то и таймером можно пользоваться, и Sleep'ом, чем угодно ;>
Самое плохое это то, что винда может втавлять непредсказуемые паузы внутри пакетов, что слейвом воспринимается однозначно - как куча битых пакетов.