Witam.
Posiadam standardowy czytnik kart magnetycznych.
Wyciągnąłem go ze słynnych kiedyś na elektrodzie niemieckich kas fiskalnych z Goleniowa.
Z tego co się dowiedziałem jest to czytnik 2 ścieżki danych na której jest zapisane ok. 40 znaków, 1 znak tworzą 4 bity + 1 bit parzystości.
Wyprowadzenia czytnika GSR-1120-12
Czerwony - VCC (5V)
Czarny - GND
Pomarańczowy - CLK
Brązowy - DATA
Żółty - CS (Card Inserdet)
Znalazłem tez dużo informacji
tutaj.
Poczyniłem kilka programów w Bascomie na ATMegę16, doszedłem do miejsca w którym dostaję ok 40 znaków, lecz za każdym razem (przesuwając tą samą kartą bankomatową) dostaję inny zestaw znaków.
Oto mój program:
Podgląd z okna terminala:
Gdzie robię błąd?
Pozdrawiam
ElektroTME
Dodano po 2 [godziny] 42 [minuty]:
Problem rozwiązała prosta funkcja shiftin
oto kod dla potomnych:
oraz dowód powtarzalnych wyników 2 kart
40 B - 0 0 11 4 2 5 1 6 7 0 0 3 1 8 7 8 7 6 0 13 1 1 1 2 1 2 6 0 0 0 0 0 4 6 9 15 3 0 0 14
40 B - 0 0 11 4 2 5 1 6 7 0 0 3 1 8 7 8 7 6 0 13 1 1 1 2 1 2 6 0 0 0 0 0 4 6 9 15 3 0 0 14
40 B - 0 0 12 1 8 4 6 8 14 0 2 14 6 0 13 0 13 8 2 6 5 4 4 8 4 8 8 2 2 2 2 2 2 8 6 15 15 2 0 14
40 B - 0 0 12 1 8 4 6 8 14 0 2 14 6 0 13 0 13 8 2 6 5 4 4 8 4 8 8 2 2 2 2 2 2 8 6 15 15 2 0 14
40 B - 0 0 12 1 8 4 6 8 14 0 2 14 6 0 13 0 13 8 2 6 5 4 4 8 4 8 8 2 2 2 2 2 2 8 6 15 15 2 0 14
40 B - 0 0 12 1 8 4 6 8 14 0 2 14 6 0 13 0 13 8 2 6 5 4 4 8 4 8 8 2 2 2 2 2 2 8 6 15 15 2 0 14
40 B - 0 0 12 1 8 4 6 8 14 0 2 14 6 0 13 0 13 8 2 6 5 4 4 8 4 8 8 2 2 2 2 2 2 8 6 15 15 2 0 14
Pozdrawiam
Posiadam standardowy czytnik kart magnetycznych.
Wyciągnąłem go ze słynnych kiedyś na elektrodzie niemieckich kas fiskalnych z Goleniowa.
Z tego co się dowiedziałem jest to czytnik 2 ścieżki danych na której jest zapisane ok. 40 znaków, 1 znak tworzą 4 bity + 1 bit parzystości.
Wyprowadzenia czytnika GSR-1120-12
Czerwony - VCC (5V)
Czarny - GND
Pomarańczowy - CLK
Brązowy - DATA
Żółty - CS (Card Inserdet)
Znalazłem tez dużo informacji
tutaj.
Poczyniłem kilka programów w Bascomie na ATMegę16, doszedłem do miejsca w którym dostaję ok 40 znaków, lecz za każdym razem (przesuwając tą samą kartą bankomatową) dostaję inny zestaw znaków.
Oto mój program:
$regfile = "m16def.dat"
$crystal = 16000000
$baud = 57600
Dim Ar(300) As Byte , B As Word , A As Byte
_mdata Alias Pina.0
_mcs Alias Pina.1
_mclock Alias Pina.2
Config Porta = Input
Porta = 255
Declare Sub Cardread
Do
Print " -> "
Do
Loop Until _mcs = 0
Gosub Cardread
Do
Loop Until _mcs = 1
Print B ; " B - "
For A = 1 To B
Print Ar(a) ; " "
Next
Print
Loop
End
Sub Cardread
Dim I As Byte , D As Byte , Bi As Bit , Ss As Bit , Es As Bit
I = 0
D = 0
B = 0
Do
If _mclock = 0 Then
Shift D , Right
Waitus 20
D.4 = Not _mdata
If D = 11 And Ss = 0 Then
I = 0
Ss = 1
Else
Incr I
If I = 5 Then
I = 0
D.4 = 0
Incr B
Ar(b) = D
End If
End If
End If
Do
Loop Until _mclock = 1
Loop Until B = 300 Or _mcs = 1
End Sub
Podgląd z okna terminala:
Gdzie robię błąd?
Pozdrawiam
ElektroTME
Dodano po 2 [godziny] 42 [minuty]:
Problem rozwiązała prosta funkcja shiftin
oto kod dla potomnych:
$regfile = "m16def.dat"
$crystal = 16000000
$baud = 57600
Dim Ar(40) As Byte , B As Word , A As Byte
_mdata Alias Pina.0
_mcs Alias Pina.1
_mclock Alias Pina.2
Config Porta = Input
Porta = 255
Declare Sub Cardread
Do
Print " -> "
Gosub Cardread
Print B ; " B - "
For A = 1 To B
Ar(a) = Not Ar(a) 'negujemy
Shift Ar(a) , Right , 3 'przesuwamy o 3 w prawo
Ar(a).4 = 0 'usuwamy bit parzystości
Print Ar(a) ; " " 'drukujemy do terminala
Next
Print
Loop
End
Sub Cardread
Dim I As Byte , D As Byte , Bi As Bit , Ss As Bit , Es As Bit
I = 0
D = 0
B = 0
Do
Loop Until _mcs = 0
Do
Shiftin _mdata , _mclock , Ar(b) , 7 , 5
Incr B
Loop Until B = 40 Or _mcs = 1
Do
Loop Until _mcs = 1
End Sub
oraz dowód powtarzalnych wyników 2 kart
40 B - 0 0 11 4 2 5 1 6 7 0 0 3 1 8 7 8 7 6 0 13 1 1 1 2 1 2 6 0 0 0 0 0 4 6 9 15 3 0 0 14
40 B - 0 0 11 4 2 5 1 6 7 0 0 3 1 8 7 8 7 6 0 13 1 1 1 2 1 2 6 0 0 0 0 0 4 6 9 15 3 0 0 14
40 B - 0 0 12 1 8 4 6 8 14 0 2 14 6 0 13 0 13 8 2 6 5 4 4 8 4 8 8 2 2 2 2 2 2 8 6 15 15 2 0 14
40 B - 0 0 12 1 8 4 6 8 14 0 2 14 6 0 13 0 13 8 2 6 5 4 4 8 4 8 8 2 2 2 2 2 2 8 6 15 15 2 0 14
40 B - 0 0 12 1 8 4 6 8 14 0 2 14 6 0 13 0 13 8 2 6 5 4 4 8 4 8 8 2 2 2 2 2 2 8 6 15 15 2 0 14
40 B - 0 0 12 1 8 4 6 8 14 0 2 14 6 0 13 0 13 8 2 6 5 4 4 8 4 8 8 2 2 2 2 2 2 8 6 15 15 2 0 14
40 B - 0 0 12 1 8 4 6 8 14 0 2 14 6 0 13 0 13 8 2 6 5 4 4 8 4 8 8 2 2 2 2 2 2 8 6 15 15 2 0 14
Pozdrawiam