📚 إدراج المقطع البرمجي في محاكاة
المفاهيم الأساسية
مقطع برمجي (Script): ملف يحتوي على تعليمات برمجية (مثل `inspector.py`) يتم إدراجه في عقدة ضمن بيئة المحاكاة لبرمجة سلوكها.
خريطة المفاهيم
```markmap
أدوات محاكاة إنترنت الأشياء
برنامج كاب كاربون (CupCarbon)
مشروع محاكاة: نظام تخزين مصنع آلي (تابع)
#### إنشاء المقاطع البرمجية
##### المكتبات والتهيئة
- استيراد مكتبة `time`.
- طباعة نص فارغ `node.print("")` لمسح النصوص السابقة.
##### برمجة حاويات المواد القابلة للتلف
- المحتويات: "CONSUMABLES".
- معرف الحاوية (ID) بعد تحويله إلى نص.
- فصل المعلومات بمسافة.
- استخدام دالة `node.send()` للإرسال.
##### استقبال الأوامر والاستجابة
- قراءة الرسالة الواردة `node.read()`.
- إذا كانت الرسالة "1": طباعة "PICK" (الالتقاط).
- إذا كانت الرسالة "2": طباعة "DO NOT PICK" (لا تلتقط).
- السكون لمدة ثانية `time.sleep(1)`.
##### برمجة حاويات المواد طويلة الأمد
- المحتويات: "NONCONSUMABLES".
- معرف الحاوية (ID) بعد تحويله إلى نص.
- فصل المعلومات بمسافة.
- استخدام دالة `node.send()` للإرسال.
##### استقبال الأوامر والاستجابة
- قراءة الرسالة الواردة `node.read()`.
- إذا كانت الرسالة "1": طباعة "PICK" (الالتقاط).
- إذا كانت الرسالة "2": طباعة "DO NOT PICK" (لا تلتقط).
- السكون لمدة ثانية `time.sleep(1)`.
##### برمجة مركبة التفتيش
###### تهيئة وإدارة البطارية
- `node.battery.setEMax(100.0)`: ضبط أقصى طاقة.
- `node.battery.init()`: شحن البطارية إلى الحد الأقصى.
- `node.battery.consume(1.0)`: محاكاة استهلاك الطاقة.
###### اكتشاف محطات الشحن
- `node.isSensorDetecting()`: التحقق من وجود محطة شحن في النطاق.
- عند الاكتشاف: استخدام `node.battery.init()` لإعادة الشحن.
###### معالجة رسائل الحاويات والرد
- قراءة جميع الرسائل في المخزن المؤقت: `for n in range(node.bufferSize())`.
- فصل نص الرسالة: `recvMsg.split()`.
- الرد على الحاوية المرسلة:
- إذا كان المحتوى "CONSUMABLES": إرسال النص "1".
- إذا كان المحتوى "NONCONSUMABLES": إرسال النص "2".
- `time.sleep(0.2)`: السكون لمدة 200 مللي ثانية لتحقيق استجابة أفضل.
###### المقطع البرمجي النهائي
- يدمج المقطع الكود الخاص بإدارة البطارية واكتشاف الشحن ومعالجة الرسائل في حلقة `while` رئيسية.
- يتم وضع كود الرد على الرسائل (`if/elif`) داخل الحلقة الرئيسية بعد قراءة كل رسالة.
###### خطوات حفظ المقطع البرمجي
- فتح محرر بايثون (Python Editor).
- كتابة التعليمات البرمجية في الحقل النصي.
- حفظ الملف باسم `inspector.py`.
- إغلاق نافذة المحرر.
#### إدراج المقطع البرمجي في العقدة
##### الوصول إلى معاملات الجهاز
- الضغط على علامة تبويب Device Parameters (معاملات الجهاز) في قائمة Parameters (المعاملات).
##### تحديد ملف المقطع البرمجي
- الضغط على صندوق Script file (ملف المقطع البرمجي).
##### اختيار الملف وإدراجه
- من القائمة المنسدلة، اختيار Inspector.py.
- الضغط على الزر الموجود على اليمين لإدراج المقطع البرمجي في العقدة.
##### عرض معلومات الشبكة
- الضغط على Display > Display/Hide Battery/Buffer levels (عرض / إخفاء مستويات البطارية / المخزن المؤقت).
##### حفظ المشروع
- الضغط على Save Project (حفظ المشروع) من Toolbar (شريط الأدوات).
```
نقاط مهمة
- يتم إدراج المقطع البرمجي من خلال واجهة معاملات الجهاز (Device Parameters) في برنامج CupCarbon.
- يجب تحديد ملف البرنامج النصي (مثل `inspector.py`) من قائمة منسدلة لإرفاقه بالعقدة.
- يمكن عرض معلومات إضافية مثل مستويات البطارية والمخزن المؤقت من قائمة Display.
- الخطوة النهائية هي حفظ المشروع بعد إتمام التعديلات.