12.10. Rangkuman¶
Kamera yang terhubung ke kabel USB yang melakukan streaming bingkai ke program host, menerima pembaruan konfigurasi dari host, dan bertahan dari cabut/pasang ulang tanpa kehilangan sinkronisasi -- dengan retransmisi tersembunyi, beberapa aliran logis berbagi satu port, dan tanpa kode framing dalam aplikasi -- dihasilkan dari sekitar empat puluh baris kode sisi kamera dan jumlah serupa di sisi host. Library protokol mengubah pipa byte menjadi permukaan saluran yang dapat diprogram dan menjaga semua yang berada di bawah aplikasi tetap tidak terlihat.
12.10.1. Apa yang dibangun bab ini¶
Model mental empat lapisan dari tumpukan: transport, framing, keandalan, saluran. Setiap lapisan memecahkan satu masalah dan mengabaikan semua yang ada di atasnya.
Format paket di kawat -- header 10 byte dengan CRC, payload variabel, CRC di akhir. Cukup kecil untuk ditelusuri byte per byte.
Handshake yang dijalankan kamera dan host ketika transport terhubung: PROTO_SYNC, pertukaran kapabilitas, penemuan saluran.
Mesin keandalan di atasnya: nomor urutan, ACK, NAK, retransmisi dengan exponential backoff, sepuluh kode status.
Model saluran: hingga 32 aliran logis bernama di satu kawat, dengan
stdin/stdout/stream/profilebawaan dan saluran aplikasi yang didaftarkan oleh kelas Python.Antarmuka backend --
size,read,write,poll,lock/unlock,shape,ioctl,flush,is_active-- dan bagaimana library protokol menggunakan metode yang ada pada backend untuk memutuskan apa yang didukung saluran.Sisi host: kelas
Cameradari SDK openmv-python, laju baud ajaib921600yang mengalihkan USB-CDC ke mode protokol, dan pola round-tripchannel_size/channel_read/channel_write.Pola streaming bingkai -- pengambilan buffer tunggal,
readpdengan latch,send_eventuntuk notifikasi bingkai baru -- dan pola konfigurasi dua arah (saluran yang dapat ditulis host, round-trip JSON) yang bersama-sama membentuk fondasi untuk setiap alat kamera interaktif.
12.10.2. Peta jalan referensi¶
Halaman referensi library adalah tujuan pencarian ketika salah satu fitur ini muncul dalam kode nyata:
protocol --- Saluran Protokol OpenMV -- modul
protocol,protocol.init(),protocol.register(),ProtocolChannel, konstanta flag saluran, dan tabel payload-maksimum per kamera.Host SDK --
pip install openmv,openmv.camera.Camera. Metode yang disentuh dalam bab ini:update_channels(),has_channel(),channel_size(),channel_read(),channel_write(),poll_events(),read_frame(),exec(), danstop().Repositori openmv-projects -- alat nyata yang dibangun di atas library protokol. Direktori tools/ mencakup
thermal-overlay-calibration(GUI penyelarasan RGB + termal),ccm-tuning(tuner matriks koreksi warna),genx320-event-streamingdangenx320-overlay-calibration(alat event-camera). Masing-masing menggunakan pola dari bab ini dari ujung ke ujung.
12.10.3. Ke mana melanjutkannya¶
Beberapa arah yang diambil proyek kamera dari sini:
Membangun GUI host. Saluran bingkai yang memberi makan widget video, satu atau dua saluran konfigurasi yang memberi makan slider dan tombol. Untuk lapisan GUI itu sendiri, DearPyGui adalah pilihan alami -- pure-Python, dapat dipasang dengan pip, cukup cepat untuk pratinjau langsung, dan yang dicari pertama kali oleh setiap alat host OpenMV yang ada.
Dashboard telemetri multi-saluran. Beberapa saluran aplikasi pada kamera yang sama (pembacaan sensor, penghitung, event status) masing-masing diperbarui dalam callback-nya sendiri, dan GUI host yang membacanya pada timer dan merender masing-masing secara terpisah. Kontrol aliran independen lapisan saluran berarti satu pembacaan lambat tidak menghambat yang lain.
Penyetelan jarak jauh melalui UART. Callback saluran yang sama; aplikasi memanggil
protocol.inituntuk beralih dari USB ke transport UART. Kamera terus berjalan tanpa kepala dan skrip Python di Raspberry Pi atau laptop berbicara dengannya melalui jalur serial untuk penyetelan lapangan.
Format kawat, lapisan keandalan, dan abstraksi saluran tidak berubah. Memilih transport yang sesuai dengan penempatan dan menambahkan saluran untuk setiap hal yang perlu dilihat atau diatur host adalah seluruh pekerjaan rekayasa dari sini.