Làm cách nào để biết / dev / ttyS * là cổng nối tiếp của tôi?


Câu trả lời:


32

Tôi nghĩ đó là lệnh này:

dmesg | grep tty

Chạy nó trên hộp Linux của riêng tôi (chỉ có 1 cổng Nối tiếp) sẽ tạo ra một dòng đầu ra ttyS0. Hãy tự mình thử, bạn sẽ thấy những gì tôi muốn nói.


Điều đó có nghĩa là sau khi chạy lệnh đó, nếu phản hồi là ... console [tty0] được bật ..., và không có thiết bị nào khác, bất kỳ thiết bị nào được kết nối với / dev / tty0 (xin lỗi vì sự rõ ràng của câu hỏi)?
Hektor

1
Vấn đề duy nhất là đầu ra dmesg có thể bị xóa - vì vậy nếu bạn chạy quá muộn, bạn sẽ không gặp may. Nhìn vào / Proc / tty / driver / serial có vẻ như câu trả lời mạnh mẽ hơn và sau đó kiểm tra các ngắt rx tăng dần khi bạn ghi dữ liệu vào cổng đó
Neil McGill

Xin lỗi, tôi phải làm gì nếu tôi không thấy bất kỳ đầu ra nào?
user3019105

nếu bạn hiện đang ở trong một thiết bị đầu cuối trên dòng nối tiếp đã nói, bạn chỉ cần nhập ttyđể lấy tên của tty của bạn. Tôi cho rằng đó là ý nghĩa của OP vì họ không đặt ra câu hỏi là "cổng nối tiếp nào gettyđang chạy?"
Thom Nichols

14

Xem UARTs nơi phát hiện trong /proc/tty/driver/serial. Một dòng có uart:unknownnghĩa là: không có gì được phát hiện (và có khả năng không tồn tại).

# 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

Nếu một cái gì đó được kết nối và điều khiển các dòng CTS, DSR hoặc CD (đây là các dòng đầu vào), bạn thậm chí có thể khá chắc chắn rằng thực sự có một cái gì đó ... Điều tương tự cũng đúng với số đếm rx-byte.


7

Nếu bạn cần thực hiện việc này theo cách lập trình, việc đọc đầu ra từ dmesg có thể gây rắc rối, thay vào đó, thư mục / dev / serial / by-id có các liên kết sym được đặt tên theo dữ liệu nhận dạng của thiết bị của bạn và trỏ đến cụ thể / dev / tty * được kết nối với.

Tôi không chắc đây có phải là một số quy tắc udev đặc biệt dành riêng cho phân phối hay không, nhưng nó hoạt động tốt trong Ubuntu, hãy cho tôi biết nếu nó hoạt động.


5

ttyS0thông qua 3tương ứng với COM1thông qua 4, tương ứng. Chúng thường có cùng tài nguyên phần cứng và không phải lúc nào cũng có thể phát hiện được, vì vậy chúng luôn tồn tại.


cảm ơn vì câu trả lời Vì vậy, nói rằng tôi muốn nói với Linux rằng tôi muốn ttyS0 ánh xạ tới phần cứng cổng nối tiếp của tôi, tôi cần phải làm gì?
sivabudh

Bạn sẽ sử dụng setserialđể ánh xạ các tài nguyên mà ttyS0 sử dụng cho tài nguyên của cổng nối tiếp của bạn. linux.die.net/man/8/setserial Mặc dù vậy, điều này thường không bắt buộc, vì mọi thứ ngoài COM4 thường có đủ phần cứng phụ trợ để cho phép Linux phát hiện ra nó và thêm một thiết bị nối tiếp khi thích hợp.
Ignacio Vazquez-Abrams

0

Ngoài ra còn có lệnh setserialsử dụng /proc/tty/driver/serialđể lấy dữ liệu của nó.

# 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.