Forum: Compiler & IDEs große Zahl mit 2 Taster eingeben


von Benedikt (Gast)


Lesenswert?

Ich bin sicher nicht der erste, der mit wenigen Tasten (in meinem Fall
2) eine große Zahl (0-10000) eingeben muss.
Daher die Frage: Hat jemand sowas schonmal gemacht, und kann mir einen
Tip geben, wie man sowas einigermaßen komfortabel machen kann ?

Vermutlich geht es am besten, wenn die Zahlen bei Anhaltendendem
Tastendruck immer schneller laufen, aber wie macht man sowas ordentlich
? Bei mir wird der dazu erforderliche Code schnell sehr groß...

von JürgenZ (Gast)


Lesenswert?

Moin,

>Vermutlich geht es am besten, wenn die Zahlen bei Anhaltendendem
>Tastendruck immer schneller laufen, aber wie macht man sowas
>ordentlich ?

Deine Idee ist genau das, was häufig in Textanzeigen bzw. Operator
Panels von SPSen zu finden ist. Dein Code dürfte eigentlich nicht so
schnell so groß werden. Eine üblich Lösung ist, dass immer nach einem
Wechsel von 9->0 bzw. 0->9 bei aufwärts- oder abwärtslaufender
Verstellung der "Cursor" eine Dezimalstelle höher springt und die
Zählung beschleunigt. Allerdings sollte dabei die jeweilige Zahl nicht
schneller als 200...500ms wechseln, damit man (größere oder ältere
Menschen haben längere Reaktionszeiten) schnell genug anhalten kann.
Mit losgelassener Taste bleibt die Verstellung zunächst in der
jeweiligen Stelle und springt erst nach ca. 3 sec eine Dezimalstelle
zurück.

Ein Beispiel:

Dein Wert steht auf 0 und du willst 5207 eingeben, die
Autoinkrementzeit ist 500ms.

Taste "aufwärts" drücken und halten:

Dein Zähler läuft nach oben von 0-->9 (10*0,5s),
springt dann auf die Zehnerstelle 10-->90 (10*0,4s)
springt dann auf die Hunderterstelle 100-->900 (10*0,3s)
springt dann auf die Tausenderstelle 1000-->5000 (4*0,2s)

3s warten, dann mit der Taste von 5000 auf 5200 inkrementieren,
3s warten,
3s warten, dann mit der Taste von 5200 auf 5207 inkrementieren
und die "Enter-Taste" drücken.

Gesamtzeit etwa 25...27s ...


Eine andere Variante wäre, dass Du mit der "ENTER"-Taste bei kurzem
Tastendruck die Stelle wechselst, die Du mit der Zifferntaste
verstellen kannst (Cursor der Anzeige müsste dann mit wechseln können).
Erst wenn die ENTER-Taste  ca. 3s lang gedrückt wird, würde der Wert
übernommen.

Bei Eingabe von 5207 würde das ca. 10..12s dauern.


Ggf, könnte ich beides auf einem Butterfly als Demo realisieren, wenn
es was helfen sollte :-) ...

von Peter Dannegger (Gast)


Lesenswert?

Hier mal ein Beispiel:

http://home.tiscali.de/peterd/appl/soft/c51/thclock/index.htm


Durch langes Drücken der rechten Taste während der Anzeige der Weckzeit
kommt man in den Stellmode, die erste Stelle blinkt und mit der linken
Taste kann man Einzel- oder Dauerpulse zum Hochzählen geben.
Wieder rechte Taste gedrückt geht in die nächste Stelle usw. bis man
alle Digits durchhat.

Ich habe allerdings die Stunden und Minuten-Digits zusammengefaßt, d.h.
beim Stellen zählen sie 0..23 bzw. 0..59 hoch.

Als erste im Stellmenü kann man noch die Weckzeit ein- und ausschalten
(Aus = Stunde >23).

Diese einzelnen Menüpunkte macht die Statemachine im main.c51 und der
Anzeigeroutine wird übergeben, welche Digits blinken sollen.


Peter

von Benedikt (Gast)


Lesenswert?

Die Idee nach jedem 9->0 Übergang die Geschwindigkeit zu erhöhen gefällt
mir. Ich habe das bisher immer in einem Timer Interrupt nach einer
kurzen Zeit angefangen Werte hochzuzählen, und so eine Beschleunigung
erreicht.
Was mir an der 9->0 Lösung jedoch nicht gefällt ist, dass die Zahlen
sofort anfangen schnell zu laufen, wenn der letze Zählerstand auf 9
endete.
Ich habe es jetzt ähnlich realisiert: Nachdem der Zähler 10x erhöht
wurde, wird beschleunigt, nach 20x erhöhen wird weiter beschleunigt
usw.

von Peter D. (peda)


Lesenswert?

Das mit dem Tempo erhöhen hatte ich auch zuerst probiert und fands
Scheiße.

Man ist nahe am Endwert und plötzlich rast man drüber hinaus, weil aufs
hohe Tempo gesprungen wurde.
D.h. man braucht dann noch eine zusätzliche Abwärtstaste, um das zuviel
wieder zu korrigieren, ohne nochmal total rum zu müssen.


Die beschriebene Methode, jeweils 1 oder 2 Digits mit konstantem Tempo
zu zählen, finde ich daher viel ergonomischer.


Peter

von Benedikt (Gast)


Lesenswert?

Mit beschleunigen habe ich das so gemeint (aber eben nicht
geschrieben):
Nach 10x erhöhen (also nach etwa 3s) wird die 10er Stelle im 300ms
Rythmus erhöht, nach weiteren 3s dann die 100er Stelle usw.

Eine Abwärtsfunktion habe ich bereits sowiso integriert, da es ziemlich
dumm ist, wenn man -1 haben möchte, aber dazu +9999 machen muss...

von Lanius (Gast)


Lesenswert?

ich finde
5 mal linke taste
rechte taste
7 mal linke taste
rechte taste
3 mal linke taste
rechte taste
8 mal linke taste
rechte taste
9 mal linke taste
für 57389 irgendwie besser

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.