-
ASCII in byte
Hallo,
ich habe mir hier eine Schaltung aufgebaut: AVR mit PS2 Tastatur. Das einlesen klappt. Allerdings bekomme ich das Zeichen als String oder den ASCII-Scancode als Byte. Wenn ich jetzt aber Zahlen eingebe, kann ich mit diesen nicht weiterrechnen da ich sie ja als String geliefert bekomme. Gibt es irgendeine Möglichkeit der "Umrechnung"?
Mit freundlichen Grüssen
-
Wenn ( ( zeichen>47 ) und ( zeichen<58 ) ) dann zifferzeichen = zeichen-48 sonst ...
Wenn du eine Programmiersprache angegeben hättest, dann könnte man sicher auch die entsprechenden Funktionen benennen. Aber mit dem Pseudocode sollte es auch verständlich sein.
sast
-
Wenn dir die Tastatur den Scan-Code schickt, hat das mit dem üblichen ASCII genau nix zu tun. Der sagt nur, welche von den >100 Tasten gedrückt wurde, aber nicht, was auf der Taste draufsteht.
-
Aha sehr interessant. Danke für den Hinweis PicNick.
Hab ich mir doch gleichmal die PS2 Codesache angesehen.
Wenn man die ganzen Make Codes für Shift Caps usw vorher abfragt, bekommt man also bei Scancode 1 einen Make Code 0=0x0B 1=0x02 bis 9=0x0A und anschließend die Break Codes mit 8B, 82 bis 8A. Bei 1 bis 9 ist es also der Make Code - 1 und bei 0 kann man direkt aus 0B eine 0 machen. Damit hat man die Ziffern erschlagen.
Bei Scancode 2 der mit den total unübersichtlichen Codes 0x45, 0x16, 0x1E, 0x26, 0x25, 0x2E, 0x36, 0x3D, 0x3E, 0x46 für 0-9 arbeitet, kann man auch gleich jeden einzeln auswerten. Hier kann man auch den Break code durch die vorgestellten F0 schön rausfiltern
sast
-
-
Perfekt! Wie sast vorgeschlagen habe ih es nun realisiert, mit Erfolg. Danke!
-
Bitte! Das freut mich.
Verrätst du uns auch welcher Vorschlag zum Ziel geführt hat. Ich hatte ja nun mehrere unterschiedliche Sachen erwähnt.
sast
-
Achso, natürlich. Deinen ersten Vorschlag. Die Scancodes der Zahlen 0-9 auf der Tastatur sind 48-57. Also begrenze ich das Ergebnis erstmal auf den Tastenbereich 48-57 und Subtrahiere davon 48. Dann komme ich direkt auf die Zahl mit der ich weiterrechnen kann.
-
ok
Wie hast du denn das Problem der Umsetzung von Scancode auf ASCII gelöst?
Dazu benötigt man ja so eine Art Treiber.
sast
-
Man bekommt den Scancode ja als Byte. Nun habe ich ein Ein-Zeichen-String genommen und das Scancode-Byte dem String zugewisen... Bit für Bit. Gibt man diesen String nun per RS232 oder LCD aus erscheint dort Der Buchstabe/Zahl.