Raspberry PI , UART a RS485
Jan Matuška
hw na starhill.org
Pátek Březen 7 09:05:02 CET 2014
Zdravím,
chtěl bych připojit Raspberry PI na RS485 sběrnici. Po HW stránce je to
snadné a zdá se, že vše funguje. Nicméně narazil jsem na problém v
Raspberry..
Mám v něm Raspbian a ovládání píšu v Pythonu (pyserial). Využívám
klasický UART + jeden GPIO na přepínání TX/RX převodníku 75176.
# RS485 TX
GPIO.output(12, 1)
# posle data na port
port.write("AHOJSVETE\n\r")
# time.sleep(0.1)
# RS485 RX
GPIO.output(12, 0)
Problém je v tom, že metoda write odešle data do nějakého lowlevel
bufferu UARTu a tím skončí. Poté ihned následuje přepnutí převodníku do
režimu příjmu a tím pádem neodvysílání části dat. Nejprimitivnější
řešení je zařazení nějaké prodlevy, během které se stihnou data odeslat
- nicméně tato prodleva neřeší délku dat, vytížení OS a vůbec je to
takto špatně. Hledal jsem v dokumentaci pyserialu nějakou metodu nebo
atribut, který by mě řekl, že odesílání již skončilo, avšak bez výsledku
- jediný kandidát outWaiting() v pyserialu v Raspbery není.
Nemáte, prosím, někdo nápad, jak z tohho ven?
Děkuji
Další informace o konferenci Hw-list