имеется железка, которая раз в 20мс шлет пакетик длительностью 1.5-2.0мс (18 байт) по com-порту. собрал схему (код прилагается):
по таймеру раз в 50мс (точнее не нужно) опрашивается порт, читается 18 байт, скидывается в символьный массив, затем посимвольно передается на обработку (на схеме не показано). первые два символа должны быть с кодами 85, 252, если это не так - строка забраковывается.
проблема в том, что как не игрался с задержками и таймаутами процент ошибок довольно велик, 10-15% всех принятых строк начинаются не с ключевых символов. причем если просматривать строку целиком, то видно, что ловится конец одной посылки и начало второй. вопрос: можно как-то точнее синхронизировать сей процесс?
вторая ситуация, эта же железка в другом режиме посылает подряд 5 пакетов с разной длиной (13, 12, 12, 12, 15 байт), причем маркер начала есть только в первом пакете, а контрольная сумма только в последнем. из-за вышеописанной потери строки приходится долго ждать правильно принятых пакетов, ибо какая-нить одна строка возьмет и скосячится.
может есть более точный механизм чтения com-порта?
code_16508.txt
Ответов: 499
Рейтинг: 1
|
|||
карма: 0 |
| ||
файлы: 1 | code_16508.txt [2.2KB] [134] |