Câu trả lời:
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.
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?"
Xem UARTs nơi phát hiện trong /proc/tty/driver/serial
. Một dòng có uart:unknown
nghĩ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.
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.
ttyS0
thông qua 3
tương ứng với COM1
thô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.
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.
Ngoài ra còn có lệnh setserial
sử 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