Forum: Mikrocontroller und Digitale Elektronik Look & Feel einer Tastatur-(Zeit)-Eingabe


von Ralf (Gast)


Lesenswert?

Hi,

ich programmiere gerade eine Eingabe für eine Uhrzeit und frage mich, 
wie das Look&Feel aussehen soll, speziell bei "unlogischen" Eingaben.
Wenn ich die Eingabe aufrufe, wird zuerst die zuletzt eingegebene 
Uhrzeit angezeigt, der Eingabecursor steht logischerweise bei den 
10er-Stunden.

Wenn jetzt beispielsweise die alte Uhrzeit 18:23 Uhr ist, und man möchte 
auf 21:40 Uhr umstellen, hätte man nach dem ersten Tastendruck 28:23 
Uhr, was ja nicht geht.
Wie ist denn nun die (professionelle) Vorgehensweise? Setzt man dann die 
Uhrzeit, wenn das Ergebnis > 23 Std. ist erstmal auf 23, bis die nächste 
Eingabe da ist, oder wie?
Den User "zwingen", in so einem Fall erst die 1er-Stunden einzugeben 
möchte ich eigentlich nicht, aber das zwischen zwei Eingaben ein 
ungültiger Wert da steht, find ich auch unpassend. Bleibt eigentlich nur 
das auf-23-setzen übrig, oder?
Müsste man ja dann genauso machen, wenn die erste Eingabe '2' ist, und 
dann '5' getippt wird.

Und wenn wir schon dabei sind, kann man das denn pauschalisieren, also 
nicht nur auf Zeiteingaben beziehen, sondern auch auf einfache Werte?

Ralf

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Eine Möglichkeit bestünde darin, keine numerischen Eingabe vorzunehmen, 
sondern den Wert durch Bedienung der Cursortasten zu verändern.

Rauf/Runter verändert den momentan selektierten Wert 
(Stunde/Minute/Sekunde), Rechts/Links wählt den jeweiligen Wert aus.

Bei Minuten und Sekunden können auf diese Art und Weise auch Zehner und 
Einer getrennt verstellt werden (0..5 und 0..9).

von holger (Gast)


Lesenswert?

>Wenn jetzt beispielsweise die alte Uhrzeit 18:23 Uhr ist, und man möchte
>auf 21:40 Uhr umstellen, hätte man nach dem ersten Tastendruck 28:23
>Uhr, was ja nicht geht.

Ungültige Eingaben musst du halt abfangen. In diesem Fall würde
ich auf 08:23 umschalten. Die "2" also überspringen.

von Ralf (Gast)


Lesenswert?

@Rufus:

Ja, das wär auch ne Möglichkeit...
Aber da hätt ich ja dann die schöne Matrixtastatur umsonst 
reingepfriemelt :)
Muss mal gucken, wie aufwändig die entsprechende StateMachine zur 
Eingabe wird, aufm Papier ist das momentan ein Riesentrumm, sonst mach 
ichs halt wirklich über Pfeil-Tasten...

@holger:
>>Wenn jetzt beispielsweise die alte Uhrzeit 18:23 Uhr ist, und man möchte
>>auf 21:40 Uhr umstellen, hätte man nach dem ersten Tastendruck 28:23
>>Uhr, was ja nicht geht.
>Ungültige Eingaben musst du halt abfangen. In diesem Fall würde
>ich auf 08:23 umschalten. Die "2" also überspringen.
Ähm... Die "2" wär aber im o.g. Beispiel gewünscht, nur die "8" wär dann 
halt grad im Weg... ;)

Ralf

von Kobaltchlorid (Gast)


Lesenswert?

> Wie ist denn nun die (professionelle) Vorgehensweise?

Was ist für dich "professionell"? Du kannst dir ja ansehen, wie das z.B. 
bei Handys oder in Windows gelöst wird.

Ich finde, das ist reine Geschmackssache. Wenn du für einen Kunden im 
Auftrag programmierst, soll das der Kunde entscheiden und in seinem 
Pflichtenheft festhalten. Wenn du für dich selber oder als Hobby 
programmierst, dann mach es halt so, wie es dir persönlich am liebsten 
wäre.

In einer Menüsteuerung, die ich für mich selber programmiert habe, wird 
die Uhrzeit von links nach rechts numerisch mit Tasten 0-9 eingegeben, 
sämtliche Fehler werden erst nach Bestätigung der gesamten Eingabe (mit 
"OK"-Taste) ausgewertet und dann eine entsprechende Fehlermeldung 
ausgegeben.

Wenn jemand anderer wirklich 38:99 eingeben will, soll er das halt tun. 
Die Eingabe wird dann halt nicht akzeptiert und eine entsprechende 
Fehlermeldung ausgegeben.

Die Version mit den "Rauf"- und "Runter"-Tasten empfinde ich persönlich 
als nervend langsam. Wenn nur einige wenige Tasten zur Verfügung stehen 
ist diese Lösung OK, aber wenn mir sowieso einen Ziffernblock zur 
Verfügung steht, ist mir die normale numerische Eingabe lieber.

