12. Protocolul de gazdă#
Fiecare cameră OpenMV este livrată cu o stivă de protocol care expune camera ca un set de canale de date denumite către un program gazdă. Programul gazdă poate fi un script Python pe laptopul dezvoltatorului, o interfață grafică de desktop, o altă cameră la celălalt capăt al unui UART sau un serviciu rulând pe o stație de lucru care supraveghează o flotă de camere. Camerei nu îi pasă care – aceeași încadrare, aceeași mecanică de fiabilitate, aceeași abstractizare de canal funcționează pentru toate.
Acesta este răspunsul la două întrebări care apar constant odată ce un proiect de cameră părăsește IDE-ul:
„Cum aduc o vizualizare live a ceea ce vede camera într-o interfață grafică personalizată de pe laptopul meu?”
„Cum permit unui operator să modifice un prag sau să aleagă o regiune de interes în timpul execuției, fără a reflasha?”
Modulul protocol de pe partea camerei și pachetul openmv-python de pe partea gazdei răspund la ambele întrebări, permițând unei clase Python de pe cameră să expună un canal din care o clasă Python de pe gazdă poate citi, în care poate scrie și la ale cărui evenimente poate reacționa, totul printr-o singură conexiune USB sau serială.
Acest capitol predă ambele părți. Codul de pe partea camerei arată cum se înregistrează canalele și cum se alimentează acestea; codul de pe partea gazdei arată cum să te conectezi, să listezi canalele, să extragi date și să trimiți comenzi înapoi. Instrumente reale livrate în directorul openmv-projects/tools/ folosesc exact tiparele prezentate aici.
Adesea, însă, nu este nevoie deloc de cod pe gazdă. OpenMV IDE este el însuși o gazdă: înregistrați un protocol.CBORChannel de citiri și comenzi denumite, iar vizualizarea Canale a IDE-ului le afișează în timp real ca etichete, comutatoare, glisoare, grafice și hărți de adâncime și trimite modificările operatorului înapoi către script. Widgeturi și telemetrie cu CBORChannel este acea cale rapidă; restul capitolului este ceea ce stă la baza ei, pentru când un proiect are nevoie de propria gazdă.
Încadrare
Canale
Transmitere în flux
Încheiere