Portál AbcLinuxu, 26. dubna 2024 09:57


Dotaz: Nastavenie sériového portu

16.5.2006 10:15 Peter
Nastavenie sériového portu
Přečteno: 344×
Odpovědět | Admin
Dobrý deň prajem.

V práci vyvíjam skladový program (samozrejme, že pod linuxom) na ktorý je mimo iné pripojený aj fiškálny modul (cez sériový port) ktorý pracuje tak, že len sprosto-prosto pošlem nejaké dáta (samozrejme definované ESC sekvencie podľa manuálu) na /dev/ttyS0 a modul ich spracuje - poprípadne pošle na pokladničnú tlačiareň.
Ale problém je v tom, že sériový port musí byť nastavený na RTS/CTS. Zatiaľ to každé ráno robím ručne tak, že otvorím program "Komport", idem na položku Settings -> Configure Komport a tam vo voľbe Flow Control vyberiem položku RTS/CTS potvrdím OK a fungujem. Pochopiteľne ale potrebujem aby sa to nastavovalo samo, čiže v mojom programe potrebujem dať pred funkciu komunikácie s fiškálom ešte poslať nastavenie.

Skúšal som nasledovné:
stty -crtscts -F /dev/ttyS0
Ale samozrejme nič ( veď ináč by som sa nepýtal :-) )

Takže vie niekto, že ako na to? Vopred Vám veľmi pekne ďakujem za odpovede.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

16.5.2006 10:54 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Nastavenie sériového portu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nevšiml jsem si, v jakém jazyce to píšeš, takže příklady jsou pro C.

První možnost: použít volání system () (nebo ekvivalentní v jiném jazyce, než C) a zavolat program stty, který nastaví portu RTS/CTS (jak ho zavolat najdeš v man stty)

Druhá (hezčí) možnost je použít ioctl (nebo fcntl?) na otevřený sériový port, ale teď narychlo nemůžu najít řádný příklad, jak to udělat, a ke svým zdrojákům nemám přístup. Google určitě něco najde.
Quando omni flunkus moritati
16.5.2006 11:09 Peter
Rozbalit Rozbalit vše Re: Nastavenie sériového portu
Jasne - zabudol som - potrebujem to v bash-i (program je síce robený pomocou C++ a QT ale obslužné rutiny na fiškál sú práve v bash-i). A ide práve o to, že ako pozerám, tak pozerám, tak v man stty voľajako neviem nájsť to spávne nastavenie.
16.5.2006 11:54 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Nastavenie sériového portu
No a neměl by ten příkaz být spíš stty -F /dev/ttyS0 crtscts ? To, cos napsal ty, ti RTS/CTS vypne.
Quando omni flunkus moritati
16.5.2006 19:26 Peter
Rozbalit Rozbalit vše Re: Nastavenie sériového portu
Presne tak - toto bol problém - už to funguje tak ako to má. Ešte raz - vrelá vďaka.
16.5.2006 12:05 hamič
Rozbalit Rozbalit vše Re: Nastavenie sériového portu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jednou jsem řešil něco podobného, a zapsal jsem si poznámku: pomocí příkazu stty vypnout všechna rozšíření kromě: cs8, cread, clocal a volitelně icrnl (převod CR na NL).

Výpis nastavení: stty -F /dev/ttyS0 -a

Třeba to je podobný probém.
16.5.2006 12:48 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: Nastavenie sériového portu
Taky si myslím, že to bude ten problém. U sériového portu je dobré zakázat skoro všechno. Psal jsem o tom v tomhle článku:
http://www.abclinuxu.cz/clanky/hardware/seriova-komunikace-pod-linuxem-i
http://www.abclinuxu.cz/clanky/hardware/seriova-komunikace-pod-linuxem-ii
Je tam i doporučené nastavení. Jsem si dost jistý, že nějaké čachry s crtscts nebudou mít na nic vliv.

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.