Arduino IDE: لماذا لا يتم تجميع الرسومات (وكيفية تجنب ذلك)
نظرًا لأنني أتطور بشكل مكثف في Arduino IDE ، فإن هذا السؤال أثار قلقي حقًا. لماذا يرفض رسم مكتوب في نسخة واحدة من بيئة التطوير الترجمة في النسخ المجاورة؟ لقد غمرني مستخدمون Arduino Mega Server بنفس السؤال . لماذا يجمع AMC في 1.6.5 ويرفض في 1.6.4 و 1.6.7 و 1.6.8؟ومؤخرًا ، في عملية نقل Arduino Mega Server إلى وحدة تحكم Genuino 101 الجديدة ، تمكنت من حل هذا اللغز العظيم. وفي هذه المقالة سوف أشارك هذه المعرفة المقدسة معك ومع رسوماتك بعد ذلك سيتم تجميعها بنجاح. لذا ...منطق الأشياء
منطقياً ، يجب أن يتم تجميع التعليمات البرمجية التي يتم تجميعها بنجاح في إصدار من بيئة التطوير ، على سبيل المثال ، 1.6.5 ، في الإصدارات المجاورة من IDE ، لأن هذه الإصدارات تختلف فقط في الحرف الثالث وهي تقريبًا نفسها ، مع تعديلات طفيفة . لكن هذا لا يحدث. لماذا؟مطبخ محلي
لفهم هذا ، تحتاج إلى فهم كيفية تكوين إصدارات بيئات تطوير Arduino IDE وكيف يعمل المستخدمون مع بيئات التطوير هذه.لنبدأ مع المستخدمين. معظمها يجمع المشاريع البدائية ، بشكل مجازي ، في 20 سطرًا ولا توجد مشاكل في هذه المشاريع. يتم تجميع هذه المشاريع بنجاح في أي إصدار من IDE لأنها تستخدم فقط استدعاءات وظائف المكتبة القياسية ولا تعدل المكتبات نفسها.لكن مشروعًا تم تطويره إلى حد ما على Arduino لم يعد مناسبًا لـ "20 سطرًا" ويستخدم حتمًا وظائف أقل شيوعًا من المكتبات (التي تكون أكثر عرضة للتعديلات من إصدار لآخر) ويأتي حتمًا إلى الحاجة إلى تعديل المكتبات نفسها وفقًا لاحتياجاتها الخاصة من المشروع.وبمجرد تعديل مكتبة النظام ، تصبح رهينة وتضطر إلى "سحبها" معك من إصدار إلى آخر.الآن دعونا نلقي نظرة على كيفية تشكيل إصدارات Arduino IDE. ويتم تشكيلها بشكل تعسفي (أظن أنه في النهاية ، مبرمج محدد ، بعض ماريو) من فريق الإصدار. وأي نسخة من مكتبة معينة سيتم تضمينها في مجموعة التوزيع وفي أي شكل (مع أي تعديلات) يبقى على ضمير هذا "ماريو".والآن الانتباه ، هذا مهم جدا! لدى فريق الإصدار هدف واحد فقط - وهو أن توزيع نسخة واحدة متفق عليه بشكل متبادل ومتسق داخل نفسه. مهمتهم هي التأكد من أن جميع الأمثلة القياسية تعمل بشكل صحيح. هذا كل ما في الأمر! لم يتم طرح مهمة التوافق بين الإصدارات على الإطلاق.ونظرًا لأن 99٪ من المستخدمين يقومون بتجميع المشاريع في "20 سطرًا" ، فإن هذا النهج "يعمل" بشكل مثالي. وحقيقة أن أي مشاريع جادة لم يتم تجميعها هي مشكلة هذه المشاريع. الحمد لله ، آلية حدوث المشكلة واضحة الآن ، والآن أصبح من الواضح كيف نتعامل مع هذا.مثال ملموس
دعونا نتذكر نقل AMS إلى Genuino 101 (يعمل بدءًا من الإصدار 1.6.7 والإصدارات الأحدث). هنا ، قام فريق Arduino بتخزين نكتة أخرى لنا (شباب جيدون ، لا يسمحون لنا بالاسترخاء).أدت محاولة ترجمة المشروع لوحدة التحكم الجديدة إلى العديد من أخطاء المترجم. أظهر تحليل الرسائل أن المترجم يكره مكتبة إيثرنت بشدة. لماذا لم ترضي المترجم؟نبدأ في الفهم.مكتبتنا: version = 1.0.4 (لا تحب المترجم)مكتبة من IDE 1.6.7: version = 1.0.4 (مثل المترجم)ومع ذلك.مكتبتنا: 31 ملف (لا تحب المترجم)مكتبة من IDE 1.6.7: 31 ملف (مثل المترجم)ومع ذلك.مكتبتنا: 123 كيلوبايت (لا تعجب المترجم)مكتبة من IDE 1.6.7: 123 كيلوبايت (مثل المترجم)ومع ذلك.بمعنى آخر ، "عالق" Mario مكتبة IDE 1.6.7 Ethernet بنفس رقم الإصدار الموجود في IDE 1.6.5 ، وهو نفس عدد الملفات ونفس الحجم ، ولكن مع محتوى مختلف ونسي تحذيرنا من هذا. وهذا هو "المحتوى الأكثر اختلافًا" ، مثل العنكبوت الذي يحتفظ بـ IDE الخاص به والمكتبات الأخرى ذات المستوى الأدنى (تم تعديله أيضًا في 1.6.7).برافو ماريو! باستخدام هذا النهج ، لن يتم تجميع أي شيء باستثناء الأمثلة القياسية والرسومات المكونة من 20 سطرًا.حل عملي (الألغاز من اردوينو)
الآن أصبحت آلية سبب عدم تجميع المشاريع في إصدارات مختلفة من Arduino IDE واضحة تمامًا ، وبالتالي ، أصبحت طريقة حل هذه المشكلة واضحة تمامًا. في هذه الحالة بالذات ، يتكون الحل من ثلاثة أجزاء.- الجزء الأول إيجاد مكتبة عاملة. تذكر ، مهمة فريق الإصدار لإنشاء نسخة متسقة من IDE؟ لذا في مكان ما يجب أن يكون هناك نسخة عاملة من المكتبة التي نحتاجها.
- الجزء الثاني نقل مكتبة إيثرنت عاملة من ماريو الشقية الصغيرة إلى مكانها في مشروع Arduino Mega Server. لا يوجد شيء معقد هنا - فقط قم بنسخه إلى مكان مكتبتنا الذي لا يعمل في IDE 1.6.7 Ethernet.
- الجزء الثالث. تعديل مشروع Arduino Mega Server لمكتبة مستندة إلى العمل ومن الواضح أنها تعمل في IDE 1.6.7 Ethernet.
نفس الشيء يجب القيام به مع جميع المكتبات غير المترجمة للمشروع (أي العثور على نسخة عمل من المكتبة من IDE ونقلها إلى مكانها في المشروع وتعديلها إذا لزم الأمر). ولكن في هذه الحالة ، كنا محظوظين ، حيث عملت جميع المكتبات الأخرى بشكل جيد (لأن ماريو لم يتمكن من تعديلها بهدوء ، على الرغم من أنه كان بإمكانه فعل ذلك وسيعمل بالتأكيد في الإصدارات الجديدة من IDE ، لكننا نعرف بالفعل كيفية التعامل مع هذا).الخلاصة
هذا هو السر الكامل للعمل بنجاح في Arduino IDE مع المشاريع المعقدة. الآن يمكنك أن تشعر بالسلاح الكامل ولن يكون من الصعب عليك أن تجعل مشروعك يعمل في أي إصدار من Arduino IDE.Source: https://habr.com/ru/post/ar392931/
All Articles