Sziasztok,
linux alatt szeretnék olvasni soros portot a következő módon:
echo A > /dev/usb/tts/0; head -n 1 /dev/usb/tts/0
Az echo A-val pollozom a microcontrollert, ami visszaküld egy string-et, ezt a headdel olvasom ki. Működik is a dolog néhány lekérdezésig, de aztán a head nem ad vissza semmilyen értéket. Olyan mintha tele lenne a soros port input buffere és ezért nem tudom kiolvasni. Manuálisan lehet valahogy a soros portot flush-olni? Köszi
Z.
- 2352 megtekintés
Hozzászólások
ez így nem fog menni.
az echo és az utána következő olvasás között a port nincs megnyitva, ha ezalatt érkezik valami adat, az megy a levesbe (hiszen senki nem kiváncsi rá, senki nem tartja nyitva a portot, minek tárolgatná az oprendszer időtlen-időkig).
előbb kell az olvasónak megnyitnia a portot, és aztán lehet beleokádni az 'A'-betűt.
- A hozzászóláshoz be kell jelentkezni
Ha nem akarsz sokat szívni, mégis meg akarod oldani a sorosportos feladatodat: python és pyserial modulja.
Itt egy kedvcsináló a sorosport kezeléshez: http://pyserial.sourceforge.net/shortintro.html
- A hozzászóláshoz be kell jelentkezni
Én így próbálnám:
exec 3<>/dev/usb/tts/0
echo A >&3
head -n 1 <&3
- A hozzászóláshoz be kell jelentkezni
Könyvjelző.
--
unix -- több, mint kód. filozófia.
Life is feudal
- A hozzászóláshoz be kell jelentkezni
Kiolvasást background process-be kell tenni.
- A hozzászóláshoz be kell jelentkezni