Отправка SMS на русском языке с помощью GSM-модулей Neoway

№ 4’2014
PDF версия
В охранных, мониторинговых, развлекательных и других M2M-приложениях часто требуется обеспечить отправку информационных SMS-сообщений на телефоны пользователей. При этом в пределах Российской Федерации предпочтение, безусловно, отдается системам, обеспечивающим отправку сообщений на русском языке и кириллическими символами. В данной статье рассматривается вопрос отправки кириллических SMS-сообщений при использовании GSM-модулей Neoway.

Выбор GSM-модулей Neoway в качестве модема обусловлен несколькими причинами: высоким качеством при низкой стоимости модулей и максимальным удобством монтажа, которое обеспечивается небольшим количеством выводов и корпусом LCC. Производитель Neoway Technology зарекомендовал себя на российском рынке как надежный поставщик и ответственный партнер. Официальным дистрибьютором компании Neoway в России является компания «ЭФО».

GSM-модули Neoway предусматривают два режима отправки SMS-сообщений: текстовый и PDU (Packet Data Unit). В текстовом режиме возможна отправка сообщений, содержащих только латинские буквы, цифры и символы. Для отправки SMS с кириллическими символами необходимо использовать режим PDU.

Переключение режимов передачи SMS осуществляется командой AT+CMGF:

AT+CMGF=0 — включение режима PDU;

AT+CMGF=1 — включение текстового режима.

В режиме PDU SMS представляет собой набор данных, передаваемых модулю в виде символов ASCII.

Рассмотрим формат посылаемого SMS-сообщения и последовательность команд, подаваемых на GSM-модуль. Для примера сформируем пакет PDU SMS-сообщения, отправляемого на номер +70123456789 и содержащего слово «Привет!».

 

Формат передаваемого SMS-сообщения в режиме PDU

Формат передаваемого SMS представлен на рис. 1.

Формат передаваемого SMS-сообщения в режиме PDU

Рис. 1. Формат передаваемого SMS-сообщения в режиме PDU

Краткое описание полей передаваемого SMS приведено в таблице 1.

Таблица 1. Описание полей пакета PDU передаваемого SMS

Название поля PDU

Длина, байт

Краткое описание

SCA — Service Center Address

1–12

Номер телефона Центра SMS (может не указываться)

PDU Type

1

Тип PDU

MR — Message Reference

1

Порядковый номер сообщения, устанавливаемый самим модулем

DA — Destination Address

2–12

Номер телефона получателя сообщения

PID — Protocol Identifier

1

Идентификатор протокола

DCS — Data Coding Scheme

1

Кодировка сообщения

VP — Validity Period

0,1 или 7

Время жизни SMS

UDL — User Data Length

1

Длина поля User Data в байтах

UD — User Data

0–140

Сообщение

Рассмотрим назначение отдельных полей пакета PDU передаваемого сообщения.

  • SCA (Service Center Address) — номертелефонаЦентраSMS (SMSC).

Данное поле не является обязательным, так как номер SMSC хранится на SIM-карте и считывается GSM-модулями Neoway автоматически. Воспользуемся данной возможностью и не будем указывать номер Центра SMS в нашем примере, тем более что в этом случае содержимое PDU не зависит от используемой SIM-карты. Если номер SMSC в PDU не указывается, поле SCA принимает значение 00h.

Если потребуется считать номер Центра SMS из GSM-модуля, это можно сделать с помощью команды AT+CSCA?

  • PDU Type — тип PDU.

–          RP (Reply Path):

         0 — путь для ответа не определен;

         1 — путь для ответа определен, используется тот же Центр SMS (SMSC).

–          UDHI (User Data Header Included):

            0 — поле UD содержит только само сообщение;

            1 — поле UD содержит сообщение и дополнительный заголовок.

–          SRR (Status Report Request):

            0 — статус сообщения не запрашивается;

            1 — статус сообщения запрашивается.

–          VPF (Validity Period Format):

            00 — поле VP отсутствует;

            01 — зарезервировано;

            10 — поле VP содержит временные данные в относительном формате;

            11 — поле VP содержит временные данные в абсолютном формате.

–          RD (Reject Duplicates):

            0 — SMSC следует переслать сообщение получателю в случае, если оно имеет те же значения полей MR и DA, что и предыдущее сообщение;

            1 — SMSC следует отклонить сообщение в случае, если оно имеет те же значения полей MR и DA, что и предыдущее сообщение.

