PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : rn-keylcd tastenabfrage, mehrstellige zahl, demoprogramm



tomhut
14.03.2008, 16:15
ein freundliches hallo an alle!!
meine hardware: rn-control 1.4 über i2c mit rn-keylcd 1.2 verbunden, bascom

komme einfach nicht weiter und starte erneut einen hilferuf.

ich möchte z.b. die dreistellige zahl "128" eintippen und dann auch auf dem display sehen. außerdem soll rn-control dann mit der zahl "128" weiterrechnen. mit einstelligen zahlen krieg ich das hin, aber eben nicht mit mehrstellig.

finde so ein programm sollte rn-keylcd auch als demoprogramm beiliegen, da eine solche anwendung meiner meinung nach für rn-keylcd logisch ist.

danke, danke,
andreas (tomhut)



hallo, -ich bins nochmal,
vielleicht kennt ja von euch jemand ein beispielprogramm oder demo, wo aus den nacheinander eingetippten zahlen eine mehrstellige wird? -also aus der getippten 1+2+8 ne 128 wird. ich komm echt nicht weiter.
ich bau übrigens grad ne schrittmotor-betriebene foto-stativ-schwenkeinheit, und brauche die tastatur und das display, um einzutippen wieviel grad geschwenkt werden soll.
grüße,
andreas (tomhut)

tomhut
16.03.2008, 10:08
hallo,
scheint wohl eine echt schwierige aufgabe zu sein. -da hab ich rn-keylcd anscheinend ganz schön überschätzt.
-ich finde tatsächlich nirgends irgendwelche beispielprogramme, wo mein problem nachvollziehbar gelöst wird.
grüße,
andreas (tomhut)

for_ro
16.03.2008, 10:41
Hallo Andreas,
willst du immer eine 3-stellige Zahl eingeben (also 002, 020, 200) oder unterschiedliche Länge (2, 20, 200)?
Wenn du ganz flexible sein willst, hängst du das eingegebene Zeichen an eine String-Variable MyStr an und holst dir den Wert dann mit val(MyStr).
Zeig doch mal den Code für eine Ziffer einzulesen, dann kann man den auf mehrere Ziffern erweitern.

Gruß

Rolf

StevieL
16.03.2008, 10:52
Hallo Andreas,

vielleicht liegt kein Beispielprogramm bei, weil davon ausgegangen wird dass ein so einfaches Problem von jemandem, der sich mit Programmieren beschäftigt, ohne Weiteres gelöst werden kann.

Mein Ansatz wäre: Wert der ersten Taste in eine Variable schreiben. Wenn die nächste Taste gedrückt wird, die Variable mit 10 multiplizieren und den neuen Wert addieren. Beim nächsten Tastendruck wiederholst du das Ganze.
Entweder legst du eine Taste (Enter) fest, nach deren Druck die Variable dann verwendet wird oder du schreibst das Ganze in eine Schleife mit Zähler. Wenn innerhalb einer gewissen Zeit keine Taste mehr gedrückt wird, geht das Programm weiter und die Variable wird verwendet.

tomhut
16.03.2008, 11:05
hallo,
ja! -das hört sich wirklich einfach an! -werd gleich mal ausprobieren.
ich geb bescheid, wenns geklappt hat. -kann aber dauern, da ich gleich weg muss.
vielen vielen dank!

finde aber wirklich, dass zwischen dem standard-demoprogramm "hello world" und den weitern demoprogrammen oft ne riesengroße lücke klafft.

denke ich komme jetzt weiter, -danke

andreas

tomhut
18.03.2008, 10:25
hallo nochmal,
vielen vielen dank für die hilfen!!!!!!!

jetzt klappt alles perfektest! -tja, auch die einfachsten sachen muss man lernen!

andreas

mull
18.03.2008, 10:36
So hab ich es auch gemacht, leider zu spät gesehen.
ICH benutze ein Keypad, per PS/2 angeschlossen am Rn 2650 und dem Display3000 TFT, alles funktioniert wunderbar....



'_____X-Abfrage___________________________________________ ______________________
Do
E = Getatkbd()

Num1x1 = Chr(e)
Num1x = Val(num1x1)
If E > 0 Then Call Lcd_print(num1x1 , 80 , 85 , 1 , 1 , 1 , White , Black)
If E = 0 Then Loop Else Nop

Do
R = Getatkbd()

Num2x2 = Chr(r)
Num2x = Val(num2x2)
If R > 0 Then Call Lcd_print(num2x2 , 89 , 85 , 1 , 1 , 1 , White , Black)
If R = 0 Then Loop Else Nop

Do
U = Getatkbd()
If U = 13 Then Gosub Wert2_x Else Nop
Num3x3 = Chr(u)
Num3x = Val(num3x3)
If U > 0 Then Call Lcd_print(num3x3 , 98 , 85 , 1 , 1 , 1 , White , Black)
If U > 20 Then Gosub Enterx Else Loop

Enterx:
Do
Q = Getatkbd()
If Q = 13 Then Gosub Wert1_x Else Loop


Wert2_x:
Num1x = Num1x * 10
Weite_x = Num1x + Num2x 'Nummx ist der Wert für den X-Vorschub
Gosub Y_abfrage
End


Wert1_x:
Num1x = Num1x * 100
Num2x = Num2x * 10

Numx = Num1x + Num2x
Weite_x = Numx + Num3x 'Nummx ist der Wert für den X-Vorschub
If Weite_x > 150 Then Ueberschreiten Else Nop
Gosub Y_abfrage
End



Vielleicht kann ja jemand noch etwas damit anfangen...