Russian Qt Forum
Ноябрь 27, 2024, 05:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Разбор последовательность байт  (Прочитано 3199 раз)
vorotislav
Гость
« : Январь 19, 2015, 20:27 »

Доброго времени суток.
Есть последовательность байт.
Выглядит примерно так:
02 01 08 00 00 01
Это самый минимальный пакет, который может придти для разбора.
Содержит он в себе следующую информацию:
02 - номер группы объекта
01 - адрес объекта
08 - идентификатор пакета
00 - команда на чтение
00 - с нулевого байта
01 - считать один байт
Вопрос. Как организовать парсинг пакета?
Первая мысль - Идти побайтно
Код:
for (int i = 0; i < arr.size(); i++) { // QByteArray arr;
    switch (arr.at(i)) {
    case 02: {
    //
    }

И вот что дальше делать? Ну хорошо, скажем, запишу я в переменную номер группы, ну и так далее. Каждый байт в свою переменную, скажем int group, address, id, comand, number, count;
А потом дальше строить функцию, который по новой будет обрабатывать эти значения, опять же через свитч?
В общем, мозг мой совсем дальше отказывается соображать. ПРошу вашей помощи.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Январь 19, 2015, 20:34 »

Почитайте про машины состояний, они же конечные автоматы.
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #2 : Январь 19, 2015, 22:40 »

vorotislav, тебе надо определиться с протоколом передачи данных, как одна правильная последовательность байт будет отделятся от другой. Это может быть или специальный символ, либо по времени. Потому как если байтики будут просто сыпатся из порта ты никак не сможеш определить где начало данных. А дальше да, свитч.
Записан
Bepec
Гость
« Ответ #3 : Январь 19, 2015, 22:53 »

Свичи, состояния (те же свичи вид сбоку), фабрики (опять таки свич только более накрученный) и ещё раз свичи Веселый
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #4 : Январь 20, 2015, 08:08 »

Для удобства восприятия предлагаю использовать перечисления вместо явных чисел.
Записан
vorotislav
Гость
« Ответ #5 : Январь 20, 2015, 08:21 »

Спасибо всем! Начал делать разбор, да, использую перечисления. И вроде как пока получается, через свичи, в которых еще свичи. Еще раз всем спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.057 секунд. Запросов: 23.