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.