Вверх ↑
Ответов: 499
Рейтинг: 1
#1: 2010-01-15 05:09:00 ЛС | профиль | цитата
имеется железка, которая раз в 20мс шлет пакетик длительностью 1.5-2.0мс (18 байт) по com-порту. собрал схему (код прилагается):

по таймеру раз в 50мс (точнее не нужно) опрашивается порт, читается 18 байт, скидывается в символьный массив, затем посимвольно передается на обработку (на схеме не показано). первые два символа должны быть с кодами 85, 252, если это не так - строка забраковывается.

проблема в том, что как не игрался с задержками и таймаутами процент ошибок довольно велик, 10-15% всех принятых строк начинаются не с ключевых символов. причем если просматривать строку целиком, то видно, что ловится конец одной посылки и начало второй. вопрос: можно как-то точнее синхронизировать сей процесс?

вторая ситуация, эта же железка в другом режиме посылает подряд 5 пакетов с разной длиной (13, 12, 12, 12, 15 байт), причем маркер начала есть только в первом пакете, а контрольная сумма только в последнем. из-за вышеописанной потери строки приходится долго ждать правильно принятых пакетов, ибо какая-нить одна строка возьмет и скосячится.
может есть более точный механизм чтения com-порта?

code_16508.txt
карма: 0

0
файлы: 1code_16508.txt [2.2KB] [134]