Portál AbcLinuxu, 25. dubna 2024 16:25


Dotaz: Komunikácia so zariadením na ttyS0

22.3.2006 17:10 Peter
Komunikácia so zariadením na ttyS0
Přečteno: 272×
Odpovědět | Admin
Dobrý deň Vám prajem.

Mám fiškálny modul FM3000 na COM port od firmy Varos a snažím sa ho rozbehať pod našou pokladňou (samozrejme bežiacou pod linuxom). Tento modul je skvelý v tom, že sa vlastne ovláda pomocou ESC sekvencií. Konkrétne, ak potrebujem vytlačiť dennú uzávierku tak v KDE-čkovom programe - Komport iba stlačím klávesu "ESC" a potom klávesu "d" a už tlačí. Ale vzhľadom na to, že to má byť prepojené s iným softom tu vyvstáva problém (ten soft asi ťažko dačo naťuká na klávesnici :-) ). Preto by som potreboval (najlepšie priamo v bash-i, čiže žiadne C-čko) vyriešiť nejak s ním programovo komunikáciu. Skúšal som nasledovné:

echo "\ed" > /dev/ttyS0 (za predpokladu, že sa nemýlim, že \e == ESC)

Ale ako tušíte - nič sa nedialo. Preto Vás vrele prosím o radu, že ako na to. Kľudne to môže byť aj nejaký konzolový program ktorý sa ovláda parametrami v štýle

nejaky_program -d /dev/ttyS0 -m "\ed" ...

Vrelá vďaka za konštruktívne odpovede.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Luboš Doležel (Doli) avatar 22.3.2006 17:46 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Komunikácia so zariadením na ttyS0
Odpovědět | | Sbalit | Link | Blokovat | Admin
echo "\e" není ESC. Na escape sekvence se používá echo -e
22.3.2006 19:12 Peter
Rozbalit Rozbalit vše Re: Komunikácia so zariadením na ttyS0
No - už som našiel, že ESC je \0033 a skúšal som použiť nasledovné:

echo -e "\0033" > /dev/ttyS0
echo "d" > /dev/ttyS0

alebo

echo -e "\0033" > /dev/ttyS0
echo -e "\0144" > /dev/ttyS0

Ale - bohužiaľ nič. Viete, že čo skúsiť ďalej? Ešte raz - vrelá vďaka.
22.3.2006 19:59 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Komunikácia so zariadením na ttyS0
Jestli chcete poslat na port dva bajty - escape a "d", tak jste se bohužel netrefil ani v jedné variantě (i když jste byl blízko). Celkem dobrou kontrolu lze získat tím, že se výsledek pošle rourou do "xxd", takže:
$ echo -e "\0033" | xxd
0000000: 1b0a
$ echo "d" | xxd
0000000: 640a
nebo
echo -e "\0033" | xxd
0000000: 1b0a
echo -e "\0144" | xxd
0000000: 640a
Všimněte si těch bajtů, co tam nepatří. Lepší řešení je toto:
$ echo -ne "\ed" | xxd
0000000: 1b64
22.3.2006 19:40 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Komunikácia so zariadením na ttyS0
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dovolil bych si doporučit svůj článek o sériovém portu. První díl:
http://www.abclinuxu.cz/clanky/show/63006
druhý díl:
http://www.abclinuxu.cz/clanky/show/63301
Zkuste onu magickou sekvenci uvedenou v prvním díle, nastavte baud rate, paritu, počet bitů na znak, stop bity, atd. a potom by
echo -ne "\ed"
mělo fungovat.
22.3.2006 20:11 Peter
Rozbalit Rozbalit vše Re: Komunikácia so zariadením na ttyS0
Presne toto som potreboval - funguje - vreeeeeeeeeeeeeeela vďaka :-)
22.3.2006 20:15 Peter
Rozbalit Rozbalit vše Re: Komunikácia so zariadením na ttyS0
A ešte neviete mi prosím Vás poradiť, že ako to urobiť zo súboru? Príklad:

cat test > /dev/ttyS0

pričom v "test" by bolo niečo v štýle \ed (ale toto samozrejme nefunguje). Ešte raz - vďaka.
22.3.2006 20:23 Marble
Rozbalit Rozbalit vše Re: Komunikacia so zariadenim na ttyS0
# echo -ne "\ed" > test

:-)
22.3.2006 20:25 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Komunikácia so zariadením na ttyS0
Asi nejhloupější způsob je toto:
echo -ne "\ed" > soubor
cat soubor > /dev/ttyS0
Je to ono nebo jste měl na mysli něco jiného?
22.3.2006 21:41 Peter
Rozbalit Rozbalit vše Re: Komunikácia so zariadením na ttyS0
Áno - presne toto som potreboval. Asi mi už šibe, že som neprišiel na taku jednoduchu vec. Ale aj tak - ešte raz - VEĽMI pekne ďakujem.

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.