13.3.1.1. openmv CLI’ı

Paketin kurulması, bir kameraya USB üzerinden bağlı bir pygame görüntüleyicisi açan openmv adlı çalıştırılabilir bir dosya ekler. Seri bağlantı noktasının ardından hiçbir argüman verilmezse, küçük bir yerleşik test betiği çalıştırır, ortaya çıkan çerçeve arabelleğini (frame buffer) geri akıtır ve onu ölçeklenmiş olarak, geçerli çerçeve hızıyla işaretlenmiş şekilde görüntüler:

openmv --port /dev/ttyACM0

Bağlantı noktası yolu, ana makinenin platformuna bağlıdır. Linux’ta USB CDC için /dev/ttyACMx ve USB-UART köprüsü için /dev/ttyUSBx kullanılır. macOS’ta /dev/tty.usbmodem... veya /dev/cu.usbmodem... olur. Windows’ta COMx şeklindedir.

Görüntüleyici, paketin kurulu olduğunu, kameraya erişilebildiğini ve protokolün çalıştığını doğrulamanın en hızlı yoludur. Ayrıca betik geliştirme sırasında kullanışlı bir demo düzeneğidir; yerleşik test betiğini --script ile herhangi bir MicroPython dosyasıyla değiştirin ve terminalden çıkmadan sonucu izleyin.

Terminaldeki Esc, Ctrl+C tuşları veya görüntüleyici penceresini kapatmak; hepsi temiz bir şekilde çıkış sağlar.

13.3.1.1.1. Özel bir betik çalıştırma

--script, CLI’ı diskteki bir MicroPython kaynak dosyasına yönlendirir. Dosya kameraya yüklenir, yerleşik test betiğinin yerine çalıştırılır ve ürettiği çerçeveler görüntüleyiciye geri akıtılır:

openmv --port /dev/ttyACM0 --script my_script.py

Betiğin stdout çıkışına yazdırdığı her şey, gerçek zamanlı olarak ana makinenin terminaline yansıtılır. Bunu bastırmak için --quiet, ayrıntılı protokol günlüklemesi için ise --debug parametresini geçirin.

13.3.1.1.2. Özel bir kanalın önizlenmesi

--channel NAME, çalışan kamera tarafı betiği tarafından kaydedilmiş özel bir veri kanalını yoklar ve her güncellemenin ilk on baytını terminale yazdırır:

openmv --port /dev/ttyACM0 --channel ticks

Hiçbir --script verilmediğinde çalışan yerleşik test betiği, kameranın milisaniye cinsinden çalışma süresini döndüren bir ticks kanalı kaydeder; böylece --channel ticks, Özel kanallar belgesinin ayrıntılı olarak ele aldığı çift yönlü kanal yüzeyini, ana makinede ya da kamerada kendiniz hiç kod yazmadan gösterir.

13.3.1.1.3. Karşılaştırma modu

--bench, standart test betiğini bir JPEG sıkıştırma iş hacmi karşılaştırmasıyla değiştirir:

openmv --port /dev/ttyACM0 --bench

Kamera bir RGB565 QVGA çerçeve yakalar, onu JPEG’e sıkıştırır ve ardından aynı sıkıştırılmış arabelleği sıkı bir döngüde boşaltır. Görüntüleyici, canlı kod çözülmüş bir çerçeve yerine ham USB veri hızını bildirir; dolayısıyla ekrandaki sayı, bağlantının o ana makineye sürdürebileceği üst sınırdır. Gerçekte yakalanan şeyi değiştirmenin getirdiği değişkenlik olmadan kameraları veya ana makineleri karşılaştırmak için kullanışlıdır.

13.3.1.1.4. Profil oluşturma

