كيفية إنشاء برامج ويندوز في اردوينو



ذات مرة كانت لدي فكرة مجنونة لإحضار 500 مؤشر ليزر في مكان واحد . قضيت الكثير من الوقت وفعلت ذلك. اتضح مذهل وغير مجدية ، لكني أحببته. قبل ستة أشهر ، جاءت فكرة أخرى مجنونة لي. هذه المرة ليست مذهلة على الإطلاق ، ولكن أكثر فائدة بكثير. كما قضيت الكثير من الوقت في ذلك. وفي هذه المقالة أقدم نسخة تجريبية من فكرتي الثانية المجنونة.

اتصلت بمشروع Nanonyam (Nanonyam) وحتى توصلت إلى شعار له (لقد رسمت لمدة 5 دقائق).



بالنسبة لأولئك الذين يفكرون في Arduino ، يمكننا القول أن Nanonyam هو درع اردوينو افتراضي لإدارة Windows.

بمعنى آخر ، Nanonyam عبارة عن آلة افتراضية تستخدم برنامجًا ثابتًا لوحدة تحكم AVR مثل الرمز الثانوي (يوصى ATMEGA2560). يوجد داخل هذا الجهاز الظاهري محاكي AVR kernel ، ولكن بدلاً من الأجهزة الطرفية الموجودة في عناوين SRAM من 0x0060 إلى 0x01FF ، هناك واجهة خاصة للوظائف الافتراضية (بما في ذلك وظائف Windows API). وهنا من المهم للغاية أن نفهم على الفور: يجب ألا يكون لرمز Nanonyam أي وصول إلى نطاق الذاكرة المحدد ، حتى لا تتصل بطريق الخطأ ، على سبيل المثال ، وظيفة حذف الملفات أو تهيئة القرص. ما تبقى من نطاق الذاكرة SRAM من 0x0200 إلى 0xFFFF (هذا هو أكثر من في متحكم حقيقي) متاح للمستخدم لأي غرض من الأغراض. لاحظ على الفور أن هناك حماية خاصة ضد بدء تشغيل البرامج الثابتة لمراقب متحكم حقيقي (أو برنامج ثابت من بنية مختلفة): قبل تنشيط الوظائف "الخطيرة" ، تحتاج إلى استدعاء وظيفة افتراضية خاصة صعبة. هناك بعض ميزات الأمان الأخرى.

لإنشاء برامج لـ Nanonyam ، تحتاج إلى استخدام مكتبات خاصة تنفذ جميع الوظائف الافتراضية المتاحة حاليًا. يمكنك تنزيل الجهاز الظاهري Nanonyam ومكتباته من هنا . وهنا الصفحة لوصف الوظائف الافتراضية . ونعم ، موقعي بدائي للغاية وغير ملائم للأجهزة المحمولة.

نانونام مجاني للاستخدام المنزلي والتجاري. نانونام على أساس "كما هي". شفرة المصدر غير متوفرة.

في الوقت الحالي ، يكون البرنامج في مرحلة الاختبار. تم تنفيذ حوالي 200 وظيفة افتراضية تتيح لك إنشاء برامج بسيطة لنظام Windows.
من الواضح أن إنشاء شيء معقد في مثل هذا الجهاز الظاهري لن يعمل ، لأن ذاكرة الكود هي 256 كيلو بايت فقط. يمكن تخزين البيانات في ملفات منفصلة ، ويتم تنفيذ مخزن مؤقت للجزء الرسومي خارجيًا. جميع الوظائف مبسطة ومتكيفة مع بنية 8 بت.

ما الذي يمكن عمله في نانونام؟ خطرت لي العديد من المهام.

تطوير كتل البرنامج


ما إن كنت بحاجة لتطوير قائمة معقدة لعرض رسومات 128 × 64 نقطة. لا أريد حقًا تنزيل البرامج الثابتة باستمرار إلى متحكم حقيقي لمعرفة كيف تبدو البكسل. لذلك ولدت فكرة Nanonyam. في الشكل أدناه ، الصورة من شاشة OLED الحقيقية لأحد العناصر الموجودة في نفس القائمة. الآن يمكنني العمل بها دون جهاز حقيقي.



Nanonyam (في فكرتها النهائية) هي أداة جيدة للعمل على كتل البرمجيات لأجهزة التحكم الدقيقة ، حيث توجد وظائف للعمل مع الرسومات (يمكنك محاكاة العروض والمؤشرات) ، مع الملفات (يمكنك إنشاء سجلات ، قراءة بيانات الاختبار) ، مع لوحة مفاتيح (يمكنك قراءة ما يصل إلى 10 أزرار في نفس الوقت) ، مع منافذ COM (هنا عنصر منفصل).

إنشاء برامج سريعة


على سبيل المثال ، تحتاج إلى معالجة 100،500 ملف نصي بسرعة. يجب فتح الجميع وتغييره قليلاً وفقًا لبعض الخوارزميات البسيطة ، المحفوظة والمغلقة. إذا كنت سيد بايثون ، فأهنئكم ، لديك كل شيء. ولكن إذا كنت عامل اردوينو متأصل (وهناك الكثير منهم) ، فإن Nanonyam سوف يساعدك في حل هذه المشكلة. هذا هو بالضبط هدفي الثاني في Nanonyam: لإضافة العديد من الوظائف المفيدة مثل معالجة النصوص أو إنشاء لقطات شاشة أو محاكاة ضربات المفاتيح في النظام (هذا ، بالمناسبة ، موجود بالفعل) ، بالإضافة إلى العديد من الوظائف الأخرى لحل المهام الروتينية.

اختبار الغدد من خلال منفذ COM


