bg

Парсинг данных сканера штрих кодов

Задача:

Мы получаем штрих-код (EAN-13) из последовательного порта. Мы подключили несколько сканеров, каждый отсылает данные, когда считывает код. Данные содержат: идентификационный номер (первый символ) сам штрих-код (тринадцать чисел). Когда логгер получает данные из порта, он добавляет метку даты и времени. В лог-файле эта информация регистрируется без проблем, но нам необходимо формировать другой ASCII файл с другой структурой в формате CSV.

Данные сканера штрих-кодов полученные логгером данных
Рис.1. Данные сканера штрих-кодов полученные логгером данных

Требования:

  • Advanced Serial Data Logger Professional, Enterprise, или пробная версия;
  • ASCII data parser and query, DDE server, Local database

Подразумевается что:

Вы настроили параметры связи с устройством (скорость, количество бит данных, контроль передачи и т.п.) в логгере и можете принимать данные без каких либо ошибок.

Решение:

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

Настройка вида данных
Рис.2. Настройка вида данных

Затем кликните по кнопке "OK" и попробуйте принять данных из порта. Вы должны получить данные, как на рисунке ниже.

Логгер данных сканера штрих-кодов. Принятые данные.
Рис.3. Логгер данных сканера штрих-кодов. Принятые данные.

Это другой вид принятых данных. Все непечатные символы были заменены на их код вида #0D. Теперь очевидно, что пакет данных (в зеленом прямоугольнике) заканчивается на #0D (подчеркнуто красным).

Теперь мы готовы к настройке модулей. Сначала, пожалуйста, выберите модуль "ASCII data parser and query" (рис.4a, поз.1) из выпадающего списка. Затем, включите анализ и экспорт для принимаемых данных (рис. 4a, поз. 2). Модуль "DDE server" (рис.4b, поз.3) поможет нам проверить, что парсер правильно разбирает пакет данных. Модуль "Local database" будет экспортировать данные в ASCII файл, имеющий формат CSV.

Логгер данных сканера штрих-кодов. Модуль парсера.
Рис.4a. Логгер данных сканера штрих-кодов. Модуль парсера.

Логгер данных сканера штрих-кодов. Модули экспорта данных.
Рис.4b. Логгер данных сканера штрих-кодов. Модули экспорта данных.

Сейчас, пожалуйста, откройте окно настройки модуля "ASCII parser and query" (кликните на кнопке "Настроить" рядом с выпадающим списком рис.4а, поз.1). Окно настройки появится на экране (рис.5).

Логгер данных сканера штрих-кодов. Окно настройки парсера.
Рис.5. Логгер данных сканера штрих-кодов. Окно настройки парсера.

Процесс настройки должен быть простым, если предварительно был выяснен формат данных в главном окне логгера данных (рис.3). Вы должны ввести данные в том же виде, что и в главном окне программы в полях 1 и 2. Поле №1 задает начало блока данных, а поле №2 задает его окончание. В этом примере блок данных не содержит признака начала блока данных, поэтому поле №1 нужно оставить пустым. Вы должны ввести значения с рис. 3, подчеркнутые зеленым.

Следующая закладка является очень важной частью конфигурации (рис.6). Парсер использует эти данные для того, чтобы выделить переменные из пакета данных. Наш пакет данных содержит 2 элемента, которые должны быть помещены в различные переменные. Далее эти переменные будут использоваться в модулях фильтрации и экспорта данных. В нашем примере значения этих переменных будут записываться в разные колонки результирующего CSV файла.

Логгер данных сканера штрих-кодов. Переменные парсера.
Рис.6. Логгер данных сканера штрих-кодов. Переменные парсера.

Необходимо добавить две переменные, кликнув по кнопке "Добавить" (рис.6, поз.7). Перед добавлением переменной программа попросит ввести описание переменной. Вы можете ввести любое описание, которое поможет вам запомнить содержимое этой переменной. Мы добавили все переменные с соответствующими описаниями на рис.6

Каждая переменная парсера имеет несколько свойств:

  1. Имя переменной - это имя будет связано с колонкой в модуле экспорта данных. Это имя должно состоять только из латинских букв и цифр;
  2. Тип обработки данных - это метод, который программа будет использовать для выделения данных из пакета данных. Парсер поддерживает несколько методов от наиболее простого, до самого универсального и мощного. В нашем случае, когда все данные располагаются в фиксированной позиции, мы можем использовать простой метод "Фиксированная позиция". Этот метод позволяет получить любое количество символов, начиная с любой позиции в пакете данных;
  3. Тип данных - тип данных переменной. Если вы укажите тип данных, отличный от типа данных "STRING", то модуль будет пробовать конвертировать строку в указанный тип данных. Модуль позволяет определить некоторые опции, которые будут использоваться для преобразования (см. закладку "Формат данных");
  4. Значение по умолчанию - это значение будет использоваться, когда данные не могут быть извлечены из указанной позиции и преобразованы в указанный тип данных;
  5. Фиксированная позиция - это позиция в пакете данных первого символа того значения, которое нужно извлечь и поместить в переменную. Минимальное значение равно 1;
  6. Фиксированная длина - это количество символов (включая все непечатные символы) которые необходимо извлечь и поместить в переменную. Минимальное значение равно 1.

Обе переменные имеют идентичные параметры, за исключением позиции и длины значения.

На следующей закладке (рис.7) вы можете определить основные опции форматирования и преобразования значений. Поскольку мы выбрали тип данных "String" для обеих переменных, поэтому первые две опции позволяют удалять пробелы в начале и конце значения. Другие опции не нужны в нашем случае, поскольку у нас нет переменных с другими типами данных.

Логгер данных сканера штрих-кодов. Опции форматирования.
Рис.7. Логгер данных сканера штрих-кодов. Опции форматирования.

Пожалуйста, кликните на кнопке "OK" в окне настройки парсера и затем на кнопке "OK" в окне настройки конфигурации.

Теперь наш парсер настроен и пришло время проверить его. Подсоедините ваше устройство или включите его, если это необходимо. Попробуйте принять пакет данных от устройства. Если парсер настроен верно, то в окне DDE сервера будут отображены наши переменные и их значения (рис.8).

Логгер данных сканера штрих-кодов. Окно DDE сервера.
Рис.8. Логгер данных сканера штрих-кодов. Окно DDE сервера.

Как записать данные в лог-файл нужного формата, описано во второй части.

Сопутствующие статьи: Парсинг данных сканера штрих кодов