दुर्भाग्य से सीरियल पोर्ट नॉन-प्लगप्ले हैं, इसलिए कर्नेल को पता नहीं है कि किस डिवाइस को प्लग किया गया था। एक हॉवटो ट्यूटोरियल पढ़ने के बाद मुझे काम करने का आइडिया मिल गया है।
/dev/
OS की तरह यूनिक्स की निर्देशिका में ttySn नाम की फाइलें शामिल हैं (n संख्या के साथ) । उनमें से ज्यादातर मौजूदा उपकरणों के अनुरूप नहीं हैं। यह जानने के लिए कि कौन से काम करते हैं, एक आदेश जारी करें:
$ dmesg | grep ttyS
[ 0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 0.892626] 00:07: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[ 0.915797] 0000:01:01.0: ttyS4 at I/O 0x9800 (irq = 19) is a ST16650V2
[ 0.936942] 0000:01:01.1: ttyS5 at I/O 0x9c00 (irq = 18) is a ST16650V2
ऊपर मेरे पीसी का एक उदाहरण आउटपुट है। आप कुछ सीरियल पोर्ट की इनिशियलाइज़ेशन देख सकते हैं:
ttyS0
, ttyS1
, ttyS4
, ttyS5
।
उनमें से एक में प्लग किए गए डिवाइस पर एक पॉजिटिव वोल्टेज होने वाला है। इसलिए /proc/tty/driver/serial
जिस डिवाइस में प्लग किए गए डिवाइस के साथ और उसके बिना फाइल की सामग्री की तुलना करके हम आसानी से अपने डिवाइस से संबंधित टिट्स पा सकते हैं । तो, अब करते हैं:
$ sudo cat /proc/tty/driver/serial> /tmp/1
(संयुक्त राष्ट्र) एक उपकरण प्लग
$ sudo cat /proc/tty/driver/serial> /tmp/2
अगला दो फ़ाइलों के बीच अंतर की जाँच करें। नीचे मेरे पीसी का आउटपुट है:
$ diff /tmp/1 /tmp/2
2c2
< 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0
---
> 0: uart:16550A port:000003F8 irq:4 tx:6 rx:0 CTS|DSR
Dmesg आउटपुट के साथ तीन नंबरों की तुलना करके हम यह निर्धारित कर सकते हैं कि कौन सा पोर्ट है:
[ 0.872181] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
इसलिए, हमारा डिवाइस है /dev/ttyS0
, मिशन पूरा!