Леонид писал(а):
Полагаю, что надо читать порт в соответствии с установленной скоростьюИ вот объясни -- на кой хрен это делать, если данные идут не непрерывным потоком, а, скорее всего, так оно и есть
На мой взгляд делается все проще -- постоянно читаем 13 байт, если не соответстуют нашей команде, чистим буфер и читаем дальше, если команда совпала, дочитываем остаток в 7 байт, можно не меня установку в 13 байт, все рано прочитает, но с небольшой задержкой.
Можно и 20 байт читать постоянно, будут маленькие задержки у порта на чтение, но это несущественно, тогда еще проще -- считал строку обрезал по 13 байтам, проверил на соответствие команде, совпала -- отправил остаток на обработку, не совпала -- оставил все "как есть" до следующей порции данных, следующая обработка все запишет поверх предыдущих.
Точно по такому же принципу у меня работает система уже четвертый год -- ловятся данные и затем уже парсятся и проверяются на соответствие, и, причем, не один канал, а несколько.