Portál AbcLinuxu, 14. července 2025 18:22


Dotaz: Odpověď AT příkazu

11.3.2009 16:36 honziiik
Odpověď AT příkazu
Přečteno: 876×
Odpovědět | Admin

Zdravím a prosím o radu. Komunikuji přes sériový port s telefonem Siemens ME45. Posílání příkazů funguje OKej, ovšem horší je to s odpověďmi. Např. čtením přijatých sms nebo zmeškaných hovorů. Vrácená odpověď není nikde vidět. Respektive bych potřeboval odpověď od telefonu dostat do nějakého SOUBORU!!! ... Jsem v této oblasti začátečník. Aplikaci vyvíjím v PHP (PHP 5-CGI). Předem děkuji za rady. Honza.

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

11.3.2009 17:07 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Odpověď AT příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud telefonu posíláte příkazy, musíte také číst jeho odpovědi. Odpověď si tedy musíte přečíst a pak ji do nějakého osuboru zapsat.
11.3.2009 17:58 honziiik
Rozbalit Rozbalit vše Re: Odpověď AT příkazu

Jak říkám v tomto jsem amatérem a proto nevím, jak odpovědi přečíst, ani uložit :-(

11.3.2009 18:27 NN
Rozbalit Rozbalit vše Re: Odpověď AT příkazu

Jestli vam to pomuze:

http://docs.zdenda.com/Linux/GPRS_AT_CommandSet.pdf

NN

11.3.2009 19:22 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Odpověď AT příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Napíš ako komunikuješ s telefónom. Ak hovoríš o AT príkazoch, tak spravidla otvoríš nejaký súbor /dev a do neho zapíšeš AT príkaz. Ak následne z toho istého deskriptora prečítaš, tak by si mal dostať odpoveď na ten AT príkaz. Čo s ňou urobíš je už na tebe.
11.3.2009 19:35 honziiik
Rozbalit Rozbalit vše Re: Odpověď AT příkazu

S telefonem komunikuju v shellu zadáním "echo "ATD 728111111 " > /dev/ttyS0" (což mi teďř taky přestalo chodit - v minicomu to ale funguje) ... Když to takhle řeším přes ten shell, tak žádnou odpověď nedostanu ... nedá se zadat nějaký parametr, aby to odpověď vypsalo (lepší - zapsalo do souboru)? Nebo se na to bude muset složitějc, což je pravděpodobnější :-)?

11.3.2009 22:44 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Odpověď AT příkazu
Pozri sa na program chat. A daj pozor na nastavenie parametrov sériového portu (viď stty)
12.3.2009 07:58 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Odpověď AT příkazu
Stejným způsobem můžete /dev/ttyS0 číst -- třeba cat /dev/ttyS0 bude jeho obsah vypisovat na terminál.
12.3.2009 06:18 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Odpověď AT příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin
A nechceš raději použít nějaké hotové řešení, které si ochočíš (např. gammu)?
In Ada the typical infinite loop would normally be terminated by detonation.
12.3.2009 19:30 honziiik
Rozbalit Rozbalit vše Re: Odpověď AT příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tak už se mi podařilo dosáhnout toho co jsem chtěl, stačí sledovat sériový port cat /dev/ttyS0 ... (s možností uložení do souboru). Jediné co se mi zdá divné je, že při odeslání např. příkazu "AT" dojde k tomu že CAT vypíše hrozně moc totožných řádků (tak 1000 nebo vypisování trvá horně dlouho) se zadaným příkazem a odpovědí ... Nevíte, jak toto vyřešit? Nepomohl ani reboot telefonu i PC :-)

12.3.2009 22:31 benn
Rozbalit Rozbalit vše Re: Odpověď AT příkazu

Zdravim,

to je echovani od seriovky. Co seriovka dostane to vrati zpet a telefon to bere jako prikaz, proto se to zacykly. Je potreba to vypnout prikazem "stty -F /dev/ttyS0 -echo"

13.3.2009 16:17 honziiik
Rozbalit Rozbalit vše Re: Odpověď AT příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin

Všem děkuji za rady, pomalu to dávám do hromady. Teď se mi vyskytl další problém a to sice, že při získávání info z telefonu se mi ukazují čtverečky či hvězdičky proložené písmeny :-). Má někdo podobnou zkušenost.

