
AT příkazy mohou mít 3 základní podoby:
|
Test AT příkazu, zda telefon příkazu rozumí je
AT+<příkaz>=? <CR> |
|
Načtení nastavených hodnot z telefonu AT+<příkaz>?
<CR> |
|
Zápis dat nebo hodnot do telefonu
AT+<příkaz>=<parametr>
<CR> |
Zkratka AT je začátek příkazu, doplníme podle požadovaného povelu,
= se zadává pouze v případě, požaduje-li to příkaz pro nastavení nebo
zápis dat a <CR> je potvrzení příkazu klávesou ENTER. Při komunikaci z
procesoru se potvrzení <CR> nahradí znakem 0Dh.
Nejjednodušším AT příkazem je samotná dvojice
znaků AT (AT příkaz se ukončuje Enterem); odpovědí telefonu na správně zadaný a
provedený AT příkaz je OK. Špatně zadané příkazy jsou ignorovány, pokud jsou v
příkazu zadány jen nesprávné parametry, telefon odpoví ERROR. Pokud mobilní
telefon takto komunikuje, je vše v pořádku a můžeme pokračovat v dalším
zkoumání. V níže uvedené tabulce naleznete soupis nejčastěji používaných příkazů
a příklad odpovědí na ně. Upozorňuji, že odpovědi jsou uvedeny bez řídících
znaků, které telefon při odpovědi pošle, t.j. <CR> a <LF> např.
Povel do telefonu:
AT<CR>
41 54 0D ;hexa
Odpověd od telefonu:
<CR><LF> OK <CR><LF>
0D 0A 4F 4B 0D 0A ;hexa
AT příkaz |
Popis |
Příklad povelu do MT |
Příklad odpovědi z MT |
Poznámka |
AT |
Umožňuje otestovat komunikaci s MT. |
AT <CR> |
OK |
|
ATA |
Vyzvednutí příchozího hovoru. |
ATA <CR> |
OK |
Pokud na MT žádný hovor nepřichází tak MT odešle ERROR. Příchozí hovor
MT oznamuje znaky RING. |
ATH |
Zrušení probíhajícího hovoru (zavěšení). |
ATH <CR> |
OK |
|
ATD |
Vytočení telefonního čísla. |
ATD0602123456; <CR> |
OK |
MT vytočí tel. č. 0602123456. Pokud nemá MT signál, tak místo OK
odpoví NO CARRIER |
AT+CPBR |
Vyčte z MT seznam telefonních čísel. |
AT+CPBR=1,4 <CR> |
+CPBR: 1,"931123456",129,"PEPA" +CPBR:
2,"9501234567",129,"TONDA" +CPBR: 3,"901234567",129,"DOMU" +CPBR:
4,"981234567",129,"KAREL" OK |
Vyčte z MT tel. čísla od místa 1 do místa 4. Samozřejmě lze čísla
upravit podle potřeby. Před tímto příkazem je třeba definovat paměť z
které chceme číst viz. +CPBS. |
AT+CPBS |
Definuje pozici telefonního seznamu v MT. |
AT+CPBS="SM" <CR> |
OK |
"SM" = znak pro výběr tel. seznamu na SIM kartě "ME" = znak pro
výběr tel. seznamu v mobilním telefonu Default = "SM" |
AT+CPMS |
Definuje paměť pro práci se SMS. |
AT+CPMS="SM","SM" <CR> |
+CPMS,1,10,1,10 OK |
"SM" = paměť SIM karty "ME" = paměť telefonu. |
AT+CMGL |
Vypíše SMS zprávy. |
AT+CMGL=0 <CR> |
+CMGL:1,0,,26 079124602009999 0040C9124606021 436500002050020 243610808576D0C 37BB6963 OK |
Číslo v příkazu udává typ čtených zpráv: Pro SIEMENS: 0 -
přijaté, nečtené zprávy (default) 1 - přijaté, přečtené zprávy 2 -
uložené, neodeslané zprávy 3 - uložené, odeslané zprávy 4 - všechny
zprávy |
AT+CMGD |
Smazání příslušné SMS zprávy. |
AT+CMGD=1 <CR> |
OK |
Číslo v příkazu udává pozici zprávy, která má být smazána. |
AT+CMSS |
Odešle SMS zprávu uloženou v seznamu. |
AT+CMSS=1 <CR> |
+CMSS:.12 OK |
Číslo v příkazu udává pozici zprávy v seznamu. U Ericssonu je potřeba
nejdříve definovat paměť s kterou se bude pracovat viz. +CPMS. SMS musí
být uložena i s telefonním číslem (paměť zpráv - odeslané) |
AT+CLIP |
Zapne zobrazování telefonního čísla příchozího hovoru. |
AT+CLIP=1<CR> |
OK |
Při příchozím hovoru to potom vypadá takto: RING +CLIP:
"+420602123456",145,,,,0 Při zadání čísla "0" v příkazu se zobrazování
čísla příchozího hovoru vypne. |
ATE |
Zapíná a vypíná echo z MT. Zapnuté echo znamená, že při zadání
povelu do MT se vám před potvrzením vrátí i zadaný příkaz. Defaultně je
echo zapnuto. |
Příklad vypnutí echa: ATE0<CR> |
OK |
Echo se zapne pokud do příkazu zadáte
jedničku. |


