📚 برمجة مركبة التفتيش في نظام التخزين الآلي
المفاهيم الأساسية
تهيئة البطارية: ضبط أقصى طاقة للبطارية (100 وحدة) وتعيين مستواها الحالي إلى الحد الأقصى.
محاكاة الاستهلاك: تنفيذ استهلاك وحدة طاقة لفترة زمنية محددة أثناء تشغيل المركبة.
اكتشاف محطة الشحن: التحقق من وجود محطة شحن في النطاق وشحن البطارية إلى الحد الأقصى عند اكتشافها.
معالجة الرسائل: قراءة الرسائل الواردة، فصل محتواها، والرد بناءً على نوع المحتويات ("CONSUMABLES" أو "NONCONSUMABLES").
خريطة المفاهيم
```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 node.loop()`) تستهلك فيها الطاقة باستمرار.
- وظيفة المركبة الأساسية هي الاستماع لرسائل الحاويات والرد عليها بناءً على نوع محتوياتها.
- الرد يكون بإرسال "1" للحاويات القابلة للتلف و "2" للحاويات طويلة الأمد إلى معرف الحاوية المرسل.
- تحتاج المركبة إلى فترة سكون (200 مللي ثانية) بعد الرد لضمان استقرار التواصل مع العقد الأخرى في الشبكة.