EKRAN:
UWAGA: Ekran nie jest faktycznie w stanie wysłać hex, o ile wiem. Aby to zrobić, należy użyć echo
lub printf
używałem propozycje w tym poście napisać do portu szeregowego, a następnie korzystając z informacji z innego post odczytu z portu, z różnymi rezultatami. Zauważyłem, że używanie ekranu jest "łatwiejszym" rozwiązaniem, ponieważ otwiera sesję terminalową bezpośrednio z tym portem. (Ułatwiam cytowanie, ponieważ ekran ma naprawdę dziwny interfejs, IMO, i zajmuje się dalszym czytaniem, aby to zrozumieć.)
można wydać polecenie, aby otworzyć sesję screen, potem coś wpiszesz zostanie wysłany do portu, a także wartości zwracane będą wydrukowane poniżej:
screen /dev/ttyS0 19200,cs8
(Zmiana powyższego celu dopasowania twoje potrzeby dotyczące szybkości, parzystości, stop bitów, itp.) Rozumiem, że ekran nie jest "linią poleceń Linuksa", o co konkretnie pyta post, ale myślę, że jest w tym samym duchu. Dodatkowo nie musisz wpisywać echa i cytatów za każdym razem.
ECHO:
Śledź odpowiedź pretorianów robota. JEDNAK, to nie działało dla mnie, dopóki nie użyłem również polecenia cat (cat < /dev/ttyS0
) podczas gdy Wysłałem polecenie echo.
printf:
Okazało się, że można również użyć '% x' polecenia printf w:
c="\x"$(printf '%x' 0x12)
printf $c >> $SERIAL_COMM_PORT
Ponownie, printf, start cat < /dev/ttyS0
przed wysłaniem polecenia.
Dziękuję bardzo za odpowiedź, próbowałem echo -n CTRL + VCTRL + RCTRRL + VCTRL + B z linii poleceń, ale nie mogłem sprawić, że to działa, chcę wypróbować inne polecenia, dlatego chcę wiedzieć, jak wymyślić te tłumaczenia (0x12 =^R, 0x02 =^B), to nie są tłumaczenia ASCII, jak przypuszczam. –
@erincarikan: użyj 'man ascii', aby zobaczyć, jak 0x12 odnosi się do Ctrl-R. Są czyste ascii. Możliwe, że niektóre kombinacje ctrl nie będą działać, np. Ctrl- @ (NUL). Łatwiej byłoby napisać program do takiego protokołu binarnego. – wallyk
dziękuję Całkowicie mam, ale niestety to nie działa, podejrzewam, że coś przeszkadza stty, nie mam gpsd działa. Muszę zagłębić się w to jeszcze bardziej. –