सभी सॉफ्टवेयर सीरियल लाइब्रेरी में क्या अंतर है? कौन सा Arduino नैनो संगत है?


11

बहुत सारे सॉफ्टवेयर सीरियल लाइब्रेरी हैं, उनके बीच क्या अंतर हैं? और जो मैं अपने Arduino नैनो के साथ उपयोग कर सकता हूं? मेरे Arduino नैनो के लिए मुझे 115200 की बॉड दर पर एक हार्डवेयर सीरियल पोर्ट और एक सॉफ्टवेयर सीरियल पोर्ट की आवश्यकता है।

Arduino नैनो के किस पिन पर मैं सॉफ्टवेयर सीरियल लाइब्रेरी का उपयोग कर सकता हूं?


मैं एक I2C कीपैड के साथ neoswserial का उपयोग कर रहा हूं, लेकिन जब मैं key=getKey();अपना जीएसएम जोड़ता हूं (पिन 2 और 3 Arduino Uno का उपयोग करके) एसएमएस प्राप्त नहीं करता है। कृपया मेरी मदद करें।
गुयेन

जवाबों:


16

यह उत्तर 4 मूल विकल्पों को सूचीबद्ध करता है:

  • HardwareSerial, सदा सर्वश्रेष्ठ। बस पूर्व-परिभाषित Serialचर का उपयोग करें । कुछ Arduinos पर, वहाँ अतिरिक्त HardwareSerial बंदरगाहों, कहा जाता है Serial1, Serial2, आदि नैनो केवल Serial

  • AltSoftSerialसॉफ्टवेयर धारावाहिक पुस्तकालयों का सबसे अच्छा। केवल एक उदाहरण की अनुमति है, और इसका उपयोग इनपुट कैप्चर पिंस (नैनो के लिए 8 और 9 पिन) में से किसी एक पर किया जाना चाहिए।

  • मेरा NeoSWSerialअगला सबसे अच्छा है। यह किसी भी दो पिनों पर काम करता है, लेकिन केवल बॉड दरों 9600, 19200 और 38400 पर।

  • SoftwareSerialसबसे बुरा विकल्प है। यह किसी भी दो पिनों पर काम करता है, लेकिन यह बहुत अक्षम है। यह पूरे समय के लिए बाधित करता है कि एक चरित्र को भेजा जा रहा है या प्राप्त किया जा रहा है , और यह दोनों एक ही समय (अन्य सभी सीरियल विकल्पों के विपरीत) नहीं कर सकता है। यह आपके स्केच के अन्य भागों, अन्य डिवाइस संचार या पुस्तकालयों के साथ हस्तक्षेप कर सकता है।

यदि आप धीमी बॉड दर का उपयोग कर सकते हैं, तो आप अपने डिबग प्रिंट को चालू रख सकते हैं Serial, और अपने डिवाइस के लिए AltSoftSerialया तो उपयोग कर NeoSWSerialसकते हैं।

लेकिन अगर आपको 115200 का उपयोग करना है, तो एकमात्र विश्वसनीय विकल्प है Serial। यद्यपि AltSoftSerialऔर SoftwareSerialउस बॉड दर की अनुमति देते हैं, वे डेटा को सही ढंग से भेज / प्राप्त नहीं कर सकते हैं।

उस स्थिति में, मैं Serial115200 डिवाइस के लिए उपयोग करने का सुझाव दूंगा। जब तक आप आईएसपी का उपयोग नहीं कर रहे हैं, आपको यूएसबी पर एक नया स्केच अपलोड करने के लिए डिवाइस को डिस्कनेक्ट करना होगा।

तो उपयोग करें AltSoftSerialया NeoSWSerialअपने डीबग कथनों के लिए। पीसी से कनेक्ट करने के लिए आपको चयनित पिनों पर एक टीटीएल सीरियल-टू-यूएसबी एडाप्टर (उर्फ एफटीडीआई) की आवश्यकता होगी। Serial Monitorया अन्य टर्मिनल एमुलेटर प्रोग्राम कि USB COM पोर्ट से पढ़ा जाएगा।


क्या AltSoftSerial प्रदर्शन और विशेषताओं में समान है, केवल यह है कि Neoicserial क्या की कार्यक्षमता को जोड़ता है? मुझे पूरी तरह से समझ नहीं आया। github.com/SlashDevin/Neoicserial
विलियम रॉय

2
@WilliamRoy, NeoICSerialबस के लिए attachInterruptविधि जोड़ता है AltSoftSerial। आपको संभवतः प्रत्येक वर्ण को एक व्यवधान में संभालने की आवश्यकता नहीं है। बस उपयोग करें AltSoftSerialऔर कॉल करें available()और फिर read()यदि एक चर तैयार है। इसी तरह, कोर NeoHWSerialमें एक ही attachInterruptसुविधा जोड़ता है HardwareSerial। हालाँकि, NeoSWSerialएक पूरी तरह से अलग वर्ग है (इसकी attachInterruptविशेषता भी है )।
स्लैश-देव

-2

सीरियल सॉफ्टवेयर एक सीरियल पोर्ट का अनुकरण करता है, जो एक देशी पोर्ट से अलग है जो सभी बिट्स को क्रम में सहेजने के लिए रजिस्टर है और उन्होंने मुख्य लूप को कॉल करने के लिए एक ध्वज सेट किया है, एक सॉफ्टवेयर सीरियल में कुछ भी नहीं है। सॉफ़्टवेयर सीरियल को एक-एक करके सभी बिट्स प्राप्त करने होंगे, इसलिए आपको एक डिजिटल पोर्ट पढ़ना होगा, एक विशिष्ट समय का इंतजार करना होगा और फिर से डिजिटल पिन को पढ़ना होगा। आपको इसे 10 बार (1 स्टार्ट बिट, 8 डेटा बिट्स और 1 एंड बिट) बनाना होगा। समय बहुत महत्वपूर्ण है। सॉफ़्टवेयर सीरियल का उपयोग करने के लिए आपको प्रदर्शन के बारे में अधिक चिंता करने की आवश्यकता है।

आप आरएक्स पिन के लिए एक डिजिटल इंटरप्ट पिन का उपयोग कर सकते हैं, इसलिए आपको डाउन बॉर्डर (स्टार्ट बिट) में "कॉल" किया जाता है और 8 बिट प्राप्त होता है।


1
यह मूल प्रश्न का उत्तर देने का प्रयास भी नहीं करता है ।
एडगर बोनट

1
हां, यह मूल खोज का जवाब देने का प्रयास नहीं करता है क्योंकि अरुडिनो समुदाय को खुद को पेरिफेरल कोड नहीं पता है।
रॉडरिगो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.