CLI, akıtılan çerçevelerin üzerine canlı profil oluşturucu verilerini bindirebilir. Bu bindirme yalnızca kamera, profile kanalı kaydedilmiş bir PROFILE_ENABLE=1 aygıt yazılımı (firmware) sürümünü çalıştırırken kullanışlıdır; standart aygıt yazılımında profil oluşturma denetimlerinin hiçbir etkisi yoktur.

  • --firmware PATH; kameranın çalıştırdığı aygıt yazılımı ELF dosyasını yükler, böylece bindirme profil kayıtlarındaki işlev adreslerini insan tarafından okunabilir adlara çözümleyebilir. Bu olmadan bindirme ham adresleri gösterir.

Görüntüleyicideki üç klavye kısayolu profil oluşturucuyu yönetir:

Tuş

Eylem

P

Profil oluşturucu bindirmesini döngüye sokar: kapalı, performans, olaylar.

M

Profil oluşturucu modunu inclusive ve exclusive arasında değiştirir. Inclusive zamanlama, çağrılan işlevin süresini çağırana yükler; exclusive zamanlama bunu yapmaz.

R

Profil oluşturucu sayaçlarını sıfırlar.

13.3.1.1.5. Protokol ayarlama bayrakları

Aşağıdaki bayraklar, openmv.Camera üzerindeki kurucu parametrelerini yansıtır. Varsayılanlar piyasaya sürülen her kamerada çalışır; bunları yalnızca özel bir aygıt yazılımı sürümünü ayıklarken veya olumsuz bağlantı koşullarını simüle ederken geçersiz kılın.

  • --baudrate N; varsayılan 921600 değeridir (USB’yi OpenMV protokolüne geçiren sihirli değer). Yalnızca UART bağlantılarında geçersiz kılın.

  • --timeout SEC; işlem başına saniye cinsinden zaman aşımı (varsayılan 1.0).

  • --max-retry N; bağlantının bozuk ilan edilmesinden önceki yeniden deneme sayısı (varsayılan 3).

  • --max-payload N; bayt cinsinden maksimum yük boyutu (varsayılan 4096). Kamera bu kadarını işleyemezse aşağı doğru pazarlık eder.

  • --crc BOOL; her pakette CRC doğrulamasını etkinleştirir (varsayılan true).

  • --seq BOOL; sıra numarası doğrulamasını etkinleştirir (varsayılan true).

  • --ack BOOL; paket başına onaylamayı etkinleştirir (varsayılan true).

  • --events BOOL; kameradan olay bildirimlerini etkinleştirir (varsayılan true).

  • --drop-rate FLOAT; [0.0, 1.0] aralığında paket düşürme simülasyon oranı (varsayılan 0.0). Yalnızca test amaçlıdır.

CLI’a özgü bir ayar düğmesi:

  • --poll MS; görüntüleyicinin ana döngüsü için milisaniye cinsinden yoklama hızı (varsayılan 4).

13.3.1.1.6. Çeşitli bayraklar

İki bayrak, kamera tarafı davranışını değiştirmeden görüntüleyicinin akışı nasıl sunduğunu ayarlar:

  • --scale N; görüntü yakınlaştırma çarpanı (varsayılan 4). QVGA çerçeveleri 4K bir ekranda okunamayacak kadar küçük olduğunda kullanışlıdır.

  • --raw; kameranın piksel arabelleklerini JPEG ile sıkıştırılmış yerine sıkıştırılmamış göndermesini ister. Donanımsal JPEG desteği olmayan kameralarda kullanışlıdır; Çerçeveleri akışla aktarma belgesi ödünleşimleri ele alır.

13.3.1.1.7. Görüntüleyici ne yapıyor

CLI’ın kendisi bir openmv.Camera programıdır. Bağlanır, çalışan herhangi bir betiği temizlemek için stop() çağırır, betiği exec() ile yükler, streaming() ile akışı etkinleştirir, ardından (ekranı güncellemek için) read_frame(), (betiğin yazdırmalarını yansıtmak için) read_stdout() ve (kayıtlı diğer her kanalın etkinliğini izlemek için) read_status() çağıran bir döngüye girer. Kaynağı cli.py adresindedir ve bir kamerayı uçtan uca yöneten bir uygulama için çalışan bir referanstır.