13.3.2009 16:54 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Odpověď AT příkazu
Záleží na tom, jak to vypadá. Buď je to špatné kódování (pak by vždy místo českého znaku byl jeden nebo dva znaky špatně), pak byste musel kódování textů konvertovat. Nebo jsou čtverečky a hvězdičky náhodně „rozházené“, pak to asi bude řídící protokol. Nejlepší asi bude, když to uložíte do souboru a ten připojíte jako přílohu ke komentáři.
13.3.2009 19:00 honziiik
Rozbalit Rozbalit vše Re: Odpověď AT příkazu

Je to zajímavé, když počítač restartuji a hned zadám AT příkaz, odpověď na něj je srozumitelná (na at, odpověď OK). Ovšem problém nastane, když napíši stty -F /dev/ttyS1 cs8 parenb -parodd cstopb 19200 , potom to píše ty klikyháky ... A snad ještě jedna věc, když spustím na pozadí cat /dev/ttyS1 > /home/uzivatel/test.txt, tak se do toho souboru zapisuje vše co na S1 přichází a dříve přišlo (tzn. že i když soubor během, čtení vymažů, vytvoří se nový s tím, že se do nějak opět něj načte veškerá komunikace, která probíhala od doby spuštění cat ... já bych ale potřeboval v souboruu pouze poslední odpověď. jde toto nějak zajistit?

14.3.2009 12:09 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Odpověď AT příkazu
Prostě čtverečky to vypisuje proto že jsi změnil přenosové parametry portu, asi tě nesedí. (A čteš i řídící informaci, případně se mrší data.)

No a to že čteš znovu ty stejné udaje je tím že ti nefunguje správně komunikace a čteš znovu buffer který už byl přečten.
14.3.2009 12:14 honziiik
Rozbalit Rozbalit vše Re: Odpověď AT příkazu

Takže říkáte, že když správně nastavím "stty" sériový port, problém se čtverečky i buferováním se vyřeší :-)?

14.3.2009 12:53 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Odpověď AT příkazu
To nevím protože nevím co to mrší.

Musíte vědět jak telefon komunikuje to nastavit. A jinak komunikovat pomocí bash echo a cat taky není dobrý nápad protože tyto funkce neobsahují obsluhu chyb a potom čteš nesmysly.
14.3.2009 13:11 honziiik
Rozbalit Rozbalit vše Re: Odpověď AT příkazu

Po pravdě já potřebuju číst jen, když někdo prozvoní a to je zjednodušeno tím, že telefon sám aniž bych zasílal nějaký at příkaz, pošle na sériový port "RING + tel. číslo". Takže chyb se až zase tolik nebojím. Spíš potřebuju vyřešit to s tím buferem, jak vy říkáte, jelikož nechci načítat jedno prozvonění vícekrát ...

15.3.2009 11:01 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Odpověď AT příkazu
Tak si to musíš nastavit co skusit přečíst:

Sériová komunikace pod Linuxem - I

Sériová komunikace pod Linuxem - II

15.3.2009 13:25 honziiik
Rozbalit Rozbalit vše Re: Odpověď AT příkazu

JJ toto už jsem četl několikrát, ovšem odpověď na svou otázku jsem zde nenalezl ... zkusím toto nastínit ještě jednou: pustím cat se zápisem do souboru ... tam se mi ukládá veškerá komuniakce na S1 (je tam např. AT OK AT OK AT OK) a i když soubor vyprázdním (popř. vymažu), tak v dalším odeslání AT se do souroru zapíše to co tym bylo před tím ( AT OK AT OK AT OK + se na konec přidá opět AT OK -aktuální) a já bych potřeboval, aby se mi do toho souboru zapisovala pouze hodnota poslední (AT OK -aktuální). Vše funguje, jak má, když znovu spustím killnu cat a opět sputím (začíná vše od znovu) ovšem v mém případě by bylo toto značně nefektnivní z důvodu sekvenčního častého čtení (killování a opět spouštění catu) ...

19.3.2009 20:34 honziiik
Rozbalit Rozbalit vše Re: Odpověď AT příkazu
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tak jsem vše na konec trošku přizpůsobil a už to sviští ... Jen mi najednou telefon začal sem tam z ničeho nic vracet: +GREG: 1 "0D48", "534A". Nikde jsem nedohledal co tato odpověď znamená (vše funguje normálně)?

 

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.