–          MTI (Message Type Indicator):

            00 — принимаемое сообщение (от SMSC к модулю) или подтверждение приема
(от модуля к SMSC);

            01 — отправляемое сообщение (от модуля к SMSC) или подтверждение отправки (от SMSC к модулю);

            10 — отчет о доставке (от SMSC к модулю) или SMS-команда (от модуля к SMSC);

            11 — зарезервировано.

На рис. 2 представлены биты поля PDU Type в случае отправляемого SMS.

Поле PDU Type

Рис. 2. Поле PDU Type

Для упрощения нашего примера условимся не использовать поле VP (время жизни SMS) и установим биты VPF в нулевое значение. Также в нулевое значение установим биты RP, UDHI, SRR, RD. Биты MTI отправляемого сообщения необходимо установить в значение 01. Таким образом значение байта поля PDU Type принимаем равным 01h.

  • MR (Message Reference) — порядковый номер сообщения, определяется самим модулем. В PDU значение поля устанавливается равным 00h.
  • DA (Destination Address) — номер телефона получателя сообщения.

Поле DA состоит из трех частей, представленных в таблице 2.

Таблица 2. Поле DA пакета UDP

Количество цифр в номере получателя

Тип номера получателя

Номер получателя

1 байт

1 байт

0–6 байт

–          Количество цифр в номере получателя подсчитывается без учета знака «+» и представляется в шестнадцатеричном формате. Например, для номера +70123456789 значение байта «Количество цифр в номере получателя» равняется 0Bh (11 в десятичной системе счисления).

–          Тип номера получателя.

В случае международного формата номера байт «Тип номера получателя» устанавливается равным 91h, в случае местного формата — 81h.

–          Номер получателя.

Поле «Номер получателя» формируется следующим образом: а) в случае международного формата номера знак «+» отбрасывается; б) если количество цифр в номере нечетное, в конце добавляется «F»; в) цифры номера попарно переставляются местами.

Например, для номера +70123456789 поле «Номер получателя» будет иметь вид: 0721436587F9h, а целиком поле DA — 0B910721436587F9h.

  • PID (Protocol Identifier) — идентификатор протокола.

В нашем случае значение поля PID необходимо устанавливать в значение 00h. Подробнее об особенностях данного поля можно прочитать в ETSI GSM 03.40, пункт 9.2.3.9.

  • DCS (Data Coding Scheme) — кодировка сообщения.

Для отправки сообщений кириллическими символами необходимо использовать кодировку UCS2. Поэтому значение поля DCS в нашем случае следует установить равным 08h (обычное SMS) или 18h (flash-SMS, которое сразу выводится на экран телефона вместо сохранения в памяти).

  • VP (Validity Period) — время жизни сообщения.

Время жизни сообщения — время, по истечении которого сообщение уничтожается (стирается из памяти SMSC), если не было доставлено адресату.

Это поле связано с битами VPF поля PDU Type, существует три варианта их совместного использования.

–          Поле VP не используется.

В этом случае длина поля VP — 0 байт, биты VPF должны быть установлены в значение 00.

–          Поле VP содержит данные о времени жизни в относительном формате.

В этом случае длина поля VP — 1 байт, биты VPF должны быть установлены в значение 10 (в двоичной системе).

Возможные значения поля VP в случае использования относительного формата времени и формулы для расчета соответствующего времени жизни сообщения приведены в таблице 3.

Таблица 3. Время жизни SMS при использовании относительного формата времени

Значение VP шестнадцатеричное

Значение VP десятичное

Соответствующее значению VP время

Максимальное время жизни

1…8F

0…143

(VP + 1) × 5 минут

12 часов

90…A7

144…167

12 часов + (VP — 143) × 30 минут

24 часа

A8…C4

168…196

(VP — 166) ×1 день

30 дней

C5…FF

197…255

(VP — 192) × 1 неделю

63 недели

–          Поле VP содержит данные о времени жизни в абсолютном формате.

В этом случае длина поля VP — 7 байт, биты VPF должны быть установлены в значение 11 (в двоичной системе).

Назначение байт в поле VP при использовании абсолютного формата времени приведено в таблице 4.

Таблица 4. Поле VP при использовании абсолютного формата времени

Байт 1

Байт 2

Байт 3

Байт 4

Байт 5

Байт 6

Байт 7

Год

Месяц

День

Час

Минуты

Секунды

Часовой пояс

При этом каждый байт содержит по два десятичных числа, переставленных местами. Например, байт 2 в случае месяца мая будет иметь значение 50h.

