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.