Virtual-Cam hardverabsztrakciós réteg#

A virtual-cam hal egy alternatív hardverabsztrakciós réteg az lpc2106-cmucam3 hallal szemben, amely lehetővé teszi a cc3 szoftver prototipizálását PC-n. Ez nagyon hasonló egy CMUcam3 szimulátorhoz. A virtual-cam hal ugyanúgy tölti be a könyvtárban tárolt képkockákat, ahogy a CMUcam3 normál esetben tölti be a képkockákat a kamerából. Ezután minden normál cc3 függvény egy virtuális fifón hajtódik végre. Futásidőben további hibakereső szöveg jelenik meg, amely normál esetben nem jelenik meg az lpc2106-cmucam3 hal használatakor. Ez értesíti a felhasználót a LED állapotokról és a meghívott alacsony szintű cc3 parancsokról. A soros bemenetet és kimenetet az alkalmazás szabványos bemenete és kimenete helyettesíti.

Fordítás

A virtual-camhez való kódfordításhoz egyszerűen gépelje be a hal=virtual-cam parancsot a make futtatásakor. Például:

projects/hello_world :> make hal=virtual-cam

Ez létrehoz egy hello_world_virtual-cam végrehajtható fájlt.

A make clean esetén továbbra is meg kell adnia a halt. Például a hello_world tisztításához:

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

Egy virtual-cam projekt futtatása

A virtual-cam a CC3_VCAM_PATH környezeti változó által megadott könyvtárból olvassa be a képeket. Az elérési útnak ahhoz a könyvtárhoz képest relatívnak kell lennie, ahol a virtual-cam végrehajtható fájlt meghívják. Például egy bash terminálban egy virtual-cam fájlt így futtathat:

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

A virtual-cam könyvtár mintaképeket tartalmaz, amelyeket a virtuális kamera képkockapufferébe táplálnak. A képeknek PPM formátumúaknak kell lenniük, és „IMGxxxxx.PPM” néven számozottnak, ahol az x-ek a képkockaszámot jelentik. A virtual-cam hal minden alkalommal beolvassa a képeket, amikor a cc3_load_frame() meghívásra kerül, növekvő sorrendben, az „IMG00000.PPM”-től kezdve. Amint nincs több elérhető kép, a virtual-hal pánikba esik és leáll. Ezek a képek a ppm-grab projekt használatával hozhatók létre. Alapértelmezés szerint a ppm-grab projekt nyers, nagy felbontású, tömörítetlen képeket tárol a virtual-cam hal által használható helyes formátumban.

Szimulációs problémák

Az egyik fő szimulációs probléma az, hogy az időzítés és a GPIO-ról vagy gombokról érkező külső bemenet jelenleg nem támogatott. Sok esetben a virtual-cam hal mindig igazat vagy hamisat ad vissza, hogy lehetővé tegye az alkalmazás folytatását. A virtual-cam hallal való fordításkor a VIRTUAL_CAM definiálva lesz, hogy az alkalmazása az aktuális hal alapján bizonyos végrehajtási régiókat átkapcsolhasson. Például egy gombnyomásra várakozás letiltásához a virtual-cam használatakor a következőt használhatja:

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

vagy ha több hibakeresést szeretne engedélyezni, írhat valami ilyesmit:

#ifdef VIRTUAL_CAM
   write_debugging_data_to_file();
#endif