12. بروتوكول المضيف

تأتي كل كاميرا OpenMV مزوّدة بحزمة بروتوكول تعرض الكاميرا كمجموعة من قنوات البيانات المسمّاة لبرنامج مضيف. وقد يكون البرنامج المضيف برنامجاً نصياً بلغة Python على حاسوب المطوّر المحمول، أو واجهة رسومية على سطح المكتب، أو كاميرا أخرى على الطرف الآخر من UART، أو خدمة تعمل على محطة عمل تراقب أسطولاً من الكاميرات. ولا تأبه الكاميرا بأيها -- فالتأطير نفسه، وآلية الموثوقية نفسها، وتجريد القناة نفسه يعمل مع جميعها.

هذا هو الجواب على سؤالين يَطرحان نفسيهما باستمرار بمجرد أن يغادر مشروع كاميرا بيئة الـ IDE:

  • "كيف أحصل على عرض حي لما تراه الكاميرا داخل واجهة رسومية مخصصة على حاسوبي المحمول؟"

  • "كيف أتيح لمشغّل تغيير عتبة أو اختيار منطقة اهتمام أثناء التشغيل، دون إعادة برمجة الذاكرة؟"

يجيب كل من الوحدة protocol على جانب الكاميرا والحزمة openmv-python على جانب المضيف عن السؤالين، إذ يسمحان لصنف Python على الكاميرا بأن يعرض قناة يستطيع صنف Python على المضيف القراءة منها والكتابة إليها والتفاعل مع أحداثها، وكل ذلك عبر اتصال USB أو تسلسلي واحد.

A host PC connects to a cam over USB; the cam exposes three channels -- a frame channel for image data, a config channel for control values, and the built-in stdout channel for prints -- and the host script reads or writes each.

يعلّم هذا الفصل الجانبين معاً. تُظهر شيفرة جانب الكاميرا كيفية تسجيل القنوات وتغذيتها؛ وتُظهر شيفرة جانب المضيف كيفية الاتصال وسرد القنوات وسحب البيانات ودفع الأوامر عائدةً. وتستخدم الأدوات الحقيقية المُضمَّنة في الدليل openmv-projects/tools/ الأنماط ذاتها المعروضة هنا تماماً.

الخلاصة