Zprávy SMS mohou být v
mobilních telefonech uloženy v několika různých paměťových prostorech (SM, ME,
MT). Skutečný počet a velikost jsou však dány typem telefonu. Operace, které lze
provádět se zprávami, jsou rozděleny do tří skupin: čtení zpráv a jejich
mazání, zapisování zpráv a jejich odesílání do sítě a ukládání zpráv po
přijetí. Každé ze tří vyjmenovaných skupin operací lze přiřadit paměťový
prostor, se kterým pak operace z dané skupiny přednostně pracují. Pro správu
tohoto přiřazení je v sadě AT příkazů příkaz AT+CPMS.
Tento příkaz (jako mnoho dalších AT příkazů) lze použít ve třech různých formách
pro: testování, čtení a zápis. Testovací formou příkazu (AT+CPMS=?) lze
zjistit, jaké možnosti má připojený telefon v souvislosti s daným AT příkazem.
Např. pro telefony C35 vypadá zadání příkazu a odpověď na něj takto: at+cpms=? V obou případech je v odpovědi telefonu uveden seznam
tří položek oddělených čárkami, přičemž první položkou je seznam paměťových
prostorů, které lze použít pro operace z první skupiny (čtení, mazání), druhou
položkou je seznam prostorů použitelných pro operace druhé skupiny (zapisování,
odesílání) a poslední položkou je seznam prostorů, kam mohou být ukládány
přijaté zprávy SMS. Pro zjištění konkrétní konfigurace přiřazení paměťových
prostorů operacím lze použít příkaz ve formě pro čtení (AT+CPMS?). Odpověď
vypadá takto: at+cpms?
+CPMS: "SM", 5,10, "SM", 5,10, "SM", 5,10
Doplněné číselné údaje znamenají počet
momentálně uložených zpráv a kapacitu paměťového prostoru, tj. kolik zpráv
maximálně může být v prostoru uloženo. Podle uvedených odpovědí telefon C35 má
všechny operace nasměrovány do prostoru SM (paměť na SIM kartě) a ani nemá jinou
možnost, počet uložených zpráv je 5 a kapacita paměťového prostoru je 10 zpráv.
Všechny zprávy SMS jsou uloženy v jednotlivých paměťových prostorech na
pozicích, které jsou opatřeny číselnými indexy 1, 2, ... N, kde N je kapacita
paměťového prostoru. Je-li přijata nová zpráva, je uložena do příslušného
prostoru na co nejnižší neobsazenou pozici a tato pozice je pak touto zprávou
obsazena, dokud zpráva není smazána (nebo přesunuta). Mazat zprávy v paměťovém
prostoru, který je přiřazen k první skupině operací (příkazem AT+CPMS), lze
zapisovací formou příkazu AT+CMGD. Jediným parametrem je
index pozice, která má být uvolněna. Např. mazání zprávy SMS z pozice 5 proběhne
při takovémto dialogu: at+cmgd=5 OK
Seznam zpráv uložených v
paměti lze vypsat příkazem AT+CMGL. Zadáme-li telefonu
jeho testovací formu (AT+CMGL=?), telefon odpoví seznamem možností, kterými lze
upřesnit prováděcí formu příkazu. V tomto případě je upřesněním číselná
specifikace typu zpráv, které má seznam obsahovat. Číselný kód 0 znamená
zprávy přijaté, nepřečtené, kód 1 znamená přijaté, přečtené, 2 je pro uložené,
neodeslané, 3 pro uložené, odeslané a kód 4 je pro všechny zprávy. Ve výpisu
zpráv je pro každou zprávu uveden index pozice, typ zprávy (0..3), délka tzv.
PDU zprávy a vlastní PDU zprávy, což je řetězec párů hexadecimálních cifer, ve
kterém je zakódováno několik dalších parametrů zprávy a také její vlastní text.
Příklad použití příkazu AT+CMGL: at+cmgl=4
+CMGL: 1,1 “24
0791246030500200240C912460502143
650000202142905491400541F45B1D02
+CMGL: 2,0,,24
0791246030500200240C912460502143
650000202142907410400541F45BED02
OK
V tomto případě bylo požádáno o výpis všech
uložených zpráv. Odpovědí je seznam, v němž jsou dvě zprávy SMS, jedna je
uložena na pozici 1, je přijatá, přečtená a má délku 24 bytů. Druhá zpráva je
uložena na pozici 2, je přijatá, nepřečtená a je také 24 bytů dlouhá. Kdybychom
stejný příkaz zopakovali ještě jednou, bude výsledný seznam shodný až na typ
druhé zprávy, i uvedení zprávy ve výpisu se považuje za přečtení zprávy. Jednu
vybranou zprávu lze vypsat příkazem AT+CMGR. Podobně jako
u příkazu AT+CMGD je nutno jen doplnit index pozice, ze které chceme zprávu
přečíst. Čtení z neobsazené pozice je formálně také možné, v odpovědi je pak
oznámena nulová délka zprávy a zcela chybí řádek s PDU.

