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.
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.
Vaak is er echter helemaal geen hostcode nodig. OpenMV IDE is zelf een host: registreer een protocol.CBORChannel met benoemde metingen en bedieningselementen en de Channels-weergave van de IDE toont ze live als labels, schakelaars, schuifregelaars, grafieken en dieptekaarten, en stuurt de wijzigingen van de operator terug naar het script. Widgets en telemetrie met CBORChannel is dat snelle pad; de rest van het hoofdstuk is waarop het is gebouwd, voor wanneer een project zijn eigen host nodig heeft.
Framing
Afronding