PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zum Befehl "Readmagcard"



darwin.nuernberg
23.07.2005, 08:07
... hat zwar nichts direkt mit Robotern zu tun,
hoffe aber dass mir der eine oder andere weiterhelfen kann.


Ich versuche einen RFID Transponder auszulesen.
Hierfür habe ich einen r/o leser mit Data-Clock (Magstripe) Protokolll.

http://www.protectid.de/inhalt/bilder/produkte/oem335x264.jpg

Das Bascom - Beispiel "MAGCARD.BAS" funktioniert zwar tadellos,
jedoch sind meine Transponder anders beschriftet als das Resultat liefert.


von Programm bekomme ich das Ergebniss "'100100102003301123023'"
mein Transponder liefert aber eigentlich "302978763" und ist auch so beschriftet.

Wie kann ich den ermittelten Code umsetzten, so dass dieser mit der Beschriftung übereinstimmt.


Der Code 302978763 ist natürlich korrekt und wird auch in anderen systemen so akzepiert.





'--------------------------------------------------------------------------
' (c) 2000-2003 MCS Electronics
' MAGCARD.BAS
' This example show you how to read data from a magnetic card
'It was tested on the DT006 SimmStick.
'--------------------------------------------------------------------------

$crystal = 16000000
$baud = 19200
$regfile = "m32def.dat"


'[reserve some space]
Dim Ar(100) As Byte , B As Byte , A As Byte

'the magnetic card reader has 5 wires
'red - connect to +5V
'black - connect to GND
'yellow - Card inserted signal CS
'green - clock
'blue - data

'You can find out for your reader which wires you have to use by connecting +5V
'And moving the card through the reader. CS gets low, the clock gives a clock pulse of equal pulses
'and the data varies
'I have little knowledge about these cards and please dont contact me about magnectic readers
'It is important however that you pull the card from the right direction as I was doing it wrong for
'some time :-)
'On the DT006 remove all the jumpers that are connected to the LEDs

'[We use ALIAS to specify the pins and PIN register]
_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
Print

Do
Print "Insert magnetic card "; 'print a message
Readmagcard Ar(1) , B , 5 'read the data
Print B ; " bytes received. Code: ";
For A = 1 To B
Print Ar(a); 'print the bytes
Next
Print
Loop


HILFE

chr-mt
23.07.2005, 09:39
Hi,
Keine Ahnung....

Aber wenn du die Zahl 302978763 in binär umwandelst und jedes 2er päärchen einzeln wieder als Zahl darstellst kommst du auf den Bascom Wert.:



302978763 binär = 1 00 10 00 00 11 11 00 01 01 10 11 00 10 11
(0)1=1
00=0
10=2
00=0
00=0
11=3
11=3
00=0
01=1
01=1
10=2
11=3
00=0
10=2
11=3

=102003301123023


Gruß
Christopher

darwin.nuernberg
23.07.2005, 10:13
WOW
sollte das so einfach sein...

muss ich gleich mal ausprobieren.

Danke erst mal.

Melde mich wieder.

darwin.nuernberg
23.07.2005, 16:29
Tja also so einfach kann es manchmal sein...





' ************************************************** *********** '
' 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

avrwalli
23.07.2005, 17:27
Hallo darwin.nuernberg,

darf ich fragen wo Du die Hardware bezogen hast?

mfg
AVRWALLI

m.artmann
23.07.2005, 18:56
Hallo avrwalli,

wo darwin seinen RFID Leser her hat kann ich Dir leider nicht sagen,
aber bei http://www.codatex.com gibt es welche mit RS232 und eigener Logik samt Schaltausgang (Leser 2 bis 4)
bzw für den Anschluß an einen AVR/PIC/C-Controll auch mit seriellem TTL Ausgang (Leser 1).
Zusätzlich wird ein Antennenmodul benötigt.

Das große "C" verkauft die übrigens auch.
Leser (130078) für 19,90 Euro und das Antennenmodul (130183) für 9,95

Gruß
m.tmann

avrwalli
24.07.2005, 09:57
Hallo m.artmann,

Danke für die schnelle Antwort.

mfg
AVRWALLI

darwin.nuernberg
25.07.2005, 19:58
Hallo darwin.nuernberg,

darf ich fragen wo Du die Hardware bezogen hast?

mfg
AVRWALLI

http://www.protectid.de
Den Preis kann ich Dir noch nicht nennen, da ich das Teil von meinem Chef geschenkt bekam (offensichtlich nicht ohne Hintergedanken... ;-))

Aber ich frag mal und hänge den dann hier als Edit rein...

Vorteil entgegen dem Conrad Teil ist vor allem dass kein RS232 verbraucht wird sondern über Data/Clock an einen beliebigen Port angebunden werden kann

und die Abmessung ist auch sehr kompakt.(45x40x8mm)

avrwalli
26.07.2005, 10:05
Hallo darWIN,