von holger (Gast)


Lesenswert?

>>Ungültige Eingaben musst du halt abfangen. In diesem Fall würde
>>ich auf 08:23 umschalten. Die "2" also überspringen.
>Ähm... Die "2" wär aber im o.g. Beispiel gewünscht, nur die "8" wär dann
>halt grad im Weg... ;)

Dann machste halt ein 20:23 draus.
Nichts wird den User mehr verunsichern als eine
ungültige Uhrzeitanzeige.

von Peter D. (peda)


Lesenswert?

Kobaltchlorid wrote:
> Wenn jemand anderer wirklich 38:99 eingeben will, soll er das halt tun.
> Die Eingabe wird dann halt nicht akzeptiert und eine entsprechende
> Fehlermeldung ausgegeben.

Ich denke auch, das ist die beste Lösung.
Bei der Eingabe von 2140 ergibt sich folgende Anzeige:

2 - 00:02
1 - 00:21
4 - 02:14
0 - 21:40

Und nun O.k. drücken. Dann wird bei ungültiger Eingabe kurz " E:rr" 
angezeigt (+ Piepton) und dann wieder die alte Zeit.


Peter

von holger (Gast)


Lesenswert?

>> Wenn jemand anderer wirklich 38:99 eingeben will, soll er das halt tun.
>> Die Eingabe wird dann halt nicht akzeptiert und eine entsprechende
>> Fehlermeldung ausgegeben.

So einen Schrott würde ich sofort entsorgen.
Das gibt nur Auskunft darüber wie übel der
Rest des Programms programmiert wurde.

von Ralli (Gast)


Lesenswert?

Hallo Ralf,

intuitiv ist das doch alles nicht!

Nach der Eingabe von '2' für die Zehner-Stunde ist die '8' in der
Einer-Stunde Unsinn.

LOGISCH, dass ein Nutzer, der die Uhr STELLEN will, keinen Blödsinn
eingeben will. Ist er unaufmerksam, könnte ihm aber ein '?' oder '-'
deutlich machen: Wenn du an dieser markierten Stelle noch was
Vernünftiges eingibst, kann es eine gültige Eingabe werden...

Besteht er auf unsinnige Eingaben, kann man ihn doch immer noch mit dem
alten Wert frustrieren.

Schönen Gruß,
Ralli

von Kobaltchlorid (Gast)


Lesenswert?

> So einen Schrott würde ich sofort entsorgen.
> Das gibt nur Auskunft darüber wie übel der
> Rest des Programms programmiert wurde.

Tja, ich habe dieses Programm auch FÜR MICH geschrieben und ICH will es 
so haben.

Ich würde Programme entsorgen, die mich schon bei der Eingabe 
bevormunden und meine Tastendrücke bereits ummodeln, bevor ich überhaupt 
mit der Eingabe fertig bin. Das empfinde ICH als ÜBEL PROGRAMMIERT.

von Peter D. (peda)


Lesenswert?

holger wrote:

> So einen Schrott würde ich sofort entsorgen.


Aha, Du bist also für die umständliche "Profilösung", wie sie leider in 
fast allen Videorekordern verwendet wird:
Man muß trotz vorhandener 10-er Tastatur mühsam mit dem Up-/Down-Tasten 
rumpfriemeln.

Du wirst lachen, aber ich habe so ein Weckradio, was genau diese oben 
beschriebene benutzerfreundliche Lösung verwendet.
Und ich bin sehr froh darüber, daß es auch noch vernünftig denkende 
Programmierer gibt.


Peter

von holger (Gast)


Lesenswert?

>Aha, Du bist also für die umständliche "Profilösung", wie sie leider in
>fast allen Videorekordern verwendet wird:
>Man muß trotz vorhandener 10-er Tastatur mühsam mit dem Up-/Down-Tasten
>rumpfriemeln.

>2 - 00:02
>1 - 00:21
>4 - 02:14
>0 - 21:40

Dann gib mal 3899 ein. Wenn das bis zur Eingabe 0 funktioniert
hast du Schrott gekauft ;)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Hier prallen offensichtlich zwei Philosophien aufeinander:

Die, die den Benutzer alles mögliche eingeben lässt, dann aber "Fehler!" 
ausgibt.

Und die, die dem Benutzer gar nicht erst die Chance gibt, etwas 
ungültiges einzugeben, und folglich auch nie "Fehler!" ausgibt.

Anhänger der ersten Variante fühlen sich von der zweiten bevormundet, 
Anhänger der zweiten Variante finden die erste unausgereift, veraltet 
und wenig durchdacht.

Sicher, eine Zeiteingabe per Cursortasten vorzuschreiben, wenn ein 
Zehnerblock vorhanden ist, ist grenzwertig.

Die geschilderte Variante des "Auffüllens von rechts" aber hat den 
Nachteil, daß die Gültigkeit des eingegebenen Wertes erst nach der 
Eingabe verifiziert werden kann.