Co je to PDU (Protocol Description
Unit) Pokud si pomocí datového kabelu
a nějakého terminálu zobrazíte seznam vašich SMS zpráv, které máte uloženy v
telefonu, s největší pravděpodobností je dostanete v PDU formátu. Jedná o
jakousi kompresi dat. Nejlépe se vše pochopí na příkladu: Podíváme se na
následující PDU rámec:
07 91 246030500200 040C91 247077214365 00F1 30601102219480 07 C769B3A50D4201
07 |
Udává počet oktetů SMSC
informace. |
91 |
Určuje typ adresy. 91 = číslo
v mezinárodním tvaru. |
24 60 30 50 02 00
|
Číslo servisního centra 420 603
052 000 |
04 |
První oktet rámce - typ
PDU |
0C |
Délka čísla odesílatele (0C hex =
12 dec = 12 číslic) |
91 |
Typ čísla odesílatele (neznámé,
ISDN, Data, ...) |
24 70 77 21 43 65
|
Číslo odesílatele (420 777 123
456) |
00 |
PID - identifikace
protokolu |
F1 |
DCS - struktura kódování
dat |
30 60 11 02 21 94
80 |
Datum doručení =
rok-měsíc-den-hodina-minuta-sekunda-časová zóna (11.06.03 20:12:49
GMT+2,00) |
07 |
Počet znaků ve zprávě (délka
textu HEXa) 07 hex = 7 dec = 7 znaků NE oktetů! |
C769B3A50D4201 |
Zbývající část je již vlastní
zpráva. Nyní si ukážeme jak ji dekódovat.
|
C7 69 B3 A5 0D 42 01 = text
GSM-ZAP
Nejprve si text převedeme do binárního
tvaru. POZOR nepřevádíme do binárního tvaru z desítkové soustavy, ale ze
šestnáctkové. Pokud má číslo po převodu (binární číslo) méně jak 8 míst,
doplníme na nejvyšších řádech (vlevo) nulami.
C7 |
69 |
B3 |
A5 |
0D |
42 |
01 |
11000111 |
01101001 |
10110011 |
10100101 |
00001101 |
01000010 |
00000001
|
Nyní můžeme
z binárního kódu získat skutečnou hodnotu jednotlivých znaků. Postup je
následující:
|
od prvního čísla "odtrhneme" číslici na nejvyšší pozici |
|
od druhého čísla "odtrhneme 2 číslice na nejvyšší pozici
a na nejnižší pozici čísla přidáme číslici z nejvyšší pozice prvního
čísla |
|
od třetího čísla "odtrhneme" 3 číslice na nejvyšší pozici
a na nejnižší pozici čísla přidáme 2 číslice z nejvyšší pozice
druhého čísla. |
|
atd. |
Jestli se vám zdá tento postup komplikovaný, pozorně si prohlédněte obě
tabulky a po chvíli vám to bude určitě jasné.
01000111 |
01010011 |
01001101 |
00101101 |
01011010 |
01000001 |
01010000 |
71 |
83 |
77 |
45 |
90 |
65 |
80 |
G |
S |
M |
- |
Z |
A |
P
|
Zde jsem ukázal způsob rekonstrukce dat z PDU formátu SMS zprávy. Toto byla
zpráva pro zapnutí relé u konstrukce GSM alarmu. Zpráva se v
mikroprocesoru zpracovává tak, že se testuje znak dvojtečky v příchozích datech
(viz příkaz CMGL). Protože
známe délku rámce PDU, který chceme zpracovat (tuto délku samozřejmě musíme
vypočítat předem) tím také můžeme přesně určit, kde začínají data textu SMS. Od
tohoto místa začneme data porovnávat s daty platných kódů. Nemusíme provádět
dekódování, ale rovnou porovnáváme čísla.
Pokud chceme změnit ovládací povel, musíme nejprve vytvořit nový PDU rámec.
Přestože je to možné ručně, člověk je tvor lenivý a tak proč nevyužít výpočetní
techniku. Existuje velice šikovný software pro
kódování a dekódování SMS. Pomocí něho vytvoříme novou sms - tedy část textu a
odpočítáme znaky od počátku rámce po užitečná data. Pokud se liší délka dat, je
nutné samozřejmě také upravit počet testování shodnosti.
 |
|
Program pro konstrukci, kódování a dekódování PDU formátu
SMS |
|
 |
|
AT příkazy pro Siemens C35i (english) |
 |
© DH servis 2002 -
|