bg

Обработка данных от лабораторного оборудования

Сценарий проблемы:

Я хочу подсоединить порт RS-232 в MS Excel. Порт будет выдавать поток данных ASCII. Я хочу, чтобы Excel автоматически получал и отображал данные ASCII, как подобие осциллографа. Если необходимо, то я могу изменить формат исходных данных.

Данные из COM порта и Excel. Исходные данные
Рис.1. Данные из COM порта и Excel. Исходные данные

Требования:

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

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

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

Вы можете работать в Microsoft Excel, в частности создавать и использовать формы.

Решение:

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

Данные из COM порта и Excel. Настройка вида данных.
Рис.2. Данные из COM порта и Excel. Настройка вида данных.

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

Данные из COM порта и Excel. Принятые данные.
Рис.3. Данные из COM порта и Excel. Принятые данные.

Это другой вид исходных данных. Заметьте, что все непечатные символы были заменены на их код вида #0D. Это более наглядная форма представления данных и из нее видно, что пакет данных (в зеленом прямоугольнике) начинается с TLFLOW и заканчивается тремя парами символов CR+LF (#0D#0A#0D#0A#0D#0A) (подчеркнуто красным).

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

Данные из COM порта и Excel. Активация парсера.
Рис.4a. Данные из COM порта и Excel. Активация парсера.

Данные из COM порта и Excel. Выбор модулей экспорта.
Рис.4b. Данные из COM порта и Excel. Выбор модулей экспорта.

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

Данные из COM порта и Excel. Настройка парсера.
Рис.5. Данные из COM порта и Excel. Настройка парсера.

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

Следующая закладка является очень важной частью конфигурации (рис.6). Парсер использует эти данные для того, чтобы выделить переменные из пакета данных. Наш пакет данных содержит 28 элементов (рис.1) с именами вида DDATE, DTIME, TLFLOW, TLVOLM, которые должны быть помещены в различные переменные. Далее эти переменные будут использоваться в модулях фильтрации и экспорта данных. В нашем примере значения этих переменных будут записываться в разные колонки результирующего XLS файла. Файл настроек со всеми переменными лежит здесь, и вы можете загрузить его для ознакомления на странице "Парсинг" (рис.6 поз.#8).

Данные из COM порта и Excel. Переменные парсера.
Рис.6. Данные из COM порта и Excel. Переменные парсера.

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

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

  1. Имя переменной - это имя будет связано с колонкой в модуле экспорта данных. Это имя должно состоять только из латинских букв и цифр;
  2. Тип обработки данных - это метод, который программа будет использовать для выделения данных из пакета данных. Парсер поддерживает несколько методов, от наиболее простого способа, до самого универсального и мощного. В нашем случае, когда все данные располагаются в случайной позиции, мы должны использовать наиболее универсальный метод "Регулярные выражения". Этот метод позволяет получить любое количество символов, соответствующих указанной маске (регулярному выражению);
  3. Тип данных - тип данных переменной. Если вы укажите тип данных, отличный от типа данных "STRING", то модуль будет пробовать конвертировать строку в указанный тип данных. В нашем примере будут использоваться типы данных FLOAT, DATE, TIME и STRING. Модуль позволяет определить некоторые опции, которые будут использоваться для преобразования (см. закладку "Формат данных");
  4. Значение по умолчанию - это значение будет использоваться, когда данные не могут быть извлечены из указанной позиции и преобразованы в указанный тип данных;
  5. Регулярное выражение - это маска для поиска текста в пакете данных. В этом примере нам необходимо выделить текст, который идет после символов имени переменной, после двоеточия. Поэтому мы должны указать следующее регулярное выражение: TLVOLM: ([\-\d\.]+). Здесь \d+ означает одно или несколько чисел. Выражение в скобках должно содержать маску, соответствующую значению, которое мы должны извлечь. Более детальное описание синтаксиса регулярных выражений можно посмотреть в файле справки или поискать в Интернете по ключевым словам "perl regex";
  6. Номер вхождения - здесь указывается номер совпадения в пакете данных. Если в пакете данных указанной маске соответствуют несколько значений, то здесь указывается порядковый номер этого значения. Минимальное значение равно 1.

Все переменные имеют идентичные параметры, за исключением номера вхождения.

На следующей закладке (рис.7) вы можете определить основные опции форматирования и преобразования значений. В этом примере у нас есть переменные с типами "date" и "time". Поэтому первая опция позволяет определить маску, по которой строковое значение даты будет преобразовано в переменную с типом данных "date". Мы указали MM"."DD"."YY и HH"."NN"."SS здесь, в соответствии с требованиями описанными выше. Для более подробного описания символов, которые могут использоваться в маске, пожалуйста, обратитесь к файлу справки. Вторая опция служит для преобразования строковых значений в тип данных "time".

Данные из COM порта и Excel. Форматирование переменных.
Рис.7. Данные из COM порта и Excel. Форматирование переменных.

Другие опции не нужно настраивать, поскольку у нас нет переменных с типом данных "datetime" или "string".

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

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

Данные из COM порта и Excel. Окно DDE сервера.
Рис.8. Данные из COM порта и Excel. Окно DDE сервера.

Теперь все переменные парсера готовы для экспорта в Excel с помощью модуля "Direct Excel Connection". Как это сделать, описано во второй части.

Сопутствующие статьи: Обработка данных от лабораторного оборудования