Danke für die Antwort, ein Preis interessiert mich natürlich. Welche Transponder benutzt Du? Ich benötige diese kleinen Transponder im Glasröhrchen. Hast Du eine Ahnung, ob man die mit diesem Leser benutzen kann?

Vielen Dank und herzl. Grüße

AVRWalli

darwin.nuernberg
26.07.2005, 19:20
Hallo darWIN,

Danke für die Antwort, ein Preis interessiert mich natürlich. Welche Transponder benutzt Du? Ich benötige diese kleinen Transponder im Glasröhrchen. Hast Du eine Ahnung, ob man die mit diesem Leser benutzen kann?

Vielen Dank und herzl. Grüße

AVRWalli
Minitransponder: Prinzipiell JA da die gleiche Funktionsweise zugrunde liegt.

Probleme könnte es mit der Reichweite (Leseabstand) geben, da die Spule im minitransponder sehr klein ist, muss die Antenne im Leser entsprechend größer sein.

Ich arbeite mit Transpondern im Scheckkarten-Format und im Schlüsselanhänger Format (Antennendurchmesser von 2-3cm) und erziele hierbei mit dem Protect Leser eine max. Lesedistanz von 7 cm.
http://www.aida-kutter.de/images/Neuer_Transponder.jpg

Sogenannte "Long-Range" Leser (für passive Transponder) erzielen bei einer Antennenkantenlänge von ca 30 cm die wahnsinne ultra Reichweite von bis zu gigantischen 20 cm !!!
Wahnsinn oder?

Preis: kann ich Dir nicht sagen, da ich die EK-Preise nicht weitergeben darf und wir keinen Abgabe/Verkauf an privat vornehmen. Kontakte doch Protect direkt. Liegt aber deutlich höher als der von m.artmann erwähnte Preis.

27.07.2005, 07:46
Alles klar. Danke.

mfg
AVRWalli

dack
11.09.2005, 10:41
Guten Tag will ich ein eeprom hinzufügen externes i2c, und eine Tastatur sind 12 Anschläge am Magcard-Programm je angehend, oder wenn Sie Programme haben, wie magcard in einer anderen Sprache schreiben wie BASIC, lasse ich Ihnen meine Adresse Desmarich@yahoo.de Merci Ihrer Hilfe

darwin.nuernberg
06.01.2006, 20:25
hi darwin.nuernberg,

habe gelesen dass du erfahrung mit dem magstripe protokoll (ttl) hast. link (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=11060)
könntest du mir vielleicht helfen dabei?

kann leider nicht programmieren..

besitze ein magnetkopf (ttl) für 2 spuren den ich gerne verwenden möchte.

pins: 2x clock, 2x data, 1x cardpresend, 1x gnd und 1x power

möchte jetzt halt dass beide spuren gleichzeitig gelesen werden. die ausgabe soll wie bei dir im projekt im bitstream (011010110usw.) sein.

wäre dir sehr dankbar wenn du mir dabei helfen könntest. suche schon länger nach jemanden der mir hilft.

bezahlung ist auch kein problem für die zeit die du opferst ;)

danke

odd


Also erst mal Hallo,

Ich hoffe das dies eine seriöse Anfrage ist,
da ich in dieser Beziehung auch nicht der absolute Freak bin,
lege ich Deine Mail an mich mal öffentlich,
eventuell kann ja der eine oder andere seinen Beitrag dazu leisten.

Da ich mein Ziel mit der Transponder Technologie erreicht habe und es auch so funktioniert wie ich wollte und das Projekt erstmal (erfolgreich) abgeschlossen habe, kümmere ich mich nicht mehr darum.


Das Magstrip Protokoll wird direkt von Bascom unterstüzt.
Benötigte Signale sind Data,Clock,und CI (Card Insert).

Hierzu ist anzumerken: mit dem Befehl wird nur eine Spur ausgewertet.

Da ich keine Magnetkarten sondern Proximity Transponder auswerte (nur eine pseudo Datenspur) hat mir das gereicht.

Im Datenblatt zum Duchzugsmagnetleser (Conrad) ist zu entnehmen, dass für jede Spur eingene DATA/CLOCK Signale ausgegeben werden.

Dafür ist Bascom offensichtlich nicht ausgelegt.

Da Du die Spuren simultan auswerten willst könnte man eigentlich nur für jede Spur einen eigenen AVR verwenden welche dann z.B. über I2C (TWI) oder RS485 an einen weiteren (master) AVR das Ergebnis liefern.

Zugegeben etwas aufwendig, aber was besseres fällt mir momentan nicht ein.


Alles weitere ist hier im Roboternetz öffentlich nachzulesen.
Leider kann ich Dir hierzu nicht mehr helfen.

EDIT:
PS Programmieren musst Du ja eigentlich nicht können, das Programm ist ja hier. Nur anpassen an den entsprechenden Port musst Du es noch.