Virtual-Cam-laitteistoabstraktiokerros#

virtual-cam hal on vaihtoehtoinen laitteistoabstraktiokerros lpc2106-cmucam3 halille, joka mahdollistaa cc3-ohjelmiston prototypoinnin PC:llä. Tämä on hyvin samankaltainen kuin CMUcam3-simulaattori. virtual-cam hal lataa hakemistoon tallennettuja kehyksiä samalla tavalla kuin CMUcam3 normaalisti lataa kehyksiä kamerasta. Kaikki normaalit cc3-funktiot suoritetaan sitten virtuaalisella fifolla. Suoritusaikana näytetään lisävirheenkorjaustekstiä, jota ei normaalisti näy, kun käytetään lpc2106-cmucam3 halia. Tämä ilmoittaa käyttäjälle LED-tiloista ja kutsutuista matalan tason cc3-komennoista. Sarjatulo ja -lähtö korvataan sovelluksen vakiotulolla ja -lähdöllä.

Kääntäminen

Kääntääksesi koodia virtual-camille, kirjoita yksinkertaisesti hal=virtual-cam, kun ajat make. Esimerkiksi:

projects/hello_world :> make hal=virtual-cam

Tämä luo hello_world_virtual-cam-suoritettavan tiedoston.

Suorittaaksesi make clean, sinun täytyy silti määrittää hal. Esimerkiksi puhdistaaksesi hello_world:

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

virtual-cam-projektin ajaminen

virtual-cam lukee kuvia hakemistosta, joka määritetään CC3_VCAM_PATH-ympäristömuuttujalla. Polun tulisi olla suhteessa hakemistoon, jossa virtual-cam-suoritettava tiedosto kutsutaan. Esimerkiksi bash-päätteessä saatat ajaa virtual-cam-tiedoston näin:

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-hakemisto sisältää esimerkkikuvia, jotka syötetään virtuaalikameran kehyspuskuriin. Kuvien täytyy olla PPM-muodossa ja numeroituna ”IMGxxxxx.PPM”, missä x:t edustavat kehyksen numeroa. virtual-cam hal lukee kuvia sisään joka kerta, kun cc3_load_frame() kutsutaan, kasvavassa järjestyksessä alkaen ”IMG00000.PPM”. Kun enää ei ole kuvia saatavilla, virtual-hal panikoi ja pysähtyy. Nämä kuvat voidaan luoda ppm-grab-projektilla. Oletusarvoisesti ppm-grab-projekti tallentaa raakoja, korkearesoluutioisia, pakkaamattomia kuvia oikeassa muodossa virtual-cam halin käytettäväksi.

Simulaatio-ongelmat

Yksi tärkeä simulaatio-ongelma on, että ajoitusta ja ulkoista syötettä GPIO:sta tai painikkeista ei tällä hetkellä tueta. Monissa tapauksissa virtual-cam-hal vain palauttaa aina true tai false, jotta sovelluksesi voi jatkaa. Kun käännät virtual-cam-halilla, VIRTUAL_CAM määritellään, jotta sovelluksesi voi vaihtaa tiettyjä suoritusalueita nykyisen halin perusteella. Voit esimerkiksi poistaa painikkeen odotuksen käytöstä virtual-camia käytettäessä käyttämällä:

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

tai jos haluat ottaa käyttöön enemmän virheenkorjausta, voisit kirjoittaa jotakin tällaista:

#ifdef VIRTUAL_CAM
   write_debugging_data_to_file();
#endif