În Unix/Linux totul este un fișier.
De fiecare dată când ecou la un dispozitiv (/dev), deschideți pentru scriere, apoi scrieți și închideți. O modalitate simplă de a capta ieșirea unui dispozitiv este la fel de simplă ca
tail -f /dev/ttyACM0 (-f menține linia deschisă)
aceasta va bloca ieșirea și va menține dispozitivul deschis.
De exemplu, în cazul meu, am un proiect care citește senzorii într-un Arduino și în paralel trimite informațiile către un server și, de asemenea, către portul serial.
Acum, tty-urile seriale trebuie să se potrivească cu viteza de pe sistemul de operare și pe dispozitiv. Deci, uneori, nu obțineți ieșire decât dacă aveți viteza și setarea potrivite. dacă introduceți un terminal
stty /dev/ttyACM0
veți obține configurația curentă a vitezei.
Deci, puteți încerca așa ceva (dar nu funcționează întotdeauna)
actualizat ++
#!/bin/bash
input="/dev/ttyACM1" #setează dispozitivul
stty -F $input 115200 min 0
#adăugat pentru a inițializa linia
stty -F $input -brkint -icrnl -imaxbel -opost -onlcr -isig
stty -F $input -icanon -iexten -echo -echoe -echok -echoctl -echoke
echo "ver" >>$input #trimite comanda
tail -f $input & #citește și așteptați pentru totdeauna
dormi 2 secunde
Killall tail #Ar putea fi o problemă dacă altă coadă rulează
în cazul meu, shell-ul scoate acest lucru (nu va lua comanda ver, deoarece nu este implementată, dar după aceea citește din tty orice trimite tty-ul). Cu coada de schimbare se oprește mai devreme și ieșirea este trunchiată la 2 secunde
1970-00-00-00:00:00: Init SDcard...
1970-00-00-00:00:00: SDCard Init finalizată.
1970-00-00-00:00:00: Se citește configurația...
1970-00-00-00:00:00: Gata...
1970-01-01-00:00:01: IP: 192.168.22.199
Din nou, indicatorul -f menține terminalul deschis, dar, dacă îl scot, nu primesc nimic (am pierdut ieșirea bufferului)
De aceea cred că un mic program c va funcționa mai bine.
Sper că acest lucru vă ajută.