У меня такая задача.
Есть устройство, которое с определенной периодичностью - примерно раз в 0,5 сек. шлет данные в COM-порт.
Я хочу считывать эти данные в ПЛК100 через один COM-порт, обрабатывать и пересылать обработанные данные через другой COM-порт.
Есть загвоздка, связанная с тем, что размер посылки заранее неизвестен.
Длина посылки может варьироваться в диапазоне от 4 до 22 байт.
Формат сообщения известен.
Написал программу на основе первого примера отсюда:
http://www.owen.ru/forum/showthread.php?t=13585
Проблема в том, что функции из библиотеки требуют указания фиксированного размера в байтах для чтения/записи.
Если сделать размер буфера чтения больше, чем размер посылки: например, 25 байт,
то в конце получается мусор, который переносится в новые строки.
Причем не получается очистить буфер, присвоив переменной пустую строку.
Если сделать буфер меньше и потом склеивать строки (как в примере PR2.pro), то я не могу получить нормальную строку,
т. к. запись в буфер может начаться с середины посылки и я получу вместо данных мусор.
В обоих вариантах можно, конечно, отбрасывать неправильные строки, но тогда часть посылок будет теряться, что нежелательно.
Посоветуйте, пожалуйста, как решить эту задачу.
Либо дайте, пожалуйста, какой-то пример, в котором контроллер просто слушает порт,
а затем обрабатывает полученные посылки.


Ответить с цитированием
