Hallo
Ik heb het volgend probleem, Als ik de onderstaande regel laat compileren via Proton+ dan worden de getallen goed weergegeven maar de cijfers niet. Dus een 1 t/m 9 komt goed op het LCD display maar A t/m D en *,# komen als een hex waarde op het display. Ik kan niet terug vinden wat ik er aan kan doen. Iemand een suggestie?

Key = Lookupl Var1 , [1 , 4 , 7 , "*" , 2 , 5 , 8 , 0 , 3 , 6 , 9 , "#" , "A" , "B" , "C" , "D"]

Joop

Hoe laat je welke variabele op het LCD komen.
Oftewel: laat eens ietsje meer regels code zien.

Beste hadv

De daarop volgende regel is print at 1,1, dec key,," ".

Joop

Die 'dec' maakt er toch altijd een decimale waarde van? Kan je dat weglaten? Of vervangen voor 'chr' 'char' ofiets.. (Ik ken geen proton)

als je de DEC laat staan kan je volgens mij de "A" weergeven door de decimale waarde 10 in te geven, de "B" door 11 enz...

als je de dec wegdoet zou je volgens mij wel de letters moeten krijgen maar dan zul je jou nummers moeten ingeven als "1", "2", enz..

Denk ik toch :)

Wow, een hele regel extra.

Dec maakt er altijd een getal van. Dat Proton dat in hex weergeeft is zeer onwaarschijnlijk. Het is heel goed mogelijk dat jij denkt dat het een hex waarde is maar dat dat helemaal niet zo is.
"A" heeft de ascii waarde 65, "B", "C" en "D" kun je nu zelf uitrekenen. "#" is 35 en "*" is 42.

Het lijkt er overigens op dat iemand een keypad aan het uitlezen is ;-)

Wat ik vermoed is dat jij op een LCD wilt laten zien welke toets er is ingedrukt. Op een LCD laat je karakters zien die een bijbehorende ascii waarde hebben. Dus een 1 is niet 1 maar ascii 41 oftewel "1".
In die zin heeft MLX helemaal gelijk: maak van de getallen strings en laat DEC weg uit de print instructie.

@MLX: waar haal jij de waarden 10 en 11 vandaan?

@K7Jz: hoewel adviezen altijd op prijs worden gesteld & welkom zijn lijkt het me wijs dat je voorzichtig bent wanneer het gaat over een taal die je niet kent. Je zult mij ook niets horen zeggen over C.

Op 26 september 2013 01:46:59 schreef hadv:
Wow, een hele regel extra.

@MLX: waar haal jij de waarden 10 en 11 vandaan?

ik keek gewoon op de ASCII tabel. Aangezien er gezegd werd dat de Hex waarde op het scherm kwam dacht ik dat Decimaal (10) een Hex van "A" ging weergeven. Dan kun je wel maar gaan tot "F" :D

Dus ik denk dat het idee van strings het makkelijkst is :D

Op 26 september 2013 01:46:59 schreef hadv:

@K7Jz: hoewel adviezen altijd op prijs worden gesteld & welkom zijn lijkt het me wijs dat je voorzichtig bent wanneer het gaat over een taal die je niet kent. Je zult mij ook niets horen zeggen over C.

Ik ben ook voorzichtig, ik meld namelijk dat ik de taal niet ken, ik ken wel een stuk of 5 andere talen en herken zeker een type cast. Als elk forum alleen maar wordt bemand door gediplomeerde authoriteiten dan zou het niet druk zijn, dunkt me. :)

Hallo allemaal
hier nog eens een uitleg wat ik aan het doen ben:
mijn (gedeeltelijk) programma. De rest doet er niet toe.

TOETSLEES:
var1 = InKey
key = LookUpL var1,[1,4,7,"*",2,5,8,0,3,6,9,"#","A","B","C","D"]
DelayMS 50
Print At 1,1, Dec key ," "

inkey is een commando uit de proton handleiding blz 251.
Hiermede wordt een (inderdaad)keyboard afgetast met 16 toetsen.
Om een gelijk te krijgen tussen de ingedrukte toets en wat er op het display komt wordt het Lookup commando (ook blz 251) gebruikt, om dat te bewerkstelligen. Zodra ik de toetsen 0 t/m 9 indruk word dat ook zo op het display doorgegeven maar als ik de toetsen #,*,a,b,c,d indruk dan komt de Hex waarde van die toets het display te staan.

Joop

Heb je het 'dec' in het print commando al geprobeerd weg te laten?

Nogmaals, het lijkt me niet dat er zomaar een hex waarde komt. Welke waarden krijg je voor A/B/C/D/#/*?

@K7Jz: Je hebt het zeker keurig gemeld. Ik zeg het alleen maar omdat er op dit forum ook antwoorden over Proton zijn gegeven die contraproductief waren.
Het mooie aan dit forum is dat er specialisten zitten op allerlei gebieden en het behoorlijk druk is omdat er zoveel kennis aanwezig is en er altijd wel ergens een antwoord verschijnt dat de spijker op zijn kop slaat.

dag adv
Als ik een -kleine a- in die omzet string zet krijg ik 97.
Dit is dus de decimale waarde van de -kleine a- .
als ik daar een -grote A- inzet dan krijg ik 65 op het display. Dus ook de decimale waarde.
zo ook bij de cijfers b, c, d. Dus dat is de standaard ASCII tabel.

Joop

Klopt precies.
En dat is dus GEEN hex, want dan had je 63 of 41 gekregen.

Dus, zoals al door meerderen eerder gezegd...
Als je een "A" op je display wilt hebben moet je DEC weglaten uit de print instructie. En als je een "1" wilt hebben moet je dus een "1" in de parameterlijst zetten.


key = LookUpL var1,["1","4","7","*","2","5","8","0","3","6",9"","#","A","B","C","D"]
Print At 1,1,key ," "

Waar het om gaat is dat de betekenis van de waarde van een byte afhangt van waarvoor je die waarde gebruikt.
Een waarde 65 is gewoon een getal, dat kan van alles zijn (5x13, de helft van 130).
Maar als je die naar een LCD stuurt krijg je een "A", en als je de numerieke waarde 7 naar een LCD stuurt krijg je vermoedelijk bagger.
En als je gaat rekenen is 7 heel wat anders dan "7"