Ne nevessetek ki, de elbizonytalanodtam. Ugye home office, nálam van a hardware, amelyikkel USB fölötti virtuális soros porton lehet kommunikálni, tehát CDC class. Elküldöm a parancsot, a hardware végre is hajtja, mindenféle LED-eken ezt látom, tehát odafelé megy a kommunikáció. Valami olyasmi, hogy
echo -en 'itt egy bináris stream' >/dev/ttyACM0
Viszont a szerkezet küld egy választ is, amihez nem tudok hozzájutni. Ezzel próbálkoztam:
od -An -tx1 </dev/ttyACM0
Gyanítom, az a probléma, hogy a kernel bufferel, nekem meg alig néhány byte-os válaszom van. Hogyan juthatok hozzá a válaszhoz? Lényegében olyasmi hiányzik - bár az kimenetnél van -, mint amit az awk fflush() csinál. De ez csak megérzés, mert nem tudom, hol akad el az adat. A dialout csoportnak van rw joga a ttyACM0-ra, s benne vagyok a dialout csoportban.
Megoldás
echo -ne 'itt van egy parancs' | socat - file:/dev/ttyACM0,nonblock,raw,echo=0,b115200 | od -An -tx1
Hozzászólások
minicom?
"Normális ember már nem kommentel sehol." (c) Poli
Most egy moserial nevű terminállal próbálkozom. Vicces, mert ezen a küldött parancs nem hajtódik végre, jön valami error a válaszban. Ugyanakkor shellből egy sima echo-val küldött parancsot végrehajtja, csak a válaszhoz nem jutok hozzá. Azért nem akartam terminált, mert scriptet írnék rá. Illetve jó lenne C-ben is, csak picit macerásabb.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Én ilyen parancsot használok valahol, ezt lehet figurázni:
$ socat - file:/dev/tts/1,nonblock,raw,echo=0,b9600
Köszi, ezt megtanulmányozom.
Közben néztem, úgy néz ki, bugos a moserial. CuteCom legalább hajlandó kommunikálni vele mindkét irányban.
Akkor nézem ezt a socat-ot.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
Ugyan a Háború és béke rövidebb, mint a
man socat
, ennek ellenére abból, amit írtál, bele tudtam pipe-olni, amit akartam, a választ is visszaadta, így meg már vidáman scriptelhetem ezt.Köszönöm szépen! :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
:)
"Normális ember már nem kommentel sehol." (c) Poli
man-t csak azok a pelenkás fejlesztők olvasnak, akik nem tudnak stackoverflow-ról összeszedett félparancsokból félig-meddig működő szarokat összetákolni anélkül, hogy fogalmuk lenne mit miért csinálnak :-)
Szívesen!
Meg azok, akik utána a széthullott rendszert próbálják gatyába rázni, és rájönni, hogy az SO-mágusok mi a sz*rt csináltak. :)
elvileg a screen parancs is tud serialba irni/olvasni.
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
Ha van rá mód, akkor expect , de a ppp chat programja is megfelelő lehet erre.
Végül awk-ban írtam meg. Egyedül annyi kinézés van a shell-re, hogy összeállítom a parancssort egy stringben, aztán ezt végrehajtatom awk-ból, aki visszahívja a shellt, az outputot meg getline-ba pipe-olom. A feldolgozás mehet tovább awk-ban.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE