Pracuję na Linuksie (TinyCore). W ramach procesu pracy muszę używać urządzenia szeregowego do przesyłania danych. Mam jednak z tym poważne problemy.
Sedno problemu polega na tym, że żadne dane nie są przesyłane. Przy użyciu polecenia:
echo 'hello' > /dev/ttyS0
terminal wydaje się zawiesić na chwilę, a następnie program kończy się bez żadnych danych pozornie przesyłanych (nic po stronie otrzymanej). Kiedy próbuję otrzymywać:
cat < /dev/ttyS0
i spróbuj wysłać coś z podłączonego urządzenia, nic nie wydaje się być odbierane.
Informacje o ustawieniach urządzenia. oto wyjścia odpowiednich poleceń, które uruchomiłem:
dmesg | grep tty
00:05: ttyS0 at I/0 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
liczby odpowiadają temu, co widzę z BIOS-u
stty -F /dev/ttyS0
speed 9600 baud; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^0;
min = 1; time = 0;
-brkint -imaxbel
Podczas testowania z setserial otrzymuję:
setserial -g /dev/ttyS0
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
Co mogę zrobić, aby określić przyczyny, dla których nic nie jest przesyłane i naprawić?
setserial
wyniki połączeń; teraz podłączam zworki
/sbin/setserial -v -g /dev/ttyS0
mogłoby być lepiej. Zapomniałem o chorągiewce gadatliwej.
stty
miał opcje clocal
-ixon
, -ixoff
, -crtscts
i -crtsxoff
, które, miejmy nadzieję, wyłączą linie kontrolne modemu i sterowanie przepływem, czego często potrzeba do połączenia szeregowego typu 3-przewodowego. To są rzeczy, które mogą cię blokować. Są to również rzeczy, które możesz kontrolować w środku minicom
aby dowiedzieć się, jakich ustawień potrzebujesz.
/sbin/setserial -g /dev/ttyS0
mówić?. Możesz także spróbować użyćminicom
i zwierając piny TX i RX razem na kablu szeregowym i sprawdzasz, czy widzisz, co wpisujesz