Коммуникаторы HTC лучшие коммуникаторы
"лучшие коммуникаторы HTC"
Коммуникаторы HTC

PDU формат в мобильной связи



Краткий экскурс...
Использовать мобильные аппараты средней цены невыгодно, а вот “бросовые” самое оно… НО, как правило в таких аппаратах доступен лишь PDU формат отправки сообщений в UNICODE кодировке.
Все вроде – бы ничего: преобразуй в UCS2 и посылай… но толковых готовых решений не оказалось, даже пресловутый PDUspy [5] не оправдал ожиданий по конвертации sms.

Формат однобайтовой кодировки SMS в статье не рассматривается, ввиду отсутствия в ней поддержки кириллицы.

Решение
Состав полей и алгоритм формирования PDU-SMS виден из текста ниже (в терминах си- компилятора контроллера приведенный код будет гораздо компактней) ...

function cpdu(ksz,sz,num,msg: string): string;
begin
result:= inttohex(length(sz),2) + // 07=длина номера SMSC
'91' + // 91=интернациональность номера SMSC
cnv(ksz + sz) + // 1F0=+00 плюс признак окончания номера F
'01' + // 01=PDU Type: MTI=01 -> исходящий SMS
'00' + // 00=MR - параметр, который устанавливается в SMSC
inttohex(length(num)-1,2) + // длина номера получателя-1
'91' + // 91=интернациональность получателя
cnv(num) + // номер получателя
'00' + // 00=PID идентификатор номера протокола
tcod + // 18/08=DCS схема кодирования на экран/вну: кириллическое
inttohex(length(msg)*2,2)+ // длина сообщения
ucs2(msg) // сообщение
end;

Формирование номера оправки и sms – центра осуществим по простому принципу: переставляем соседние цифры местами, если номер нечетный то добавляем Fh …

function cnv(s: string):string;
var i: integer;
begin
delete(s,1,1);
if length(s) mod 2>0 then s:=s + 'F';
i:= 1;
while (i=192 then k:= k + 1040 - 192;
result:= result + inttohex(k,4)
end
end;

Теперь дело за малым – проверим как работает:

sendcom('AT+CMGS='+inttostr(length(txt.text)*2)+#13+#10); // 0Dh
sendcom(pdu.Text+#26); // символ конца строки 1Ah

Практика
Итак, имеем сформированное “100% отправляемое” кириллическое PDU сообщение:

AT+CMGS=54x0d
C41D3F3DFA043E043D0043E043B043B053004Dx1a

… разберем подробно!!!
AT+CMGS=54 - длина в dec
07 91 83600 01 00 0C 91 83505 00 08 36
041D3F3DFA043E043D0043E043B043B053004D

06 для номера SMSC + 1 байт интернациональности
91 интернациональность SMSC
83600 номер sms центра плюс признак окончания номера (перестановка)
01 PDU Type: исходящий SMS
00 MR - параметр, который устанавливается в SMSC
0C длина номера получателя-1 в hex
91 интернациональность получателя
83505 номер получателя (перестановка +34134)
00 PID идентификатор номера протокола
08 [18/08] = [на экран – flash / вну] DCS 2-x байтная схема кодирования данных
36 длина текста сообщения!!! заметьте- это длина в hex (каждый символ по 2-байта)
... текст сообщения

Полные исходные тексты проекта в AVR на ATTiny с дозвоном доступны по согласованию с автором.

Связанные статьи

  • Ослепительное сияние LG KE770 Shine
    [2010-05-09] :: Комуникаторы HTC
    Корейский производитель LG представил на рынок мобильных телефонов новую величественную модель LG KE770 Shine . Новинка стала продолжением успешного слайдера LG KE970 Shine , более скромная, чем ее предшественник, но не менее привлекательная. ...
  • Карты Памяти: Инструкция Для Чайников
    [2010-05-07] :: Комуникаторы HTC
    Карты памяти: инструкция для чайников Карты памяти предназначены для хранения информации и существенно расширяют возможности телефона. Вообще, мобильный телефон в чистом виде не нуждается в дополнительной памяти, ограничиваясь тем минимумом, который ...
  • Полезные Советы Потребителям Как Правильно Подобрать И Купить Смартфон
    [2010-05-02] :: Комуникаторы HTC
    Подбирать смартфоны можно как по функциям, так и по производителю. Одними из наилучших считаются смартфоны компании Nokia. Доступная и популярная моделей данной фирмы N73, ей посвящено не малое число Интернет материалов. Такой телефон вполне ...

Поиск


Меню


Интересные статьи


Контакты

Коммуникаторы HTC
Пермь, ул.Куйбышева,37
+7 (342) 2656699
E-Mail: goodkites @ yandex.ru


Счетчик

Hosted by uCoz