bg

Модуль Парсер данных ASCII. Отправка запросов. для программ-логгеров

Последняя версия: 5.0.1 build 313. March 20, 2025.

Этот плагин добавляет возможности парсинга текстовых данных ASCII и отправки запросов для сбора данных. Он принимает данные из источника, извлекает переменные. При необходимости плагин может отправлять команды на устройство и опрашивать его. Используйте плагин для сбора измерений, регистрации событий или управления приборами. В модуле реализованы расширенные парсеры для фиксированного формата, данных с разделителями или извлечение данных, используя регулярные выражения. При необходимости поддерживается обработка бинарных и hex-фрагментов.

Скачать  | PDF руководство

Ключевые возможности

  1. Отправка ASCII-запросов устройству, включая hex-байты в формате #XX (например, "#02INIT#03"). Задание времени отправки: один раз при старте, по расписанию (опрашивать через интервал) или в указанное время (например, "08:00:00").
  2. Ожидание ответа устройства с настраиваемыми таймаутами.
  3. Разделение входного потока на пакеты по маркерам начала/конца или по таймауту.
  4. Извлечение переменных по фиксированной позиции, по порядку или через регулярные выражения. Можно задать значения по умолчанию или создавать пустые переменные.
  5. Замена или удаление нежелательных символов до анализа (например, удаление непечатных или управляющих символов).
  6. Фильтрация пакетов - игнорирование или обработка только нужных сообщений по текстовому совпадению.
  7. Добавление метки времени и идентификатора источника к каждому разобранному пакету.

Типовые примеры

Пример 1 - запись фиксированной ширины:

223       741  09127 15:53:30 00:05:28 O **********************************
  • Установите тип парсинга "Фиксированная позиция".
  • Определите переменные: абонент (символы 1-3), вызываемый номер (колонки 11-13), время (колонки 26-33) и длительность (колонки 34-41).
  • Укажите типы данных для времени и чисел, чтобы корректно экспортировать значения.

Пример 2 - данные с разделителем:

TEMP,25.4,2025-01-02 08:00:00
  • Используйте запятую как разделитель.
  • Разбейте поля на переменные: тип, значение, метка времени.
  • При необходимости преобразуйте формат метки времени.

Пример 3 - данные от сканера штрих-кодов

Настройка: Сканер штрих-кодов передает отсканированные коды через COM порт. Вы можете использовать Advanced Serial Data Logger (ASDL) для сбора, отображения и экспорта данных.

Пример входящих данных (каждое сканирование приходит в новой строке):

BC1234567890
Рекомендуемая конфигурация:
  • Разделение пакетов: используйте символы конца строки в качестве разделителей пакета данных (например, #0D#0A) или включите разделение по таймауту, если разделители не заданы.
  • Тип парсинга: "Фиксированная позиция" - парсер должен извлекать штрих-код, начиная с колонки 1 и интерпретировать его как строку.
  • Фильтрация: добавьте правило игнорирования пустых сканов или обработки только кодов, соответствующих шаблону вида ^BC\d{10}$.
  • Запросы: если сканер поддерживает опрос, создайте строку запроса, которую ASDL будет отправлять каждые 5 секунд, чтобы инициировать чтение. Настройте таймаут ожидания ответа перед следующей отправкой.

Пример сочетания опроса и парсинга:

  • ASDL отправляет строку опроса "#02READ#03" каждые 5 секунд.
  • Сканер возвращает: BC1234567890#0D#0A
  • Парсер разбивает пакет по #0D#0A, перечисляет поля, проверяет шаблон штрих-кода, при необходимости добавляет DATE_TIME_STAMP и передает данные в последующие фильтры и модули экспорта.

Практические советы

  1. Если признаки пакета данных содержат непечатные символы, задавайте их в конфигурации как #XX (например, #0D#0A).
  2. Чтобы задать признак начала пакета, когда начало меняются (например, метка времени), используйте небольшое регулярное выражение, например \d{4}\-\d{2}\-\d{2} для совпадения с "2025-01-02".
  3. Используйте функцию замены символов, чтобы удалить специальные байты до парсинга.
  4. Контролируйте длину пакета, если устройство всегда отсылает пакеты фиксированной длины, чтобы игнорировать поврежденные пакеты.
  5. Если нужно, то создавайте правила игнорирования пакетов, чтобы предотвратить экспорт ненужных данных.