Услуга передачи коротких сообщений
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
?т список сообщений в памяти телефона, и количество сообщений ограничено только размером памяти телефона. Отправленные сообщения сохраняются в списке отправленных сообщений, также существуют отдельные списки для неотправленных сообщений и для черновиков. В смартфонах и коммуникаторах SMS иногда хранятся в общем почтовом ящике, там же, где сообщения электронной почты и MMS.
Для набора SMS на мобильном телефоне, как правило, используется цифровая клавиатура телефона. Набор осуществляется либо путём последовательных нажатий для выбора нужной буквы, либо при помощи какой-либо системы предикативного набора, типа T9 или iTAP. Некоторые модели телефонов имеют алфавитно-цифровую клавиатуру, что существенно облегчает набор. В смартфонах и коммуникаторах также может использоваться экранная клавиатура.
. Отправка коротких сообщений (SMS) через сотовый телефон, подключенный к компьютеру
Существует 2 типа сообщений: текстовые и PDU (Protocol Data Unit). В общем, это одно и тоже, просто в режиме отправки текстовых сообщений Вы не сможете передавать русские буквы и, вообще, буквы не английского алфавита (греческие и др.), поскольку программное обеспечение телефона не будет их преобразовывать в формат PDU. Поэтому сразу начнем рассмотрение передачи сообщений в режиме PDU.
Будем различать принятые и исходящие сообщения.
Формат принятого сообщения:
1-12 байт1 байт2-12 байт1 байт1 байт7 байт1 байт0-140 байтSCAPDU-typeOAPIDDCSSCTSUDLUD
Биты поля PDU-type называются так:
RPUDHISRIMMSMTIбиты76543210
Поле MTI должно быть таким: бит 0 = 0, бит 1 = 0.
Формат исходящего сообщения:
1-12 байт1 байт1 байт2-12 байт1 байт1 байт0, 1 или 7 байт1 байт0-140 байтSCAPDU-typeMRDAPIDDCSVPUDLUD
Биты поля PDU-type называются так:
RPUDHISRRVPFRDMTIбиты76543210
Поле MTI должно быть таким: бит 0 = 1, бит 1 = 0.
Все неиспользуемые биты нужно установить в 0.
Названия и назначение полей:
SCAномер SMSC (СМС-сервером)PDU-typeполе данных протоколаMRколичество успешно переданных (0..255) сообщений с телефонаOAтелефон отправителяDAтелефон получателяPIDидентификатор протокола: указывает SMSC, как обрабатывать сообщениеDCSсхема кодирования данных в поле данныхSCTSвремя получения сообщения SMS-серверомVPвремя действия сообщения (если сообщение не будет получено абонентом в течение этого времени, SMSC его не будет передавать)UDLдлина поля данныхUDполе данныхRPуказывает на наличие поля ответаUDHIуказывает на наличие заголовка в поле UDSRIтребование принимающего получить статус сообщенияSRRтребование отправителя получить статус сообщенияVPFфлаг наличия поля VPMMSколичество неотправленных сообщений в SMSCRDудалить дубликатыMTIтип сообщения: если 00 - входящее, 01 - исходящее
Все поля подразумевают то, что они шестнадцатеричные (кроме битовых). Но в телефон они отправляются в виде символов. Т.е. если поле имеет значение 41H, то передаются два символа: 34H ("4") и 31H ("1").
SCA
Длина поля - 1 байтТип номера - 1 байтНомер от 0 до 6 байт
Длина содержит байт, указывающий длину номера SMSC + 1 байт типа этого номера.
Тип номера может быть или 81H - национальный, или 91H - международный. Но лучше использовать 91H с нашими Московскими операторами.
Поле номера кодируется следующим образом: каждая пара цифр меняется местами. Если количество цифр нечетно, тогда в конец номера дописывается 0xF.
Например, для Московского БИЛАЙН'а номер SMSC: +790173100 Поле SCA будет выглядеть так: 069197103701F0.
Если параметр длина поля = 0, тогда телефон должен взять номер SMS из своих настроек. А поскольку уверенным в правильности этого номера быть нельзя, как, впрочем, и в том, что Ваша модель телефона сработает именно так, лучше всегда здесь указывать номер SMSC.
PDU
RP: установим его в 0
UDHI: установим его в 0
SRI: (устанавливается в SMSC)
SRR:=Установим в 0
VPF: Установим в 00
MMS: (устанавливается в SMSC)
RD: Установим=в 0
MTI: Описано выше
Поле MR формируется в SMSC, но нужно что-либо там хранить, например 0х0.
OA и DA
Формируются аналогично полю SCA.
Пример:
Если нужно записать национальный номер (в Москве сообщение по такому номеру не дойдет), 1234567 преобразуется в 0781214365F7.
PID
Сообщает транспортному уровню, какой протокол высшего уровня должен обрабатывать это сообщение.
Некоторые возможности:
00H: обычное сообщение
41H: замещать сообщение типа 1
42H: замещать сообщение типа 2
43H: замещать сообщение типа 3
......
47H: замещать сообщение типа 7
DCS
Фактически нужны только два варианта поля + флажок вывода на экран:
80H: кодировка UCS2 (70 знаков);
00H: кодировка 7-бит (160 знаков, но не кириллическая).
Если при этом указать, что старший полубайт равен FH, то сообщение будет выводиться сразу на экран, как в старой системе БИ+GSM (т.н. Flash-SMS). Причем сообщение будет отображаться на экране независимо от кодировки, если Ваш аппарат поддерживает UCS2 (например, Нокия Логоменеджер не умеет отправлять Flash-SMS на русском языке.)
Т.е для Flash-SMS:
F8H: кодировка UCS2 (70 знаков);
F0H: кодировка 7-бит (160 знаков, но не кириллическая).
UDL
Длина поля данных в байтах. Собственно, если сообщение состоит из одного символа UCS2, то его длина - 2 байта, а если из одного символа в 7-битной кодировке - один байт.
UD
Начнем с UCS2. Сама кодировка повторяет Unicode. Т.е. для английских символов просто однобайтовой кодировки добавляется байт 00H. Для русских (те, что начинаются с C0H в Windows-кодировке) можно создать такое правило:
Из байта вы