Wird von links nach rechts gefüllt, so können bereits bei der Eingabe 
der einzelnen Stellen nicht zulässige Eingaben gefiltert werden:

Schritt Eingabe   Anzeige
   0              --:--

   1       2      2-:--   Nur 0, 1 und 2 werden angenommen

   2       3      23:--   Wenn die erste Angabe eine 2 war,
                          dann werden nur 0..3, sonst 0..9 zugelassen

   3       5      23:5-   Nur 0..5 werden akzeptiert

   4       6      23:56

Nicht zugelassene Eingaben ließen sich durch eine akustische Rückmeldung 
oder dergleichen quittieren.

Anstelle von - kann in obigem Beispiel auch 0 angezeigt werden, die 
jeweils zu verändernde Stelle blinkt mit ausreichender Frequenz (das 
müssen mehr als 2 Hz sein).

von Kobaltchlorid (Gast)


Lesenswert?

Hier noch ein Beispiel, das ICH als "übel programmiert" empfinde 
(Weckzeit-Eingabe bei meinem Handy):

Ich gehe im Menü auf "Organizer" - "Wecker" - "Weckzeit eingeben".
Anzeige: letzte Weckzeit, z.B. 04:00.

Wenn ich jetzt 6 - 0 - 0 auf der numerischen Tastatur eintippe, erhalte 
ich als Weckzeit 23:00! Das soll nicht bevormundend sein? Ich sage 
sogar, das ist total verblödet.

Der Grund dafür ist, dass zuerst die Stunden eingegeben werden. Nach 
Eingabe 6 - 0 ist das dämliche Handy der Meinung, ich will 60:irgendwas 
eingeben und korrigiert die bereits eingegebene Zeit selbsttätig auf 23 
Uhr. Ich empfinde das als blödsinnig und bevormundend. Das dämliche 
Handy soll mir gefälligst erstmal "zuhören und mich ausreden lassen" 
bevor es seinen Kommentar zu meiner Eingabe abgibt.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das hat man davon, wenn man die wichtigsten aller Nullen weglässt: die 
führenden Nullen.

Und das ist in der Tat ein Beispiel für eine schlechte Implementierung. 
Die von mir geschilderte "von links nach rechts"-Variante würde mit 
dieser Eingabe allerdings auch nicht glücklich werden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Wenn jetzt beispielsweise die alte Uhrzeit 18:23 Uhr ist, und man möchte
> auf 21:40 Uhr umstellen...
Wenn ich einen Nummernblock habe, dann ändere ich nicht eine
bestehende Zahl, sondern gebe eine neue ein.
Ergo bleibt die bereits eingegebene Zahl (18:23) stehen, bis ich die
Anwahl (Enter-) Taste oder eine Zahlentaste drücke. Wenn das 0..2 war,
wird die in die erste Stelle (10er Stunden) eingetragen, der Rest wird
als unbelegt gekennzeichnet. Wenn das 3..9 war, wird auch die
10er-Stunde als ungelegt gekennzeichnet. Aber du brauchst auf jeden Fall
eine Bestätigungs- und Abbruchtaste, weil der ursprüngliche Wert ja
schlagartig verloren ist. Das Beispiel von rufus ist da sehr
anschaulich.

Schau dir mal die Windows-Uhr an:
Dort mußt du den Wert explizit zur Änderung anwählen. Dieses
Bedienkonzept haben schon Millionen Menschen (ziemlich gut) verstanden.
;-)

> Anstelle von - kann in obigem Beispiel auch 0 angezeigt werden
Genau das würde ich nicht machen, denn 0 ist ein gültiges Symbol.

> die jeweils zu verändernde Stelle blinkt mit ausreichender Frequenz
Das muß sein, kein Mensch ändert gerne etwas, wenn er nicht weiß, wo es
gerade gilt.


Das Ändern einer bestehenden Zahl macht nur mit Cursor-Bedienung Sinn:
erst Auswählen, dann Ändern.

EDIT:
zeitliche Reihenfolge im Thread korrigiert ;-)

von Ralf (Gast)


Lesenswert?

Hallo,

vielen Dank an alle für die Antworten. Ich habe mir eure Meinungen 
durchgelesen, und mich quasi für einen gemischten Ansatz entschieden. 
Ich denke, dass, was mir am besten zusagt, wird eine 
von-rechts-nach-links Eingabe sein, aber nicht über die komplette 
Zeitangabe, sondern über die einzelnen Zeiteinheiten, also zuerst die 
Stunden, dann die Minuten, dann die Sekunden. Von der Eingabereihenfolge 
also 21:43:65. Bei jeder Neueingabe wird vorher auf Null gesetzt, ein 
ungültiger Wert kann nicht entstehen, und DAU-Eingaben werden von 
vornherein geblockt.
Ob es mir dann wirklich gefällt, wenn's fertig ist, steht noch aus, das 
ist dann ne andere Sache :)

Nochmals vielen Dank.

Ralf

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.