QSerialPort, Обработка пакетов |
Здравствуйте, гость ( Вход | Регистрация )
QSerialPort, Обработка пакетов |
leonneon_89 |
2.7.2015, 13:10
Сообщение
#1
|
Студент Группа: Участник Сообщений: 20 Регистрация: 5.4.2013 Пользователь №: 3779 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всем привет! Возникла небольшая сложность в получении данных по RS-485. Использую библиотеку QtSerialPort.
Есть протокол в котором взаимодействуют компьютер с неким устройством по сети RS-485. Размер запросных сообщений от устройства 16 байт. Первые два байта описывают тип сообщения. Размер ответных сообщений от компьютера различный, как и в запросном сообщении первые два байта описывают тип сообщения. Вот примерный класс для обработки полученных сообщений.
Когда я напрямую передаю сообщения (тестовое соединение в компьютере из одного порта в другой) все вроде нормально работает. А когда работаю с реальным устройством т.е. компьютер принимает запросные сообщения от устройства(messageLength == 16 байтов) и посылает на этот запрос ответные сообщения запрашиваемому устройству, тогда порой возникают ошибки. В этой сети иногда проскальзывают ненужные байты, и тогда принятое сообщение в 16 байт уже имеет другие данные, в следствие чего не могу нормально обработать поступивший запрос и отослать ответное сообщение. Вопрос, как мне правильно считывать поступающие данные, если в сети иногда возникают другие байты данных. Заранее спасибо. |
|
|
lanz |
7.7.2015, 16:33
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Цитата А вот еще один вопрос, что если мне приходящие куски пакетов анализировать и искать в них два байта, которые отвечают за тип сообщения, если два байта найдены, считывать оставшуюся часть пакета, В принципе нормальный подход, главное не перепутать эти два байта с двумя байтами данных, которые выглядят так же. |
|
|
Текстовая версия | Сейчас: 20.4.2024, 10:05 |