12. Protocollo host

Ogni cam OpenMV include uno stack di protocollo che espone la camera come un insieme di canali di dati con nome a un programma host. Il programma host può essere uno script Python sul laptop dello sviluppatore, una GUI desktop, un’altra cam all’altro capo di una UART, oppure un servizio in esecuzione su una workstation che monitora una flotta di camere. Alla cam non importa quale sia – lo stesso framing, lo stesso meccanismo di affidabilità, la stessa astrazione di canale funzionano per tutti.

Questa è la risposta a due domande che si presentano costantemente non appena un progetto con cam esce dall’IDE:

  • «Come ottengo una vista in tempo reale di ciò che vede la cam all’interno di una GUI personalizzata sul mio laptop?»

  • «Come permetto a un operatore di modificare una soglia o scegliere una regione di interesse a runtime, senza riflashare?»

Il modulo protocol lato cam e il pacchetto openmv-python lato host rispondono a entrambe le domande, consentendo a una classe Python sulla cam di esporre un canale da cui una classe Python sull’host può leggere, su cui può scrivere e ai cui eventi può reagire, il tutto attraverso un’unica connessione USB o seriale.

Un PC host si connette a una cam tramite USB; la cam espone tre canali -- un canale frame per i dati immagine, un canale config per i valori di controllo e il canale stdout integrato per le stampe -- e lo script host legge o scrive ciascuno di essi.

Il capitolo illustra entrambi i lati. Il codice lato cam mostra come registrare i canali e alimentarli; il codice lato host mostra come connettersi, elencare i canali, estrarre i dati e inviare comandi indietro. Gli strumenti reali distribuiti nella directory openmv-projects/tools/ usano esattamente gli schemi mostrati qui.

Conclusione