PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PS2 Tastatur Abfragen



philiph
09.09.2006, 18:55
Also ich habe mir mal anhand der bascom hilfe ein Programm geschrieben um eine PS2 Tastatur abzufragen leider geht das aber nicht müsste nicht nach dem Tastaur initialisiern die Num Taste funktionieren? Oder werden die Leds extra gesteuert?
Kennt vieleicht jemand einen besseren Code?
Mein Code:





$regfile = "m16def.dat"

$crystal = 8000000

$baud = 9600

$hwstack = 32

$swstack = 10

$framesize = 40


Config Keyboard = Pinc.1 , Data = Pinc.0 , Keydata = Keydata


Dim S As String * 12



$serialinput = Kbdinput

Do


Input S
Waitms 200
Print S

Loop

End





Kbdinput:


$asm

push r16

push r25

push r26

push r27




Kbdinput1:

rCall _getatkbd ;

tst r24 ;

breq Kbdinput1 ;

pop r27

pop r26

pop r25

pop r16

$end Asm

'just return

Return

B = Getatkbd()





Keydata:


Data 0 , 0 , 0 , 0 , 0 , 200 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0

Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0

Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0

Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0

Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0

Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0

Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0

Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0



Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0

Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0

Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0

Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0

Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0

Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0

Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0

Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0

Tom K
10.09.2006, 10:26
schau mal unter Samples/ATKBD.bas

Pascal
10.09.2006, 11:53
leider geht das aber nicht

Was geht nicht? Was passiert, wenn du eine normale Buchstabentaste drückst? Funktioniert das dann?



die Num Taste funktionieren? Oder werden die Leds extra gesteuert?

Die Leds werden nicht in der Tastatur selbst angeschalten, sondern über einen Befehl vom Host aus. Wenn du also auf die Num Taste drückst, wird das an den Host gesendet und der muss dann die Led einschalten.

philiph
10.09.2006, 12:43
leider geht das aber nicht

Was geht nicht? Was passiert, wenn du eine normale Buchstabentaste drückst? Funktioniert das dann?

Naja ich bekomme nichts gesendet an meinen PC

Pascal
10.09.2006, 12:58
Naja ich bekomme nichts gesendet an meinen PC

Wie meinst du das genau?

philiph
10.09.2006, 14:37
Eigentlich müsste ich nach der eingabe bzw. eines Tastendrucks auf der Tastatur den Bucchstaben auf dem PC sehen(Terminalprogram)
Das passiert aber nicht!

Stromi
10.09.2006, 22:54
Also wenn du schon Codes aus der Hilfe benuzt, dann aber auch zusammenhängend.
Deine Schleife enthält nicht den Code aus dem Beispiel. Das Beispiel mischt auch Terminal-Funktionen mit der Keyboard-Funktion.
Willst du das auch?
Deine Schleife erwartet Inhalte der Variable S aus der ser. Schnittstelle und nicht aus Keyboard.
Wenn da nicht's kommt kommt auch aud deinem PC nicht's.
Benutze:

Do

B = Getatkbd()

Loop Until B <> 0

Print B

Loop

End
Variable erklären ist noch nötig. Aber, die Hilfe ist dein Freund :-)

philiph
15.09.2006, 19:17
Mit genau dem(ohne Terminalfunktion) in der Hilfe gennanten Code geht es aber auch nicht!!
](*,)


$regfile = "m16def.dat"
$crystal = 8000000
$baud = 9600
$hwstack = 32
$swstack = 10
$framesize = 40
Config Keyboard = Pinc.0 , Data = Pinc.1 , Keydata = Keydata

Dim B As Byte
Main:


B = Getatkbd()

If B > 0 Then
Print B ; Chr(b)
Goto Main
End If

Goto Main
$asm
push r16
push r25
push r26
push r27

Kbdinput1:
rCall _getatkbd
tst r24
breq Kbdinput1
pop r27 ;
pop r26
pop r25
pop r16
$end Asm

Return

B = Getatkbd()


Keydata:

Data 0 , 0 , 0 , 0 , 0 , 200 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0
Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0


Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0

Jon
15.09.2006, 19:27
Diesen Code habe ich aus dem Buch von Claus Kühnel "Programmieren der AVR RISC Mikrokontroller mit BASCOM-AVR".
Sollte eigendlich gehen.


$regfile = "m16def.dat"
$crystal = 8000000
$baud = 9600
$hwstack = 32
$swstack = 10
$framesize = 40
Config Keyboard = Pinc.0 , Data = Pinc.1 , Keydata = Keydata

Dim B As Byte

Print "Eingabetest von PC-AT-Tastatur"

Do
B = Getatkbd() ' Abfrage der Tastatur
If B > 0 Then
Print B ; Chr(b)
End If
Loop
End


Keydata:
' Shift-Taste nicht gedrückt
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0
Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0

' Shift-Taste gedrückt
Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0


Noch viel Spaß beim Experimentieren!!

jon

philiph
16.09.2006, 17:43
Irgendwie klappt das bei mir immer noch nicht ich bekomme mit keinem Code eine Antwort,kann man zu dumm dazu sein? (mann braucht doch keine Pullups oder so?)

Jon
16.09.2006, 18:36
Nicht das ich wüßte.

jon

Jon
16.09.2006, 20:02
Könnte es sein, dass du eine XT-Tastatur hast?
Mein Code geht nur mit einer AT-Tastatur.

jon

philiph
16.09.2006, 20:16
Wie unterscheide ich die ?? Ich habe halt einfach die meines PC's genommen

Jon
17.09.2006, 10:47
Des kann ich dir leider nicht sagen.
Ich würde zum Saturn oder Mediamarkt gehen und mir für 5€ eine neue AT-Tastatur kaufen. Teurer sind die billigsten heutzutage nicht mehr.

jon