tato stránka aktualizována: 5.12.2003

SMS a PDU formát (Protocol Description Unit)

Podklady, pro zde popisovanou skladbu SMS v PDU kódování, jsem čerpal především ze stránek Dreamfabric.com a také z vlastních pokusů v této problematice.

Skladbu SMS zprávy si ukážeme na vzorové "textovce", kterou nejdříve musíme "vyčíst" z mobilního telefonu. To můžeme provést např. AT příkazem AT+CMGL=1<CR>. Uvedený příkaz nám vypíše všechny přijaté, přečtené zprávy. Výpis vypadá například takto:

+CMGL: 1,1,,23
0791246020099990040C9124602021436500001021039060650404F4F29C0E
OK

+CMGL: 1,1,,23 ve výpisu oznamuje typ příkazu (AT+CMGL), počet zpráv (první jednička),že jde o zprávu přijatou a přečtenou (druhá jednička), a nakonec počet byte v zprávě (23). Nás však především zajímá popis vlastní zprávy, kterou tvoří následující řetězec znaků.

07 91 246020099990 04 0C 91 246020214365 00 00 10210390606504 04 F4F29C0E

Popis jednotlivých částí:

07

Toto číslo udává (v HEXa) délku SMSC informace. V tomto případě 7 oktetů (91 + 246020099990).

91

Udává formát následujícího telefonního čísla.
91 - mezinárodní formát
81 - národní formát

246020099990

Telefonní číslo SMS centra. Uvedené číslo je 420602909909. Toto číslo je "zakódované" tak, že jednotlivé dvojce čísel jsou navzájem prohozené (swap). Pokud vyjde počet čísel v tel. čísle lichý, je doplněný znakem "F" (před swapem).

04

První oktet SMS - DELIVER PDU (stavové informace zprávy).

0C

Délka následujícího telefonního čísla (246020214365) v HEXa (0C hex = 12 dec). Udává počet znaků, ne oktetů. Případný doplňující znak "F" v tel. čísle se do tohoto součtu nezapočítává.

91

Udává formát následujícího telefonního čísla.
91 - mezinárodní formát
81 - národní formát

246020214365

Telefonní číslo odesilatele. Uvedené číslo je 420602123456. Toto číslo je "zakódované" tak, že jednotlivé dvojce čísel jsou navzájem prohozené (swap). Pokud vyjde počet čísel v tel. čísle lichý, je doplněný znakem "F" (před swapem).

00

Byte PID - určuje v kterém protokolu či v jakém formátu je SMS zpráva doručena. Např.:
00h - obyčejná SMS zpráva (implicitní hodnota)
01h - telex
02h - fax (skupina3)
03h - fax (skupina 4)
04h - normální telefon (tj. konverze do hlasu)
...

00

DCS (Data Coding Scheme) určuje kódovací schéma dat. Např.:
00h - 7 bitová výchozí abeceda
F6h - 8 bitové datové kódování dle Class 2

10210390606504

SCTS - definuje datum doručení SMS do SMSCentra. Jednotlivé dvojce čísel, zleva doprava určují:
rok, měsíc, den, hodinu, minutu, sekundu, časovou zónu.
Čísla ve dvojicích jsou opět prohozena (swap). Pro ukázku platí: 30.12.2001, 09:06:56. Údaj v poslední dvojici čísel určuje rozdíl ve čtvrt hodinách mezi místním časem a GTM (Greenwich Main Time).

04

UDL - udává počet znaků v následující zprávě před jejím zakódováním. Tzn. že pokud je použito výchozí 7 - bitové kódování tak může být počet bytů menší než počet znaků, které udává UDL. Při 8 - bitovém kódování je počet bytů a znaků ve zprávě totožný.

F4F29C0E

Tento řetězec obsahuje vlastní data (zprávu). Dekóduje se následujícím způsobem. Uvedená data obsahují, jak si ukážeme, zprávu "test". Řetězec rozdělíme na dvojce znaků, která tímto představují čísla v šestnáctkové soustavě. Tyto jednotlivá čísla převedeme na jejich binární hodnotu. K tomu můžeme s výhodou využít kalkulačku obsaženou ve Windows.

F4 F2 9C 0E
11110100 11110010 10011100 00001110

Kde je to potřeba, doplníme hodnotou "0" počet znaků do osmi (na nejvyšší váze tj. vlevo). Potom provedeme následující operaci:

Pro uvedený vzor bude výsledek vypadat tak jak je uvedeno v následující tabulce.

1110100 1100101 1110011 1110100 0000
74 65 73 74 00
t e s t  

V této tabulce je uveden i další postup zpracování. Uvedená čísla v binárním formátu (první řádek tabulky) převedeme do šestnáctkové soustavy (druhý řádek tabulky) a potom pomocí převodní tabulky na "obecné" znaky (třetí řádek tabulky). Převodní tabulku si můžete stáhnout z mých stránek (v PDF), nebo jinou najdete na http://www.dreamfabric.com/sms/default_alphabet.html.

 

 

návrat na hlavní stránku | E-MAIL | tato stránka založena: 5.12.2003 | © Amnez | Osobní stránky autora |

 

Články