12. Värdprotokoll

Varje OpenMV-kamera levereras med en protokollstack som exponerar kameran som en uppsättning namngivna datakanaler för ett värdprogram. Värdprogrammet kan vara ett Python-skript på utvecklarens bärbara dator, ett skrivbordsgränssnitt, en annan kamera i andra änden av en UART, eller en tjänst som körs på en arbetsstation och övervakar en flotta av kameror. Kameran bryr sig inte om vilket – samma inramning, samma tillförlitlighetsmaskineri och samma kanalabstraktion fungerar för dem alla.

Detta är svaret på två frågor som dyker upp ständigt när ett kameraprojekt väl lämnar IDE:n:

  • ”Hur får jag en livevy av vad kameran ser in i ett anpassat gränssnitt på min bärbara dator?”

  • ”Hur låter jag en operatör ändra ett tröskelvärde eller välja ett intresseområde under körning, utan att flasha om?”

Modulen protocol på kamerasidan och paketet openmv-python på värdsidan besvarar båda frågorna genom att låta en Python-klass på kameran exponera en kanal som en Python-klass på värden kan läsa från, skriva till och reagera på händelser i, allt över en enda USB- eller seriell anslutning.

En värddator ansluter till en kamera över USB; kameran exponerar tre kanaler -- en bildkanal för bilddata, en konfigurations- kanal för styrvärden och den inbyggda stdout- kanalen för utskrifter -- och värdskriptet läser eller skriver till var och en.

Kapitlet lär ut båda sidor. Koden på kamerasidan visar hur man registrerar kanaler och matar dem; koden på värdsidan visar hur man ansluter, listar kanalerna, hämtar data och skickar tillbaka kommandon. Riktiga verktyg som levereras i katalogen openmv-projects/tools/ använder exakt de mönster som visas här.

Sammanfattning