Все про Интернет
       (N 384) 2011 - 2012
        << Архив передач >>
 Логин:  Пароль:
[регистрация]     запомнить 
 Поиск по сайту:
[Сайты зрителей] [Рейтинг] [Статьи] [Форум] [Блог] [Киберспорт] [Конкурсы] [О передаче]
 

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

raxp@mail.zp.ua

Основой для статьи послужила отладка GSM – пейджера с голосовым дозвоном. Проект в сети довольно известный [4]. На местном “радиорынке” готовые изделия (без телефона) котируются в районе 34$. Сам контроллер ATtiny2313 – 2$, разницу чувствуете? Зачем платить “чужому дяде”…

Краткий экскурс...
Использовать мобильные аппараты средней цены невыгодно, а вот “бросовые” самое оно… НО, как правило в таких аппаратах доступен только 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) +                // 97103701F0=+790173100 плюс признак 
                                   // окончания номера 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 +                         // F8/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<length(s)+1) do begin
    result:= result + s[i+1]+s[i];
    inc(i);inc(i)
 end
end;

Сам текст сообщения в UCS2 в двухбайтном виде: для английских символов кодировки добавляется байт 00h, для русских – из байта вычитается C0h и прибавляется 410h …

function ucs2(s: string): string;
var i,k: integer;
begin
 for i:=1 to length(s) do begin
  k:= ord(s[i]);
  if k>=192 then k:= k + 1040 - 192; // НЕПОСРЕДСТВЕННО преобразуем + 410h - C0h
  result:= result + inttohex(k,4)
 end
end;

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

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

Обратите внимание!!! В параметре AT команды: AT+CMGS=кол-во символов в тексте сообщения
1 символ представлен 2- байтами


Рис.1 – Тестовый конвертор PDU

Номер SMS – центра конечно можно читать из SIM – карты (AT+CSCA?), при формировании PDU это поле оставлять пустым, при этом будет “нулевая длина” 1 – поля и телефон при отправке сам найдет его из памяти, НО – данный метод проходит не на всех карточках.

 

 

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

Ссылки:


Контактная информация:

raxp@mail.zp.ua

14.11.2006


[Переход к списку статей]

 
 

[Видеоархив]

Передача создана дизайн-студией Conus Video
По вопросам размещения рекламы или информации в передаче Internet@Mania пишите imania@mail.zp.ua, или звоните
8(0612)63-80-84


Share |
 
 


Провайдеры Запорожья
zp-provider.narod.ru
providers.portall.zp.ua
Домовые сети
linet.zp.ua
setka.zp.ua
biscom.zp.ua
homenet.zp.ua
www.16x.zp.ua
www.ss.zp.ua
www.skynet.zp.ua
www.watson.zp.ua
www.link.zp.ua
www.kichkas.net
www.neuro.zp.ua
innkom.zp.ua
Каталоги Запорожья
www.otvet.zp.ua
www.portall.zp.ua
www.zaporozhye.org
www.spravka.zp.ua
Форумы
www.forumzone.zp.ua
forum.mail.zp.ua
forum.tinet.zp.ua
forum.nulled-warez.org
forum2.biscom.zp.ua
myforum.net.ua
forum.ru-board.com
forstud.org.ua
Чаты
chatzone.zp.ua
4at.zp.ua
chatinet.zp.ua
chatik.zp.ua
Компьютерные сайты
www.ixbt.com
www.techlabs.ru
www.thg.ru
www.overclockers.ru
Игровые сайты
www.games.zp.ua
www.ag.ru
www.gamemag.ru
www.uaplay.com
www.gameg.info
Журналы
www.seti.com.ua
www.cpp.com.ua
www.shpil.com
www.chip.ua
Блоги
revolver.ru
dirty.ru
photoblog.ru
www.autoblog.ru

 
    Передача создана дизайн-студией Conus Video
    По вопросам размещения рекламы или информации в передаче Internet@Mania пишите нам imania@mail.zp.ua, или звоните 8(0612)63-80-84