Skąd mam wiedzieć, który / dev / ttyS * jest moim portem szeregowym?


Odpowiedzi:


32

Myślę, że to jest to polecenie:

dmesg | grep tty

Uruchomienie tego na moim własnym Linux-ie (który ma tylko 1 port szeregowy) tworzy pojedynczą linię wyjściową ttyS0. Wypróbuj sam, zobaczysz, co mam na myśli.


Czy to oznacza, że ​​po uruchomieniu tego polecenia, jeśli odpowiedź jest ... konsola [tty0] włączona ... i żadne inne, żadne urządzenie nie jest podłączone do / dev / tty0 (przepraszam za pozorną głupotę pytania)?
Hektor

1
Jedynym problemem jest to, że dane wyjściowe dmesg można wyczyścić - więc jeśli uruchomisz to zbyt późno, nie będziesz miał szczęścia. Spojrzenie na / proc / tty / driver / serial wydaje się bardziej solidną odpowiedzią, a następnie sprawdzanie, czy liczba przerwań rx rośnie w miarę zapisywania danych do tego portu
Neil McGill

Przepraszam, co mam zrobić, jeśli nie widzę żadnych wyników?
user3019105

jeśli obecnie znajdujesz się w terminalu za pośrednictwem wspomnianej linii szeregowej, możesz po prostu wpisać ttynazwę swojego tty. Zakładam, że właśnie to miał na myśli OP, ponieważ nie zadawali pytania „jakie porty szeregowe gettydziałają?”.
Thom Nichols,

14

Sprawdź, które UART zostały wykryte /proc/tty/driver/serial. Linia uart:unknownoznacza: nic nie wykryto (i prawdopodobnie nie istnieje).

# cat /proc/tty/driver/serial 
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0
1: uart:16550A port:000002F8 irq:3 tx:111780 rx:1321 RTS|DTR|DSR
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3

Jeśli coś jest podłączone i napędza linie CTS, DSR lub CD (są to linie wejściowe), możesz być nawet całkiem pewien, że rzeczywiście coś jest ... To samo dotyczy liczby bajtów rx.


7

Jeśli musisz to zrobić programowo, odczyt danych wyjściowych z dmesg może być kłopotliwy, zamiast tego folder / dev / serial / by-id ma łącza sym, które są nazwane na podstawie możliwych do zidentyfikowania danych twojego urządzenia i wskazują na konkretne / dev / tty * są połączone z.

Nie jestem pewien, czy jest to jakaś specjalna reguła udev, która jest specyficzna dla dystrybucji, ale działa dobrze w Ubuntu, daj mi znać, czy to działa.


5

ttyS0przez 3odpowiadają COM1za pośrednictwem 4, odpowiednio. Zwykle mają te same zasoby sprzętowe i nie zawsze są wykrywalne, więc zawsze istnieją.


Dziękuję za odpowiedź. Powiedzmy więc, że chcę powiedzieć Linuksowi, że chcę, aby ttyS0 zmapował na moim sprzęcie portu szeregowego, co muszę zrobić?
sivabudh

Należałoby użyć setserialdo mapowania zasobów ttyS0 wykorzystuje do tego z portu szeregowego. linux.die.net/man/8/setserial Zwykle nie jest to wymagane, ponieważ wszystko poza COM4 zwykle ma wystarczającą ilość sprzętu pomocniczego, aby Linux mógł go wykryć i odpowiednio dodać urządzenie szeregowe.
Ignacio Vazquez-Abrams

0

Istnieje również polecenie, setserialktóre wykorzystuje je /proc/tty/driver/serialdo uzyskania danych.

# setserial -g /dev/ttyS[0123]
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3
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.