क्या बोर्ड पर जलाने से पहले किसी कार्यक्रम को चलाने का कोई तरीका है?


24

प्रोग्राम, कभी-कभी, रनटाइम त्रुटियाँ हो सकती हैं। ये कभी-कभी मुश्किल से मिलते हैं और आसानी से छूट सकते हैं। क्या वास्तव में बोर्ड पर जलाने से पहले कार्यक्रम का परीक्षण करने का कोई तरीका है?



इसके अलावा शायद arduino.stackexchange.com/questions/20/…

आपके पास समस्या केवल एक भौतिक Arduino पर होने वाली समस्या हो सकती है (मैं एक उदाहरण नहीं दे सकता, हालांकि)।
ध्रुवीय

@Polar कार्यक्रम तर्क के संदर्भ में, मैं कल्पना नहीं कर सकता कि कैसे। क्या आप, शायद, कोई उदाहरण पोस्ट कर सकते हैं ?
एशेश्र

जवाबों:


19

वहाँ कुछ Arduino सिम्युलेटर परियोजनाएं हैं।

शायद अधिक परिपक्व लोगों में से एक Arduino , YouTube वीडियो यहाँ के लिए Virtronics सिम्युलेटर है

Virtronics Arduino सिम्युलेटर

ऊपर दिए गए Virtronics पेज में कुछ अन्य Arduino सिमुलेटर को भी सूचीबद्ध किया गया है, जो मुफ्त और भुगतान दोनों हैं।

आरुडिनो के हित को देखते हुए, वहाँ ऐसे कई और सिमुलेटर होने की संभावना है, इसलिए कोई भी बिंदु उन सभी को यहां एक उत्तर में सूचीबद्ध करने की कोशिश नहीं कर रहा है।

ध्यान देने योग्य बात यह है कि एक Arduino Simulator iPhone ऐप भी है : यह एक सिफारिश नहीं है, इसे अभी तक ऑपरेशन में नहीं देखा है।


एक और बात:

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

इसलिए, एक सिम्युलेटर का उपयोग करने की योग्यता, जो कभी भी विभिन्न वास्तविक-दुनिया के समय का अनुकरण नहीं कर सकती है या किसी अन्य समस्या का सामना करना पड़ सकता है, जो संदिग्ध है।

यदि Arduino की लागत चिंता का विषय है, तो कुछ विकल्प खुले हैं:


Virtronics Simulator के लिए लिंक साझा करने के लिए धन्यवाद!
प्रातः

हां, डिबग और रिफ़्लैश करना बहुत आसान है। ATMega328 फ्लैश को 10000 फिर से लिखना चक्रों में मूल्यांकित किया गया है, इसलिए भले ही आप इसे हर एक दिन में 10 बार फिर से लिख लें, इससे पहले कि आप दो साल से अधिक का मज़ा लें :) एक शौक़ीन व्यक्ति के लिए बहुत मज़ा आता है। यदि आप इसमें थोड़े अधिक हैं, तो आप डिबगिंग करने के लिए नए बोर्डों का उपयोग कर सकते हैं और जब वे बाहर पहनना शुरू करते हैं (5000 चक्र कहते हैं?) तो आप उन्हें स्थिर अनुप्रयोगों के लिए उपयोग कर सकते हैं डीबगिंग के लिए एक नया खरीदें।
लोरेंजो डोनाटी

8

यदि आप मैन्युअल रूप से Arduino कनेक्टेड और डीबग ( Arinoino को कोड डाउनलोड करने के बाद ) के साथ अपने प्रोग्राम के माध्यम से मैन्युअल रूप से कदम रख सकते हैं, तो आप रनटाइम त्रुटियाँ पा सकते हैं । यह विजुअल माइक्रो में उपलब्ध है, हालांकि इसके लिए विजुअल स्टूडियो की आवश्यकता होती है। आप ब्रेकपॉइंट सेट कर सकते हैं, चर का मूल्यांकन कर सकते हैं और परिवर्तनशील मान बदल सकते हैं। आप समय के साथ स्मृति का दृश्य भी प्राप्त कर सकते हैं:

यहाँ छवि विवरण दर्ज करें


बहुत साफ़। यह प्रोजेक्ट कितना परिपक्व है - या, क्या यह आईडीई आपके अनुभव में आसानी से चला है?
बोर्डबीट

मैंने इसे प्रोफाइलिंग के लिए उपयोग नहीं किया है, और मैंने केवल इसे संक्षेप में उपयोग किया है, लेकिन यह बहुत अच्छी तरह से एकीकृत करता है और मेरे लिए ठीक चलता है। मैं वास्तव में Serial.print का सहारा लिए बिना डीबग करने की क्षमता की सराहना करता हूं

4

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

ध्यान रखें कि रैपर प्रोग्राम लिखते समय, आपको एक ब्लैक-बॉक्स दृष्टिकोण का पालन करना चाहिए ।

यहाँ छवि विवरण दर्ज करें

अन्यथा, अपने बाहरी कोड कार्यक्रम के रूप में अच्छी तरह से संभव के रूप में मन में वास्तविक कोड रखने के रूप में परीक्षण कोड पूर्वाग्रह आप सीमा मामलों या समस्या क्षेत्रों (यह क्या कर रही है, जबकि होना ही देखा गया है की अनदेखी करने के कर सकते हैं बनाने के दौरान परीक्षण नहीं हो सकता है व्हाइट बॉक्स टेस्टिंग जो विकल्प है)।


क्या आप किसी भी उदाहरण के बारे में जानते हैं? अधिकांश Arduino कोड मैंने देखा है कि उन भागों के लिए भी उचित यूनिट परीक्षणों का अभाव है, जिन्हें इनपुट / आउटपुट की आवश्यकता नहीं है।
जकॉब

@ जाकोब मैं आमतौर पर परीक्षण के लिए अपना कोड लिखता हूं। यह छोटी परियोजनाओं के लिए व्यावहारिक है।
आशिष्र
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.