ฉันจะรู้ได้อย่างไรว่า / dev / ttyS * เป็นพอร์ตอนุกรมของฉันอย่างไร


33

ฉันมีแล็ปท็อปที่มีพอร์ตอนุกรมเพียงพอร์ตเดียว

ฉันไปที่:

/dev 

ไดเรกทอรีและฉันพบ:

ttyS0
ttyS1
ttyS2
ttyS3

ฉันจะรู้ได้อย่างไรว่า "ttyS" ใดที่อ้างถึงพอร์ตอนุกรมของฉัน


คำตอบ:


32

ฉันคิดว่ามันเป็นคำสั่งนี้:

dmesg | grep tty

การรันบนกล่อง Linux ของฉันเอง (ซึ่งมี 1 พอร์ตอนุกรมเท่านั้น) จะสร้างบรรทัดเอาต์พุต ttyS0 เดี่ยว ลองด้วยตัวคุณเองคุณจะเห็นว่าฉันหมายถึงอะไร


นั่นหมายความว่าหลังจากเรียกใช้คำสั่งนั้นหากการตอบสนองคือ ... console [tty0] เปิดใช้งาน ... และไม่มีอุปกรณ์อื่นใดเชื่อมต่อกับ / dev / tty0 (ขออภัยสำหรับความโง่เขลาที่ชัดเจนของคำถาม)?
Hektor

1
ปัญหาเดียวคือการส่งออก dmesg สามารถล้างได้ - ดังนั้นหากคุณเรียกใช้สายเกินไปคุณโชคไม่ดี การดู / proc / tty / ไดรเวอร์ / ซีเรียลดูเหมือนว่าจะเป็นคำตอบที่ดีกว่าและจากนั้นตรวจสอบการขัดจังหวะ rx ที่เพิ่มขึ้นตามจำนวนที่คุณเขียนข้อมูลไปยังพอร์ตนั้น
Neil McGill

ขออภัยฉันต้องทำอย่างไรถ้าฉันไม่เห็นผลลัพธ์ใด ๆ
3019105

หากคุณอยู่ในเทอร์มินัลมากกว่าสายอนุกรมดังกล่าวคุณสามารถพิมพ์ttyเพื่อรับชื่อ tty ของคุณ ฉันคิดว่านั่นคือความหมายของ OP เนื่องจากพวกเขาไม่ได้ตั้งคำถามว่า "พอร์ตอนุกรมใดที่gettyใช้งานอยู่"
Thom Nichols

14

ดูว่า UARTs /proc/tty/driver/serialที่ตรวจพบใน บรรทัดที่มีuart:unknownวิธีการ: ไม่พบสิ่งใด

# 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

หากมีบางสิ่งเชื่อมต่อและขับสาย CTS, DSR หรือ CD (เหล่านี้คือสายอินพุต) คุณสามารถมั่นใจได้เลยว่ามีบางสิ่งบางอย่าง ... เหมือนกันกับ rx-byte-count


7

หากคุณต้องการทำสิ่งนี้โดยทางโปรแกรมการอ่านเอาต์พุตจาก dmesg อาจเป็นปัญหาแทนโฟลเดอร์ / dev / serial / by-id มีลิงค์ sym ที่ตั้งชื่อตามข้อมูลที่ระบุตัวตนของอุปกรณ์ของคุณและชี้ไปที่ / dev / tty ที่เฉพาะเจาะจง เชื่อมต่อกับ

ฉันไม่แน่ใจว่านี่เป็นกฎพิเศษของ udev ที่เฉพาะเจาะจงในการแจกจ่าย แต่มันทำงานได้ดีใน Ubuntu ให้ฉันรู้ว่ามันใช้งานได้หรือไม่


5

ttyS0ผ่าน3สอดคล้องกับCOM1ผ่าน4ตามลำดับ พวกเขามักจะมีทรัพยากรฮาร์ดแวร์เดียวกันและไม่สามารถตรวจพบได้ตลอดเวลาดังนั้นจึงมีอยู่เสมอ


ขอบคุณสำหรับคำตอบ. ถ้าอย่างนั้นฉันอยากบอก Linux ว่าฉันต้องการให้ ttyS0 ทำแผนที่กับฮาร์ดแวร์พอร์ตอนุกรมของฉันฉันต้องทำอย่างไร
sivabudh

คุณจะใช้setserialเพื่อแมปทรัพยากร ttyS0 ที่ใช้กับพอร์ตอนุกรมของคุณ linux.die.net/man/8/setserial ปกติไม่จำเป็นต้องใช้เนื่องจากมีอะไรนอกเหนือจาก COM4 มักจะมีฮาร์ดแวร์เสริมเพียงพอที่จะให้ Linux ตรวจจับและเพิ่มอุปกรณ์อนุกรมตามความเหมาะสม
Ignacio Vazquez-Abrams

0

นอกจากนี้ยังมีคำสั่งsetserialที่ใช้/proc/tty/driver/serialในการรับข้อมูล

# 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.