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