1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/One2INF-ProtocolParser

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 11:26 d500d94

Протокол-парсер

Хороший инструмент должен позволять пользователю настраивать его по своему усмотрению.

Версия — QT5.15.2-MinGW64.

Интерфейс

Изображение интерфейса.

Использование

  1. Нажмите «Add», чтобы добавить файл конфигурации протокола, в противном случае будет использоваться файл конфигурации по умолчанию («for self-used»). Список в верхней части экрана покажет загруженные файлы конфигурации.
  2. Нажмите «Delete», чтобы удалить ненужные файлы конфигурации.
  3. Введите протокол для анализа в текстовое поле и нажмите Enter или «Do» для запуска анализа.
  4. В разделе «model» будут отображаться результаты анализа. Если анализ не удался, появится сообщение об ошибке.

Изображение проверки JSON.

Проверка формата JSON перед добавлением протокола:

  1. Выберите «File» -> «Check JSON», чтобы проверить правильность формата. Если формат правильный, он будет представлен в виде дерева. Примечание: проверка ограничивается соответствием формату JSON, определённому в QT, и могут возникать проблемы совместимости (например, наличие лишних запятых после последнего объекта).

Изображение дерева JSON.

Базовое использование

Формат протокола:

Заголовок сообщения Длина Область данных
7 2 8
HEADER1 08 12345678

Соответствующий файл конфигурации:

{
  "HEADER_LENGTH" : 7,

  "HEADER1" :
  {
    ".SECTION":
    [
      ["HEADER1", "Заголовок сообщения", 7],
      ["LENGTH", "Длина", 2],
      ["DATA", "Область данных", 8]
    ]
  }
}
  • HEADER_LENGTH: длина заголовка сообщения.
  • .SECTION: описание полей протокола, следуя порядку [имя поля, описание, длина поля].

Пример теста протокола: — HEADER10212345678.

Расширенное использование Если протокол имеет один и тот же заголовок сообщения, но разные функциональные коды для более детальной информации о функциях:

Функциональный код = 01, длина данных = 8:

Заголовок сообщения Функциональный код Область данных
7 2 8
HEADER1 01 12345678

Функциональный код = 02, длина данных = 4:

Заголовок сообщения Функциональный код Область данных
7 2 4
HEADER1 02 1234

Соответствующий файл конфигурации:

{
  "HEADER_LENGTH" : 7,

  "HEADER1" :
  {
    ".SECTION" :
    [
      ["HEADER1", "Заголовок сообщения", 7],
      ["CODE", "Функциональный код", 2],
      ["DATA", "Область данных", "CODE"]
    ],

    ".REALATION":
    {
      "DATA": {"01":8, "02":4}
    }
  }
}
  • Длина поля «данные» зависит от значения поля «функциональный код».
  • В столбце «длина поля» указано значение, зависящее от имени поля.
  • В .REALATION: неопределённое имя поля: {значение, зависящее от поля: значение}.

Примеры тестов протокола: — HEADER10112345678; — HEADER1021234.

Продвинутое использование Можно разделить на несколько файлов конфигурации и добавить их в список конфигураций, чтобы избежать создания слишком больших файлов. При наличии достаточного количества файлов конфигурации можно анализировать любые сообщения.

Добавление примечаний (.NOTE):

Для некоторых полей определённые значения имеют особое значение, поэтому мы можем добавить примечания для пояснения. Пример добавления примечаний показан ниже.

{
  "HEADER_LENGTH" : 4,

  "AA19" :
  {
    ".SECTION":
    [
      ["HEAD", "Заголовок сообщения", 4],
      ["MACHINECODE", "Код машины", 13],
      ["M_SEQ", "Последовательность машины", 8],
      ["TIME", "Время", 14],
      ["COMM", "Команда", 4],
      ["USE_STATUS", "Статус использования пользователем", 2],
      ["DEV_STATUS", "Состояние устройства", 2],
      ["DOOR_STATUS", "Состояние двери", 2],
      ["SIM_SIGNAL", "Интенсивность сигнала", 2],
      ["RUN_TIME", "Время работы (часы)", 5],
      ["LOST_CONNECTTIME", "Время без соединения (минуты)", 3],
      ["LOCAL_DATA_NUM", "Количество локальных данных", 3],
      ["FOOTER", "Конец сообщения", 4]
    ],

    ".NOTE":
    {
      "USE_STATUS":{"00":"Свободно", "01":"Приложение используется", "02":"Засыпка", "03":"В процессе"},
      "DEV_STATUS":{"00":"Нормальное", "01":"Неисправность двигателя"},
      "DOOR_STATUS":{"00":"Дверь закрыта", "01":"Дверь открыта"}
    }
  }
}

Изображение функции примечаний.

Примечания

Программа не обеспечивает строгую обработку безопасности данных.

Задачи

— Добавить примечания к особым числовым значениям полей (выполнено). — Реализовать сетевые функции, включая сетевую версию POST-MAN.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/One2INF-ProtocolParser.git
git@api.gitlife.ru:oschina-mirror/One2INF-ProtocolParser.git
oschina-mirror
One2INF-ProtocolParser
One2INF-ProtocolParser
master