Прием и обработка СМС от GPS трекера
После поступления СМС модуль приема СМС направляет ее на обработку парсеру. Задача парсера состоит в том, чтобы разделить входящую СМС на несколько отдельных значений. При приходе СМС она появляется в главном окне программы в виде:
[790477207XX]<CR><LF>
352848024311173@2011.09.02 11:19:06@48.715569@44.522743@85@2@5@N/A@7@0<CR><LF>
[790477207XX] – номер отправителя СМС
<CR><LF> - ASCII символы возврата каретки и перевода строки
Далее следует текст СМС.
<CR><LF> - ASCII символы возврата каретки и перевода строки завершают текст СМС.
Текст СМС имеет формат, который зависит от модели трекера. Для примера возьмем СМС, которая имеет вид:
<imei>@<time>@<fix_lat>@<fix_lon>@<fix_angle>@<fix_speed>@<fix_satellites>@<bat_status>@<alarm_on>@<alarm_off>
В данной СМС все значения в СМС разделены символом “@”.

Рис. 1. Пример входящих данных
В качестве парсера можно использовать парсер “ASCII Data Parser”, который входит в пакет установки. Необходимо активировать данный парсер на закладке “Запрос Анализ Фильтрация” (рис. 2).

Рис. 2. Выбор парсера
Далее нужно открыть окно настройки парсера (рис. 3) с помощью кнопки “Настроить”.

Рис. 3. Настройка парсера
Рвзбивать пакеты по признакам начала/конца – включено.
В поле “Признак конца пакета” указываем #0D#0A, что соответствует шестнадцатеричным кодам ASCII символов <CR> и <LF>.
При необходимости, можно настроить фильтр, который позволяет отсеивать ненужные СМС. В данном примере, мы отсеиваем строчку м номером отправителя СМС и обрабатываем только строчку с данными GPS (рис. 5).

Рис. 4. Настройка фильтра
В дерево переменных парсера нужно добавить описание всех значений, которые вы хотите извлечь из СМС. На рисунке 5 показано одно из значений.
- Имя переменной – данное имя будет использоваться далее в модулях фильтрации и экспорта данных. В имени можно использовать только буквы латинского алфавита.
- Тип обработки данных – данный параметр указывает парсеру как нужно извлекать значение из текста СМС. В данном примере все значения указаны через разделитель. Поэтому выбираем соответствующий тип обработки данных.
- Тип данных – задает тип данных извлекаемого значения. В данном примере IMEI это строка символов, что соответствует типу String. В зависимости от выбранного типа данных будет производиться последующая обработка: строки будут обрезаться, для даты и времени будет применяться маска форматирования.
- Целочисленные положительные значения могут быть типа Word
- Целочисленные значения со знаком – Integer
- Вещественные числа – Float
- Дата – Date
- Время – Time
- Дата и время – Datatime
- Значение по умолчанию – данное значение будет использоваться, когда извлекаемое значение отсутствует в СМС или его нельзя преобразовать к выбранному типу данных. Значение по умолчанию должно соответствовать выбранному типу данных. Например, для целых чисел нельзя указывать значение по умолчанию состоящее не из цифр.
- Разделитель полей – для выбранного ранее типа обработки данных необходимо указать разделитель значений. В данном примере это символ “@”.
- Номер по порядку – задается позиция значения в СМС. Нумерация позиции значений начинается с единицы.
Таким образом добавляем описание всех значений, которые нужно извлечь из СМС. Очередность следования значений в дереве не имеет значения.

Рис. 5. Переменные парсера
На закладке “Формат данных” (рис. 6), в поле “Дата и время” нужно задать формат даты и времени значения, которое извлекается из СМС. Используя этот формат строка даты и времени будет преобразовано в значение с типом Datetime. Если формат будет задан неверно, то вы програме будет выводиться сообщение об ошибке. Детальное описания символов, которые можно использовать в формате даты и времени, приведено в файле справки.

Рис. 6. Параметры форматирования
После настройки парсера его нужно проверить.
1. Для этого сохраните изменения, кликнув по кнопке “OK”.
2. Активируйте модуль экспорта данных DDE сервер (рис. 7)

Рис. 7. Модуль экспорта данных
3. Сохраните изменения, кликнув по кнопке “OK”.
4. Дождитесь прихода новой СМС и появления ее в главном окне программы.
5. Откройте окно настройки параметров и дважды кликните на модуле экспорта данных DDE сервер. В окне настройки DDE сервера перейдите к закладке “Активные переменные” (рис. 8). Данный список должен содержать настроенные переменные парсера и их значения. Здесь вы можете проверить правильность настройки парсера и при необходимости внести изменения в его параметры.

Рис. 8. Активные переменные
Сопутствующие статьи:
Установка
Настройка