odczyt z numeru seryjnego z wiersza poleceń systemu Linux


51

Mam urządzenie portu szeregowego, które chciałbym przetestować przy użyciu wiersza polecenia systemu Linux.

Jestem w stanie używać stty i echa do wysyłania poleceń do portu szeregowego, ale kiedy urządzenie odpowiada, nie mam możliwości odczytania tego, co pochodzi z portu szeregowego. ja używam

stty -F /dev/ttyS0 speed 9600 cs8 -cstopb -parenb && echo -n ^R^B > /dev/ttyS0

aby wysłać polecenie do urządzenia. Urządzenie działa i wysyła odpowiedź z powrotem w ciągu 300 ms. Jak wydrukować tę odpowiedź na konsoli za pomocą wiersza polecenia?

Odpowiedzi:


56

Taki sam jak w przypadku wyjścia. Przykład:

cat /dev/ttyS0

Lub:

cat < /dev/ttyS0

Pierwszy przykład to aplikacja, która otwiera port szeregowy i przekazuje to, co z niego odczytuje, do stdout(twojej konsoli). Drugi to powłoka kierująca ruch portu szeregowego do dowolnej aplikacji; ta konkretna aplikacja następnie przekazuje ją stdindo swojej stdout.

Aby uzyskać lepszą widoczność ruchu, możesz preferować zrzut heksowy:

od -x < /dev/ttyS0

lubsocat stdio /dev/ttyS0
— pstanton,

Wysłałem polecenie do urządzenia, z którym pracuję. Polecenie to: echo „1GAINS” | sudo tee / dev / ttyUSB0 .... iw odpowiedzi otrzymuję nieskończony strumień powtarzający tę samą wiadomość. Jakieś pomysły? Samo urządzenie powinno powtórzyć polecenie, które wysyłam raz, ale tutaj mam wrażenie, że dostaję dziwną informację zwrotną.
— user391339,

Za pomocą analizatora szeregowego zweryfikowałem, że informacja zwrotna nie jest „prawdziwa”. Urządzenie echo polecenia tylko raz, ale używając powyższych poleceń, mam szalone niekończące się powtarzanie na wyjściu terminala.
— user391339,

Czy to działa z danymi binarnymi?
— ransh

@ransh - Zobacz część zrzutu zrzutu heksadecymalnego. W końcu będziesz potrzebować człowieka lub narzędzia, które rozumie lub może odtworzyć te dane binarne.
— Jirka Hanika
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.