Год представлен последними двумя цифрами.

Часовой пояс указывает разницу между местным временем и временем по Гринвичу (GMT), выраженную в четвертях часа. При этом первый бит указывает знак этой разницы: 0 — разница положительная, 1 — разница отрицательная. То есть байт 7 в случае часового пояса GMT+3 будет иметь значение 21h.

Ранее мы условились в целях упрощения не использовать поле VP в нашем примере и установили два бита VPF поля PDU Type в значение 00 (поле VP отсутствует). Поэтому в пакете PDU нашего примера данное поле будет отсутствовать.

  • UDL (User Data Length) — длина поля UD в байтах.

При использовании интересующей нас кодировки UCS2 значение поля UDL можно вычислить, умножив количество символов в передаваемом сообщении на 2 (каждый символ кодируется двумя байтами). Для сообщения «Привет!» значение поля UDL равно 0Eh (14 в десятичной системе счисления).

  • UD (User Data) — сообщение.

Для отправки сообщения кириллицей необходимо использовать кодировку UCS2, в этой кодировке каждая буква или символ кодируется двумя байтами. Кодировка UCS2 представлена на рис. 3.

Таблица кодировки UCS2

Рис. 3. Таблица кодировки UCS2

Сообщение «Привет!» в кодировке UCS2 имеет вид:

П — 041F

р — 0440

и — 0438

в — 0432

е — 0435

т — 0442

! — 0021

Привет! — 041F044004380432043504420021

Процесс отправки SMS-сообщения GSM-модулем Neoway

Процесс отправки SMS в режиме PDU состоит из следующих шагов:

  • Включение режима PDU:
AT+CMGF=0
  • Ввод команды отправки SMS с указанием количества байт в пакете PDU за исключением поля SCA.

В случае сообщения «Привет!» эта величина — 27:

AT+CMGS=27 

Важно, чтобы эта команда завершалась символом ‘\r’ (0Dh), а не чем-то другим. После этого модуль выдает приглашение ‘>’ ввести данные пакета PDU.

  • Ввод данных пакета PDU.

В случае сообщения «Привет!» они выглядят так:

0001000B91хххххххххххх00080E041F044004380432043504420021 (в текстовом виде),

где хххххххххххх — поле номера получателя, у которого переставлены местами цифры и добавлен символ «F» на конце в случае нечетного количества цифр в номере.

Для номера +70123456789 поле номера получателя будет иметь вид: 0721436587F9, а весь пакет PDU с сообщением «Привет!», отправляемый на данный номер:

0001000B910721436587F900080E041F044004380432043504420021

Ввод данных пакета PDU должен заканчиваться байтом 1Ah.

В случае успешной отправки SMS-сообщения ответ модуля имеет вид:

+CMGS: <Message Reference>

OK,

где «Message Reference» — порядковый номер сообщения, установленный модулем (см. описание поля MR пакета PDU).

 

Заключение

При отправке SMS применение режима PDU позволяет не только использовать в сообщении кириллические символы, но и управлять множеством параметров самого сообщения, что может оказаться полезным для части M2M-приложений.

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

Литература
  1. Neoway_M660_AT_Command_Set_V3_9
  2. ETSI GSM Technical Specification GSM 03.40
  3. wless.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

سكس عربي مصري مجاني sexauskunft.net سكسحر unblurred hentai nicehentai.com omega hentai chinki sex renklipornoo.net village naked dance hot x porn video hindipornsite.com heather jayne nude huge dick comics streamhentai.net hentai msngs
قصص وصور سكس wiwiuku.com مشاهدة أفلام سكس ラブホテル完全盗撮 浮気ドキュメント 禁断の関係 javshare.info とらぶるだいありー brawling go 132 hentaika.org all the way through futa www.indiansexmms pornhindivideo.com ftv hot live 福岡 風俗 図鑑 javwhores.mobi 日本で一番黒いgカップグラドルの絶倫性欲でハメ撮りsexしまくった日常を記録
x videos american fucktube24.com sex odia video 完全拘束イラマチオ 3 あべみかこ javpussy.net 300maan-316 xnxx miya khalifa indianpornsearch.com www.tamil sex videos どエロイ女のムチムチ肉感!ふにゃふにゃ星人 羽生ありさ freejavstreaming.net 生意気j○妹プリ尻挑発 telugu outdoor sex hindipornmovies.org mehreen kaur pirzada