मैं एक छोटे टर्मिनल ऐप में आईओटीटीएल के साथ आरटीएस सेट करने में सक्षम हूं, लेकिन मेरे मैक प्लगइन कोड में नहीं, हालांकि दोनों एक ही कोड चलाते हैं। प्लगइन में मैं केवल सीरियल पोर्ट्स फ्लैग/पिन को "प्राप्त" कर सकता हूं, लेकिन उन्हें "सेट" नहीं कर सकता। टर्मिनल ऐप में मैं दोनों को "प्राप्त और" सेट कर सकता हूं। मुझे ईएनओडीईवी की गलती मिलती है। त्रुटि संख्या 1 9 है और संदेश "ऑपरेशन डिवाइस द्वारा समर्थित नहीं है।"मैं मैक प्लगइन में ioctl() के साथ आरटीएस कैसे सेट कर सकता हूं?
यदि यह एक सुरक्षा समस्या है (ब्राउज़र के संदर्भ में) क्या ioctl के साथ ध्वज को संशोधित करने की अनुमति प्राप्त करने का कोई तरीका है? मेरे पास एक यूएसबी पोर्ट से जुड़ा एक सीरियल डिवाइस है। मैं एफटीडीआई वीसीपी (वर्चुअल कॉम पोर्ट) ड्राइवर का उपयोग कर रहा हूं। विंडोज़ पर सब कुछ आसान ।। ओर Btw, मैं दोनों सफारी और Firefox का उपयोग कर ही परिणाम मिल नीचे मेरी कोड है:
int disableRTS()
{
char fd, ret, flags;
// open device
if ((fd = open("/dev/cu.mydevice", O_RDWR | O_NDELAY)) < 0)
{
fprintf(stderr, "failed to open device");
return -1;
}
// Get the current state of the bits
ioctl(fd, TIOCMGET, &flags);
fprintf(stderr, "Flags are %x.\n", flags);
flags &= ~TIOCM_RTS; // Disable the RTS bit
ret = ioctl(fd, TIOCMSET, &flags);
if (ret == -1)
fprintf(stderr, "TIOCMSET failed\n");
else
fprintf(stderr, "TIOCMSET succeeded. flags: %x.\n", flags);
return 0;
}
=========
अद्यतन
यदि मैं ब्राउज़र पेज को रीफ्रेश करता हूं, तो कोड को फिर से निष्पादित करने के लिए मजबूर करता है, ioctl() 0 देता है, सफलता का संकेत देता है। दुर्भाग्य से, मुझे पहली बार काम करने की ज़रूरत है। यहां तक कि अगर मैं एक लूप लिखता हूं और क्षणिक रूप से रोकता हूं, तो नींद() विधि का उपयोग करके, और बाद में प्रयास करता है, यह विफल रहता है। लेकिन फिर, जब मैं ताज़ा करता हूं तो यह सफल होता है। मैंने इस मुद्दे को एक दूसरे, विशेष रूप से एनपीएपीआई प्रोजेक्ट "बेसिकप्लगिन.क्सकोडप्रोज़" में भी डुप्लिकेट किया है, जो मोज़िला द्वारा प्रदान किया गया है। मेरा पहला प्लगइन प्रोजेक्ट एक फायरब्रिथ प्रोजेक्ट है। वे दोनों पहले विफल हो जाते हैं, फिर पेज रीलोड पर सफल होते हैं। मेरे पास 2 अलग मैक ऐप्स भी हैं जो ठीक से काम करते हैं। एक SerialTools है, और यह मेरे टर्मिनल ऐप और प्लगइन्स के रूप में आरटीएस (और डीटीआर ऑफ) पर सेट करने की सटीक विधि का उपयोग करता है।
========
अद्यतन 2
मैं इस पर कोड स्तरीय एप्पल समर्थन प्राप्त कर लिया है, तो एक समाधान आ रहा सकता है। इंजीनियर ने कहा कि यह "विचित्र" था कि कोड एक प्लगइन में अलग-अलग चलता है, और सफारी प्लगइन इंजीनियरों के साथ बात कर रहा है।
'fprintf' त्रुटि केस को 'perror (" TIOCMSET ") पर कॉल में बदलें और देखें कि त्रुटि क्या कहती है। –
मुझे खेद है, मैं उल्लेख करना भूल गया। त्रुटि संदेश "ऑपरेशन डिवाइस द्वारा समर्थित नहीं है।" यह त्रुटि संख्या 19. ईएनडीईडीवी है। – Alyoshak
अभी तक कोई सही उत्तर नहीं मिलने के बारे में बक्षीस के रूप में, मुझे नहीं पता कि क्या करना है। मुझे लगता है कि मैं इसे खोने जा रहा हूं भले ही एक ऐप्पल इंजीनियर ने इस मुद्दे को स्वीकार कर लिया है और समाधान ढूंढने की कोशिश कर रहा है। कहा गया था कि यह "विचित्र" था कि प्लगइन कोड गैर प्लगइन कोड से अलग काम करता है। कम से कम मैं किसी भी मदद के लिए एक सही उत्तर जोड़ने में सक्षम हो जाएगा। – Alyoshak