12. Host-protocol

Elke OpenMV cam wordt geleverd met een protocolstack die de camera blootstelt als een verzameling benoemde datakanalen aan een hostprogramma. Het hostprogramma kan een Python-script op de laptop van de ontwikkelaar zijn, een desktop-GUI, een andere cam aan het andere uiteinde van een UART, of een dienst op een werkstation die een vloot camera’s bewaakt. De cam maakt het niet uit welke – dezelfde framing, dezelfde betrouwbaarheidsmachinerie, dezelfde kanaalabstractie werkt voor allemaal.

Dit is het antwoord op twee vragen die voortdurend opduiken zodra een cam-project de IDE verlaat:

  • “Hoe krijg ik een live weergave van wat de cam ziet in een aangepaste GUI op mijn laptop?”

  • “Hoe laat ik een operator tijdens runtime een drempelwaarde wijzigen of een aandachtsgebied kiezen, zonder opnieuw te flashen?”

De protocol-module aan de cam-zijde en het openmv-python-pakket aan de host-zijde beantwoorden beide vragen, door een Python-klasse op de cam een kanaal te laten blootstellen waaruit een Python-klasse op de host kan lezen, naar kan schrijven, en op gebeurtenissen kan reageren, alles over een enkele USB- of seriële verbinding.

Een host-pc verbindt met een cam over USB; de cam stelt drie kanalen bloot -- een frame-kanaal voor beelddata, een config- kanaal voor besturingswaarden, en het ingebouwde stdout- kanaal voor prints -- en het hostscript leest of schrijft elk ervan.

Het hoofdstuk behandelt beide zijden. De cam-zijdige code laat zien hoe je kanalen registreert en voedt; de host-zijdige code laat zien hoe je verbindt, de kanalen opsomt, data ophaalt en commando’s terugstuurt. Echte tools die meegeleverd worden in de map openmv-projects/tools/ gebruiken precies de patronen die hier worden getoond.

Afronding