يمكن أن يعمل Nanonyam كمحطة تعمل وفقًا للخوارزمية. يمكنك رسم قائمة صغيرة للتحكم في الجهاز وعرض البيانات المستلمة من المنفذ. يمكنك حفظ وقراءة البيانات من الملفات لتحليلها. أداة مريحة لتصحيح الأخطاء ومعايرة الغدد ، وكذلك لإنشاء لوحات تحكم بسيطة للأجهزة الافتراضية. للطلاب والعلماء الشباب ، يمكن أن يكون هذا المشروع مفيدًا للغاية.

تدريب البرمجة


ومع ذلك ، كما هو الحال مع مشروع Arduino بأكمله ، فإن الأداة الرئيسية لـ Nanonyam هي تبسيط وظائفها وواجهة التشغيل ومحمل الإقلاع. لذلك ، ينبغي أن يكون هذا المشروع ذا أهمية للمبرمجين المبتدئين وأولئك الذين راضون عن مستوى اردوينو. بالمناسبة ، أنا نفسي لم أدرس حتى الآن اردوينو بالتفصيل ، لأنني كنت دائمًا تستخدم WinAVR أو AVR Studio ، لكنني بدأت مع المجمّع. لذلك ، سيكون البرنامج عينة أدناه خاطئ بعض الشيء ، ولكن العمل تماما.

مرحبا يا هبر!


حان الوقت للتعرف على بعض ميزات Nanonyam وكتابة برنامج بسيط. سوف نكتب باللغة Arduino ، لكن ليس بالطريقة المعتادة ، ولكن بالطريقة التي يمكنني الآن (لقد قلت بالفعل أنني لم أتعامل مع هذه البيئة بشكل جيد للغاية). أولاً ، قم بإنشاء رسم جديد وحدد لوحة Mega2560.



احفظ الرسم إلى ملف وانسخ مكتبة Nanonyam القريبة . سيكون من الصحيح تضمين رؤوس المكتبات ، لكنني لا أعرف كيفية كتابة مجموعة من الملفات الفردية في Arduino ، لذلك فقط قم بتشغيل المكتبات مباشرة (وكلها مرة واحدة):

#include <stdio.h> #include "Nanonyam\nN_System_lib.c" #include "Nanonyam\nN_Keyboard_lib.c" #include "Nanonyam\nN_File_lib.c" #include "Nanonyam\nN_Math_lib.c" #include "Nanonyam\nN_Text_lib.c" #include "Nanonyam\nN_Graphics_lib.c" #include "Nanonyam\nN_RS232_lib.c" 

سيكون من الأصح إنشاء وحدة خاصة "Nanonyam for Arduino" ، والتي يمكن تثبيتها مباشرة من Arduino. بمجرد أن أتعامل مع هذا ، سأفعل ذلك ، لكن الآن سأظهر فقط جوهر العمل مع جهاز افتراضي. نكتب الرمز التالي:

 //       void setup() { sys_Nanonyam();//    g_SetScreenSize(400,200);//   400200  sys_WindowSetText("Example");//  g_ConfigExternalFont(0,60,1,0,0,0,"Arial");//  Windows    0 g_SetExternalFont(0);//   0    g_SetBackRGB(0,0,255);//   g_SetTextRGB(255,255,0);//   g_ClearAll();//  (  ) g_DrawTextCenterX(0,400,70,"Hello, Habr!");//  g_Update();//     } //    void loop() { sys_Delay(100);//    } 

يمكن تنزيل رسم تخطيطي لهذا البرنامج هنا . ابحث عن وصف مفصل للوظائف على الموقع . آمل أن تكون التعليقات في هذا الرمز كافية لفهم هذه النقطة. هنا ، تلعب وظيفة sys_Nanonyam () دور "كلمة المرور" للجهاز الظاهري ، مما يزيل القيود المفروضة على الوظائف الافتراضية. بدون هذه الوظيفة ، سيتم إغلاق البرنامج بعد 3 ثوانٍ من التشغيل.

انقر على زر "التحقق" ويجب ألا تكون هناك أخطاء.



أنت الآن بحاجة إلى الحصول على الملف الثنائي (البرامج الثابتة). حدد القائمة " رسم >> تصدير ملف ثنائي (CTRL + ALT + S) ".



في هذه الحالة ، سيتم نسخ ملفين HEX إلى المجلد مع الرسم. نحن نأخذ الملف فقط بدون البادئة "with_bootloader.mega".

هناك عدة طرق لتحديد ملف HEX لجهاز Nanonyam الظاهري ، وكلها موصوفة في هذه الصفحة . أقترح إنشاء ملف Nanonyam.path إلى جانب ملف Nanonyam.exe ، بحيث تكتب المسار الكامل إلى ملف HEX الخاص بنا. ثم يمكنك تشغيل Nanonyam.exe . نحصل على نافذة مع نقشنا.



وبالمثل ، يمكنك إنشاء برامج في بيئات أخرى ، على سبيل المثال ، في AVR Studio أو WinAVR.

هذا هو المكان الذي ننهي التعارف مع Nanonyam. يجب أن تكون الفكرة الأساسية واضحة. المزيد من الأمثلة على الموقع . إذا كان هناك عدد كاف من الأشخاص الذين يرغبون في استخدام هذا المشروع ، فسأقدم المزيد من الأمثلة وسأواصل "ملء" مكتبات الوظائف الافتراضية. يتم قبول الأفكار الملموسة لتطوير المشروع والتقارير حول الأعطال والأخطاء والأخطاء. يُنصح بإرسالها إلى جهات الاتصال المدرجة على الموقع . مناقشة موضع ترحيب في التعليقات.

شكرا لكم جميعا على اهتمامكم والبرمجة الجيدة!

Source: https://habr.com/ru/post/ar472958/


All Articles