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>

AT+CMSS=1,+420603123456<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é). Druhý povel odešle uloženou SMS ze SIM na tel. číslo zadané za pozicí SMS. Telefonní číslo je sice součástí uložené SMS, ale pokud zadáme jiné jako parametr tohoto příkazu, pak má toto nové číslo přednost.
AT+CMGS Odeslání SMS ve tvaru PDU.
Po zadání tohoto příkazu je možné odeslat SMS v PDU formátu z "vnějšku" telefonu přes konektor. Parametrem příkazu je délka PDU rámce
Příklad:
AT+CMGS=21 <CR> 0100 0C 91 247077214365 000009 4424685E96DBD373 <CTRL-Z>
+CMGS: (mr) OK
mr=reference zprávy
Podstatně více o využití tohoto příkazu naleznete na jiné stránce
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.
AT+CCLK Datum a čas z MT Příklad :
AT+CCLK?<CR>
+CCLK: "03/01/04,16:30:04" Stáhne aktuální čas zobrazovaný na displeji MT.






      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.

Kódování SMS do formátu PDU pomocí jednočipu (PIC) i s rutinou ke stažení je popsáno na jiné stránce.



Velikost 265 kByte Program pro konstrukci, kódování a dekódování PDU formátu SMS
 
Velikost 173 kByte  AT příkazy pro Siemens C35i (english)

Vytisknout stránku

Zpátky Zpátky
© DH servis 2002 -