vrijdag 28 maart 2008

LCD afbeelden + touchscreen functionaliteit

Hallo

Het project begint stilaan vorm aan te nemen; de werkende functionaliteit wordt almaar groter. Voor het ogenblik hebben we reeds de volgende functionaliteit:

- Het afbeelden van tekst, lijnen, vierkanten, knopjes, ... op het scherm
- Het afbeelden van een zelfgemaakte bitmap-file met 16-bits kleuren
- Het interpreteren van invoerinfo van het touchscreen

Deze week zijn we er dus in geslaagd om de bestaande broncode van "tslib" (die eigenlijk slechts een klein testprogramma is met beperkte functionaliteit) aan te passen zodanig dat de aanwezige basisfuncties bruikbaar zijn in onze eigen toepassing.

Het afbeelden van tekst, lijnen, vierkanten, ... was relatief eenvoudig in tegenstelling met het afbeelden van de bitmap-file. Het ophalen van de juiste kleurdata uit de bitmap-file is niet vanzelfsprekend en er moet ook rekening gehouden worden met de maximale kleurcapaciteit van het scherm.

Even illustreren:

Een (huidige) standaard bitmap-afbeelding heeft een fileheader, infoheader en een gebied waar de kleurwaarden per pixel opgeslaan zijn. Standaard heeft men echter 24-bits kleuren wat wil zeggen 8 bits per hoofdkleur (RGB). Omdat we echter niet wisten (gebrek aan info) wat de maximale kleurdiepte van het scherm was zijn we dus begonnen met het converteren van de 24-bits kleuren naar een kleurenpalet van 256 kleuren. Het lukte om de afbeelding af te beelden maar door de conversie is er te veel verlies aan kleurinfo en dus ook aan kwaliteit, wat voor ons einddoel niet gewenst is.

We verlegden dus de grens en probeerden het andere extremum, de volledige 24-bits kleuren in één keer afbeelden. Het scherm beschikt echter niet over voldoende kleurdiepte (te weinig geheugen) dus dit bleek onmogelijk.

We vonden dan de gulden middenweg, het afbeelden van een bitmap met 16-bits kleuren, zijnde 2 bytes per pixel, wat tegelijk het maximum blijkt voor ons scherm. De indeling van de kleuren in pixels is als volgt:

bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
kleur: R R R R R GGGGGG B B B B B

Merk op dat groen 1 extra bit krijgt, dit omdat groen beter waarneembaar is door het menselijk oog en bijgevolgd meer varianten krijgt.

We slaagden er naar het eind van deze week ook in om de sturing van het touchscreen te ontrafelen (laden van de juiste modules, opvangen van druk en coordinaten) en zijn nu aan het experimenteren met het verslepen van vierkanten, knopjes, ... .

Volgende week zullen we de beide tests samenvoegen en beschikken we dus over de volledige mogelijkheden van het scherm. Vervolgens zullen we proberen het beeld van de camera op te vangen. Dan wordt het experimeteren met POSIX-threads omdat we later de noodzaak hebben aan een thread om de camera te sturen en een andere die tegelijkertijd de zoomfunctie bestuurt.

Hopelijk blijven de vorderingen aan dit tempo verder gaan!

Vriendelijke groeten uit Brive

Hannes Claerhout
Dieter Walckiers

Geen opmerkingen: