|
|
  |
затруднение с RS485 |
|
|
|
Oct 24 2007, 09:32
|
Гуру
     
Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493

|
Цитата если данные не идут в течении определенного времени в этот момент играющий на втором WinDVD запросил очередную порцию фильма с винта, винда этим занялась и тут Цитата - вываливаюсь по TIMEOUT-у А Modbus - да фик с ним, с Modbusom
|
|
|
|
|
Oct 24 2007, 10:41
|
Участник

Группа: Участник
Сообщений: 43
Регистрация: 4-04-07
Пользователь №: 26 760

|
Нет, перед приемом пакета устанавливаю время, в течение которого я жду данные, если это время истекает, а данных нет, генерируется исключение, т.е. данных никаких не пришло. Далее расцениваю это как "модуль не ответил" и реагирую в зависимости от ситуации. Ну и повторюсь, что пользую ModBus RTU-подобный протокол, заточенный под мои задачи. А то, что "винда не real time" - это точно
|
|
|
|
|
Oct 24 2007, 11:02
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(prm @ Oct 24 2007, 14:41)  Нет, перед приемом пакета устанавливаю время, в течение которого я жду данные, если это время истекает, а данных нет, генерируется исключение, т.е. данных никаких не пришло. Далее расцениваю это как "модуль не ответил" и реагирую в зависимости от ситуации. Ну и повторюсь, что пользую ModBus RTU-подобный протокол, заточенный под мои задачи. А то, что "винда не real time" - это точно  Так, уже интересно. Вариантов может быть 2 более-менее разных. 1. При приеме очередного символа, таймаут довзводится. При истечении таймаута анализируется пакет, указатель приемного буфера на начало. 2. При приеме очередного символа, подсчитывается CRC16. Если СКС16==0 обрабатывается пакет, указатель приемного буфера на начало. Таймер таймаута используется для еще одной установки указателя приемного буфера на начало. Что за вариант используется у Вас ?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|