Lapisan Abstraksi Perangkat Keras Virtual-Cam#

Hal virtual-cam adalah lapisan abstraksi perangkat keras alternatif untuk hal lpc2106-cmucam3 yang memungkinkan pembuatan prototipe perangkat lunak cc3 pada PC. Ini sangat mirip dengan simulator CMUcam3. Hal virtual-cam akan memuat frame yang disimpan dalam sebuah direktori dengan cara yang sama seperti CMUcam3 biasanya memuat frame dari kamera. Semua fungsi cc3 normal kemudian dijalankan pada fifo virtual. Teks debug tambahan akan ditampilkan pada saat run time yang biasanya tidak muncul ketika hal lpc2106-cmucam3 digunakan. Ini memberi tahu pengguna tentang status LED, dan perintah cc3 tingkat rendah yang dipanggil. Input dan output serial diganti dengan input dan output standar aplikasi.

Mengompilasi

Untuk mengompilasi kode untuk virtual-cam, cukup ketik hal=virtual-cam saat Anda menjalankan make. Sebagai contoh:

projects/hello_world :> make hal=virtual-cam

Ini akan menghasilkan file executable hello_world_virtual-cam.

Untuk make clean, Anda tetap perlu menentukan hal. Sebagai contoh untuk membersihkan hello_world:

projects/hello_world :> make hal=virtual-cam clean

Menjalankan Proyek virtual-cam

Virtual-cam akan membaca gambar dari direktori yang ditentukan oleh variabel lingkungan CC3_VCAM_PATH. Path harus relatif terhadap direktori tempat executable virtual-cam dipanggil. Sebagai contoh dalam terminal bash Anda mungkin menjalankan file virtual-cam seperti:

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

Direktori virtual-cam berisi gambar contoh yang akan diumpankan ke frame buffer kamera virtual. Gambar harus dalam format PPM dan diberi nomor "IMGxxxxx.PPM" di mana x mewakili nomor frame. Hal virtual-cam akan membaca gambar setiap kali cc3_load_frame() dipanggil dalam urutan meningkat mulai dari "IMG00000.PPM". Setelah tidak ada lagi gambar yang tersedia, virtual-hal akan panik dan berhenti. Gambar-gambar ini dapat dibuat menggunakan proyek ppm-grab. Secara default, proyek ppm-grab menyimpan gambar mentah, resolusi tinggi, tidak terkompresi dalam format yang benar untuk digunakan oleh hal virtual-cam.

Masalah Simulasi

Salah satu masalah simulasi utama adalah bahwa pengaturan waktu dan input eksternal dari GPIO atau tombol saat ini tidak didukung. Dalam banyak kasus, hal virtual-cam hanya akan selalu mengembalikan true atau false untuk memungkinkan aplikasi Anda melanjutkan. Saat mengompilasi dengan hal virtual-cam, VIRTUAL_CAM akan didefinisikan sehingga aplikasi Anda dapat mengalihkan region eksekusi tertentu berdasarkan hal saat ini. Sebagai contoh, untuk menonaktifkan penungguan tombol saat menggunakan virtual-cam Anda dapat menggunakan:

#ifndef VIRTUAL_CAM
   while(!cc3_read_button());
#endif

atau jika Anda ingin mengaktifkan lebih banyak debug Anda dapat menulis sesuatu seperti:

#ifdef VIRTUAL_CAM
   write_debugging_data_to_file();
#endif