Virtual-Cam Donanım Soyutlama Katmanı#
virtual-cam hal, cc3 yazılımının bir PC’de prototipini oluşturmaya olanak tanıyan, lpc2106-cmucam3 hal’ine alternatif bir donanım soyutlama katmanıdır. Bu, bir CMUcam3 simülatörüne çok benzer. virtual-cam hal, bir dizinde depolanan kareleri, CMUcam3’ün normalde kameradan kareleri yüklediği şekilde yükleyecektir. Tüm normal cc3 fonksiyonları daha sonra sanal bir fifo üzerinde gerçekleştirilir. lpc2106-cmucam3 hal’i kullanıldığında normalde görünmeyen ek hata ayıklama metni çalışma zamanında görüntülenecektir. Bu, kullanıcıya LED durumlarını ve çağrılan düşük seviyeli cc3 komutlarını bildirir. Seri giriş ve çıkış, uygulamanın standart girişi ve çıkışıyla değiştirilir.
Derleme
virtual-cam için kod derlemek üzere, make çalıştırdığınızda yalnızca hal=virtual-cam yazın. Örneğin:
projects/hello_world :> make hal=virtual-cam
Bu, bir hello_world_virtual-cam yürütülebilir dosyası oluşturacaktır.
make clean yapmak için, yine de hal’i belirtmeniz gerekecek. Örneğin hello_world’ü temizlemek için:
projects/hello_world :> make hal=virtual-cam clean
Bir virtual-cam Projesi Çalıştırma
virtual-cam, CC3_VCAM_PATH ortam değişkeni tarafından belirtilen bir dizinden görüntüleri okuyacaktır. Yol, virtual-cam yürütülebilir dosyasının çağrıldığı dizine göre olmalıdır. Örneğin bir bash terminalinde bir virtual-cam dosyasını şöyle çalıştırabilirsiniz:
projects/hello_world :> ls
hello_world_virtual-cam.exe Makefile main.c my_img_dir
projects/hello_world :> export CC3_VCAM_PATH=my_img_dir
projects/hello_world :> ./hello_world_virtual-cam.exe
virtual-cam dizini, sanal kamera kare arabelleğine beslenecek örnek görüntüler içerir. Görüntüler PPM biçiminde olmalı ve x’lerin kare numarasını temsil ettiği “IMGxxxxx.PPM” olarak numaralandırılmalıdır. virtual-cam hal, cc3_load_frame() her çağrıldığında görüntüleri “IMG00000.PPM”den başlayarak artan sırada okuyacaktır. Daha fazla görüntü kalmadığında, virtual-hal panik yapacak ve duracaktır. Bu görüntüler ppm-grab projesi kullanılarak oluşturulabilir. Varsayılan olarak, ppm-grab projesi ham, yüksek çözünürlüklü, sıkıştırılmamış görüntüleri virtual-cam hal tarafından kullanılacak doğru biçimde depolar.
Simülasyon Sorunları
Başlıca simülasyon sorunlarından biri, zamanlamanın ve GPIO veya düğmelerden gelen harici girişin şu anda desteklenmemesidir. Çoğu durumda, virtual-cam hal, uygulamanızın devam etmesine izin vermek için her zaman true veya false döndürür. virtual-cam hal ile derlerken, uygulamanızın mevcut hal’e bağlı olarak yürütmenin belirli bölgelerini değiştirebilmesi için VIRTUAL_CAM tanımlanacaktır. Örneğin virtual-cam kullanırken bir düğme beklemesini devre dışı bırakmak için şunu kullanabilirsiniz:
#ifndef VIRTUAL_CAM
while(!cc3_read_button());
#endif
veya daha fazla hata ayıklamayı etkinleştirmek isterseniz şuna benzer bir şey yazabilirsiniz:
#ifdef VIRTUAL_CAM
write_debugging_data_to_file();
#endif