Tja also so einfach kann es manchmal sein...
Code:
' ************************************************************* '
' Proxileser
' Protect Proxileser an Portb
' (b.0=Data, b.2=Clock, b.3=Chipdetect)
'
' ************************************************************* '
'
$crystal = 16000000
$baud = 19200
$regfile = "m32def.dat"
Dim Mc_ar(100) As Byte
Dim Mc_b As Byte
Dim Mc_a As Byte
Dim Rc_x As Byte
Dim Rc_str As String * 8
Dim Rc_binstr As String * 100
Dim Rc_lng As Long
Dim L As Long
Dim X As Byte
Declare Function Recode() As Long
_mport Alias Pinb 'all pins are connected to PINB
_mdata Alias 0 'data line (blue) PORTB.0
_mcs Alias 1 'CS line (yellow) PORTB.1
_mclock Alias 2 'clock line (green) PORTB.2
Config Portb = Input 'we only need bit 0,1 and 2 for input
Portb = 255 'make them high
Do
Cls
Locate 1 , 1
Lcd "BEREIT fuer CHIP"
Readmagcard Mc_ar(1) , Mc_b , 5 'read the data
L = Recode() ' Umwandeln der Daten
Print L ' Ausgabe des Ergebnisses
Wait 3 ' Kurz warten
Loop
End
' *******************************************************************************************
Function Recode() As Long
Rc_binstr = "" ' Den String leeren
For Rc_x = 1 To Mc_b
Rc_str = Bin(mc_ar(rc_x)) ' Die im Array abgelegte Zahlen umwandeln
Rc_str = Right(rc_str , 2) ' Nur die lezten 2 Bit werden benötigt
Rc_binstr = Rc_binstr + Rc_str ' Diese Bits in den String ablegen
Next Rc_x
Rc_binstr = Right(rc_binstr , 32) ' Abschneiden da ein Long 32 Bit hat
Rc_lng = Binval(rc_binstr) ' das ganze in eine Zahl umwandeln
Recode = Rc_lng ' Ermittelter Wert zürückgeben
' wenn die Zahl vom Readmagcard-Befehl in binär umgewandelt wird
' und jedes 2er päärchen einzeln wieder als Zahl dargestellt wird,
' kommst man auf den Bascom Wert.
' Beispiel: 302978763
' binär = (0)1 00 10 00 00 11 11 00 01 01 10 11 00 10 11
' ============================================================
' umcodiert = 1 0 2 0 0 3 3 0 1 1 2 3 0 2 3
End Function
Danke chr-mt für Deinen Tipp
Lesezeichen