पॉज़िक्स को पोर्ट खोलने पर आरटीएस पिन बदलने की आवश्यकता है। मैं इससे बचने का एक तरीका चाहता हूं।किसी पिन को बदलने के बिना लिनक्स में सीरियल पोर्ट कैसे खोलें?
उत्तर
एक ही समस्या होने के बाद, मैं ftdi_sio
कर्नेल ड्राइवर को पैच करके इसे आज़मा दूंगा। तुम बस ftdi_dtr_rts()
इस तरह में कोड का एक छोटा सा टुकड़ा uncomment की जरूरत है:
static void ftdi_dtr_rts(struct usb_serial_port *port, int on) {
...
/* drop RTS and DTR */
if (on)
set_mctrl(port, TIOCM_DTR /*| TIOCM_RTS*/); // <<-- HERE
else
clear_mctrl(port, TIOCM_DTR /*| TIOCM_RTS*/); // <<-- and HERE
}
और आरटीएस हाथ मिलाना लाइन open()
कॉल पर लंबे समय तक नहीं बदला है। नोट, कि जब तक आपका संशोधित कर्नेल ड्राइवर लोड हो जाता है, तब तक आरटीएस/सीटीएस हार्डवेयर हैंडशेक के साथ काम नहीं कर सकता है। 64 बिट और Ftdi FT2232H आधारित USB UART एडाप्टर लेकिन आप अभी भी मैन्युअल रूप से, उदा, को फोन करके आरटीएस हाथ मिलाना लाइन की स्थिति को नियंत्रित कर सकते .:
int opins = TIOCM_RTS;
ioctl(tty_fd, TIOCMBIC, &opins);
मैं picocom 2.3A की Ctrl+A+G
आदेश के साथ इस परीक्षण किया था, Kubuntu 16.04 चल रहा है।
आपको इस विषय पर अधिक जानकारी मिल सकती है here।
क्या आप जांच सकते हैं कि O_NONBLOCK विकल्प इसके साथ कैसे हस्तक्षेप करता है? –
चेकिंग [picocom.c] (https://github.com/npat-efault/picocom/blob/master/picocom.c), यह 'O_NONBLOCK' का उपयोग करता है:' tty_fd = open (opts.port, O_RDWR | O_NONBLOCK | O_NOCTTY); 'और यह उपरोक्त वर्णित व्यवहार करता है। – Joe
कॉलिंग fopen("/dev/ACM0", "r")
आपको कुछ भी करने की आवश्यकता नहीं है :) आपको वह डेटा प्राप्त नहीं हो सकता है जो आप उम्मीद करते हैं।
यह कॉल आरटीएस पिन बदल देगा। मुझे इससे बचने की ज़रूरत है। –
मुझे नहीं पता कि आप ऐसा क्यों करना चाहते हैं, लेकिन यह आपके सीरियल कंसोल के लिए लिनक्स कर्नेल ड्राइवर को संशोधित करके बहुत आसानी से किया जा सकता है, इसलिए यह आरटीएस टॉगल नहीं करता है। उदाहरण के लिए, drivers/tty/serial/8250/
में 8250 सीरीज़ ड्राइवर के लिए आप एमसीआर रजिस्टर (यूएक्सएमसीआरआर) में प्रत्येक लेखन को बदल सकते हैं ताकि यह सुनिश्चित किया जा सके कि बिट 1 (मास्क UART_MCR_RTS) कभी सेट नहीं किया गया है।
चूंकि यह उपयोगकर्ता स्पेस में दूर है, इसलिए आप भाग्य से बाहर हैं यदि आप कर्नेल ड्राइवर को संशोधित किए बिना ऐसा करना चाहते हैं।
"कर्नेल को संशोधित किए बिना संभव नहीं है" एक बिल्कुल अच्छा जवाब है। धन्यवाद। – Nakedible
"मुझे नहीं पता कि आप ऐसा क्यों करना चाहते हैं" -> एम्बेडेड बूटलोडर्स के लिए यह बहुत आम है कि आरटीएस रीसेट पिन से कनेक्ट हो और बूटलोडर पिन (या इसके विपरीत) से जुड़े डीटीआर से कनेक्ट हो। यदि रीसेट पिन को टॉगल किया गया है, यहां तक कि माइक्रोसॉन्ड के एक अंश के लिए, चिप रीसेट हो जाएगा। इसका अर्थ यह है कि यदि आप डिवाइस के साथ सामान्य संचार के लिए सीरियल पोर्ट का उपयोग कर रहे हैं तो इस उद्देश्य के लिए नियंत्रण रेखाओं का उपयोग करना आसान नहीं है ... पहले नियंत्रण रेखाओं को डिस्कनेक्ट किए बिना :( – Thomas
मुझे लगता है, यह तरह है धारावाहिक डेटा भेजे जाने से ठीक पहले एक प्रोग्रामिंग स्थिति में रीसेट करने के लिए नियंत्रण प्रवाह रेखा को अपहरण कर रहा है।सुविधाजनक, कम से कम जब तक एक छोटे से माइक्रोकंट्रोलर से डिज़ाइन में बदलाव नहीं होता है, तो क्वाड-कोर एसओसी का उपयोग करने के लिए लिनक्स और हार्डवेयर इंजीनियर चलाना प्रोग्रामिंग मॉडल के लिए आवश्यक परिवर्तनों पर किसी से परामर्श करने के लिए परेशान नहीं है। – cha5on
- 1. सीरियल पोर्ट
- 2. सीरियल पोर्ट
- 3. सीरियल पोर्ट
- 4. लिनक्स सीरियल पोर्ट श्रोता और दुभाषिया?
- 5. सी को सीरियल पोर्ट
- 6. सीरियल पोर्ट
- 7. सीरियल पोर्ट
- 8. सीरियल पोर्ट के बफर
- 9. सीरियल पोर्ट को ठीक से
- 10. सीरियल पोर्ट (सी/सी ++)
- 11. किसी भी फ़ाइल को माइग्रेट या बदलने के बिना VS2012 में VS2010 समाधान कैसे खोलें?
- 12. सीरियल पोर्ट संचार: सीरियल पोर्ट डेटा का उपयोग कर बनाम सीरियल पोर्ट बनाम
- 13. आरएस -223 सीरियल पोर्ट
- 14. साफ़ सीरियल पोर्ट सी #
- 15. कैसे मैं आईओएस में डॉक कनेक्टर के सीरियल पोर्ट खोलें कर सकते हैं 5.0.1
- 16. यूएसबी से सीरियल पोर्ट
- 17. सीरियल पोर्ट केबल अनप्लग्ड
- 18. मल्टीथ्रेडिंग और सीरियल पोर्ट
- 19. सीरियल पोर्ट से पढ़ना
- 20. बदलने पिन रंग MKMapView
- 21. मैं जावा में लिनक्स में सीरियल पोर्ट का उपयोग करने के लिए जावा कैसे प्राप्त करूं?
- 22. डेल्फी पर सीरियल पोर्ट को सुनना 7
- 23. डेटा को सीरियल पोर्ट में कैसे स्थानांतरित करें?
- 24. बाह्य एपीआई का उपयोग किए बिना अजगर में सीरियल पोर्ट से कैसे पढ़ा जाए?
- 25. सीरियल पोर्ट काम नहीं कर रहा है?
- 26. क्यूटी और सीरियल पोर्ट प्रोग्रामिंग
- 27. मैं लिनक्स में एक सीरियल पोर्ट पर डेटा की निगरानी कैसे कर सकता हूं?
- 28. पाइथन से Vista में सीरियल पोर्ट को लिखना
- 29. सीरियल पोर्ट रीडलाइन बनाम रीडएक्सस्टिंग या सीरियल पोर्ट से डेटा को सही तरीके से कैसे पढ़ा जाए
- 30. वेबपृष्ठ में सीरियल पोर्ट से कैसे पढ़ा जाए
कृपया विस्तृत करें। आप आरटीएस के साथ क्या करना चाहते हैं? मानक को इसे बदलने की आवश्यकता है और क्यों? –
मैं बंदरगाह खोलने के दौरान बिना परिवर्तन किए आरटीएस छोड़ना चाहता हूं –
बस स्पष्ट करने के लिए - कम से कम लिनक्स में, खुले कॉलिंग ("/ dev/ttyUSB0", os.RDWR) दोनों आरटीएस और डीटीआर लाइनों को सीरियल पोर्ट में ऊपर ले जाती है। बंदरगाह खोले जाने के बाद, आईओटीटीएल को कॉल करके आरटीएस को फिर से कम किया जा सकता है। हालांकि, सवाल यह है कि आरटीएस उच्च गति के बिना डिवाइस को कैसे खोलें? – Nakedible