счетчик я обсуждать не буду
счетчик я обсуждать не буду
1.Отправили, взвели таймер
2.Читаем.Что-то есть - перевзводим таймер. время вышло - выходим на проверку данных
PS
А счетчик есть и в modbus.lib
И я про тот, другой, протокол спрашивал
Паузы - в сад
шнайдеровский счетчик в сад. Здесь я его обсуждать не хочу. Не та тема.
Пойми из буфера порта читаю небольшими порциями. Да можно при чтении запросить макс. возможное для данного протокола количество байт из буфера. И проблема пропадет. НО почему теряются байты при чтении ответа из буфера частями. На ПЛК100 работает на ПЛК63 - глючит. А на еще каком-нибуть ПЛКxxx, будет другой глюк.
Меня не интересует, как можно сделать по другому. Я знаю как сделать. Меня интересует имено ентот глюк.
Вы попробуйте, если не влом конечно, и есть возможность заменить
Size := DWORD_TO_WORD(SysComRead(ComHandle, ADR(rBuf), SIZEOF(rBuf), 0));
на
Size := DWORD_TO_WORD(SysComRead(ComHandle, ADR(rBuf), SIZEOF(rBuf), 0));
if ( size > 0 ) then
size := size + DWORD_TO_WORD(SysComRead(ComHandle, ADR(rBuf[ 1 ]), SIZEOF(rBuf) - 1, 0));
end_if
когда читаете - знаете сколько прочитали. Ну за каким читать меньше или больше ?
PS
Все. Спокойной ночи.
Допустим в буфере появился "мусор" ( каким образом, даже думать не хочу ). Читаем 100 байт, первые 10 "мусор", а дальше идет верный ответ от устройства. Т.е. надо дочитать ответ. Читаем недостающие байты. И тут облом. Теряются байты.
Вот зачем
в место единицы видимо Size должны были написать