computer
computer
computer
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
COMPUTER<br />
Magnetkarten-Leser<br />
Den ISO-Spuren auf der Spur<br />
Entwurf von Karl Bauer<br />
Ob Kreditkarte, EC-Karte, sonstige Bankkarte oder Parkschein: Auch<br />
wenn viele dieser Karten einen Chip enthalten – einen Magnetstreifen finden<br />
Sie immer. Wie man diese Magnetstreifen “abspielen” und dekodieren<br />
kann, erfahren Sie in diesem Beitrag.<br />
Das hier vorgestellte Projekt besteht aus drei<br />
Teilen: dem eigentlichen Magnetkartenleser<br />
zum “Abspielen” der Datenspuren, einem<br />
Interface, das den Magnetkartenleser mit der<br />
seriellen Schnittstelle eines PCs verbindet<br />
und schließlich einer Windows-Software zur<br />
Dekodierung und Anzeige sowie zur Verwaltung<br />
der ausgelesenen Daten.<br />
Durchzugsleser<br />
Als Lesegerät wird ein handelsüblicher<br />
Durchzugsleser verwendet, bei dem die<br />
Magnetkarte von Hand durch einen Schlitz<br />
und damit an einem Lesekopf vorbeigezogen<br />
wird. Im Prinzip funktioniert das genauso wie<br />
bei jedem Datenrekorder mit<br />
Magnetband(kassette), nur mit dem Unterschied,<br />
dass das Magnetband sozusagen auf<br />
die Karte aufgeklebt und nur ein paar Zentimeter<br />
lang ist. Wer sich selbst eine Magnetkarte<br />
basteln möchte, kann tatsächlich ein<br />
Stück Magnetband (wegen der Breite von<br />
einer VHS-Videokassette) passend zuschneiden<br />
und auf eine Plastik- oder Kartonkarte<br />
aufkleben. Allerdings muss man sich dann<br />
einen Magnetkartenschreiber selbst basteln<br />
oder auf einem Elektronik-Schrottplatz besorgen,<br />
denn regulär zu kaufen gibt es so etwas<br />
nur zu “Profi-Preisen” im vierstelligen DM-<br />
Bereich, während ein einfacher Durchzugsleser<br />
schon ab etwa 50 DM zu haben ist. Ein<br />
solcher Leser beinhaltet eine kleine Platine<br />
mit der Wiedergabeelektronik (Verstärker und<br />
Impulsformer) und liefert an seinem Ausgang<br />
bereits ein fertig aufbereitetes TTL-Signal.<br />
Tatsächlich handelt es sich um drei Signale<br />
pro ausgelesener Magnetspur, die in<br />
Bild 1 in zwei Impulsdiagrammen<br />
dargestellt sind: Ein Taktsignal, ein<br />
Datensignal und ein Bereitsignal.<br />
Wie Impulsdiagramm 1 erkennen<br />
lässt, markiert das Bereitsignal CLS/<br />
den Beginn und das Ende des Lesevorgangs<br />
beim Durchziehen einer<br />
Karte, wobei das Ende mit einer Verzögerung<br />
von 50 ms gegenüber dem<br />
letzten Taktimpuls angegeben wird<br />
(CLS wird wieder High). Impulsdiagramm<br />
2 zeigt den Zusammenhang<br />
zwischen Taktsignal (RCP/) und<br />
Datensignal (RDP/). Die Abfrage des<br />
Werts (“1” oder “0”) des Datensignals<br />
erfolgt bei der negativen<br />
Flanke des Taktsignals. Das Datensignal<br />
wird invertiert ausgegeben,<br />
ein Low-Pegel zum Abfragezeitpunkt<br />
bedeutet “1”, ein High-Pegel<br />
“0”. Im Diagramm sind auch die Spezifikationen<br />
der Impulsdauer für Takt<br />
und Daten angegeben, ebenso die<br />
minimale Verzögerung zwischen der<br />
Flanke des Datensignals (Pegel-<br />
30 Elektor 6/2000
wechsel) und dem Abfragezeitpunkt.<br />
Für das Projekt ausgewählt wurde<br />
ein Durchzugsleser des Herstellers<br />
Hopt+Schuler, der sich durch einen<br />
weiten Arbeitstemperaturbereich (-<br />
20 °C bis +60 °C) und eine robuste<br />
Bauweise auszeichnet. Der Hersteller<br />
gibt eine Lebensdauer von<br />
300.000 Betätigungen für den Leser<br />
und 1000 Betätigungen für eine einzelne<br />
Magnetkarte an. Die Karten-<br />
Einführgeschwindigkeit darf zwischen<br />
100 und 1000 mm/s liegen.<br />
Der Leser ist in 1-, 2- oder 3-Spur-<br />
Version erhältlich, wobei die werksseitig<br />
eingestellte Spurlage der ISO-<br />
Norm entspricht (siehe Textkasten).<br />
Für den Anschluss an die Auswerteelektronik<br />
(in unserem Fall das Interface)<br />
ist der Leser mit einem Krimpkontakt-Stecker<br />
versehen, der bei<br />
der 1-Spur-Version 5-polig, bei der 2-<br />
Spur-Version 9-polig und bei der 3-<br />
Spur-Version 12-polig ausgeführt ist.<br />
Auf der Interfaceplatine sind<br />
Anschlussleisten für alle drei Versionen<br />
vorgesehen. Allerdings wurde<br />
für den Test- und Musteraufbau nur<br />
die 1-Spur-Version verwendet, weil<br />
nur diese Ausführung auch einzeln<br />
(über Conrad) erhältlich ist.<br />
Spuranpassung<br />
Der 1-Spur-Leser ist für die ISO-Spur<br />
3 ausgelegt. Allerdings hat der Hersteller<br />
die Möglichkeit vorgesehen,<br />
die Kopfträgerplatte und damit die<br />
Spurlage einzustellen, wie die schematische<br />
Darstellung in Bild 2 zeigt.<br />
Ab Werk ist der Kopf von der Grundplatte<br />
aus gesehen in der höchsten<br />
Stellung, was der erwähnten ISO-<br />
Spur 3 entspricht. Insgesamt kann<br />
die Trägerplatte mit den beiden<br />
Schrauben in fünf Stellungen fixiert<br />
werden. In Bezug auf die ISO-Spuren<br />
sind nur die oberste, die unterste<br />
und die mittlere Stellung relevant.<br />
Die oberste ist ISO-Spur 3, die mittlere<br />
ist Spur 2 und die unterste Spur<br />
1. Wenn immer die gleiche Spur<br />
gelesen werden soll, ist es mit einer<br />
einmaligen Einstellung getan. Für<br />
einen häufigeren Spurwechsel ist<br />
diese Art der Einstellung mit den<br />
beiden Schrauben zu umständlich,<br />
schließlich muss man jedes Mal auch<br />
das Gehäuse öffnen und schließen.<br />
Es gibt aber auch dafür eine praktikable<br />
Lösung: Man lässt den Kopf in<br />
6/2000 Elektor<br />
Impulsdiagram 1 Impulsdiagram 2<br />
RCP<br />
RDP<br />
CLS<br />
ca. 50 ms<br />
RCP<br />
RDP<br />
DATEN:<br />
" 0"<br />
tn<br />
tc =<br />
4<br />
tv<br />
tn<br />
COMPUTER<br />
td<br />
tc<br />
" 1"<br />
" 1"<br />
" 0"<br />
tn<br />
td = tv = min 0,2 µs<br />
2<br />
000054 - 12<br />
Bild 1. Der Ausgang des Lesemoduls liefert drei Signale pro ausgelesener Magnetspur, die<br />
hier in zwei Impulsdiagrammen dargestellt sind.<br />
Magnetkartenkodierung nach ISO-Norm<br />
Die Aufzeichnung der Bits auf den Magnetspuren erfolgt nach der so genannten Aiken-Biphasen-<br />
Methode. Der Schreibkopf wird mit einem Rechtecksignal angesteuert. Bei jedem Polaritätswechsel<br />
(Flanke) ändert sich die Richtung des Stroms durch die Kopfspule und damit die Richtung<br />
der Magnetisierung auf dem Band. Die Aufzeichnung eines Bits erfolgt in einer so genannten<br />
“Bitzelle”, das ist ein Abschnitt auf dem Band, in dem sich bei einer logischen “0” eine Ummagnetisierung,<br />
bei einer logischen “1” aber zwei Ummagnetisierungen befinden. Das heißt: Es<br />
wird bei der Aufzeichnung ein Schreibsignal verwendet, das für eine “0” aus einem Impuls, für<br />
eine “1” aber aus zwei Impulsen besteht, die aber nur halb so lang sind wie der “0”-Impuls. Die<br />
“Bit-Zellen” haben daher die Frequenz des “0”-Signals, das “1”-Signal hat genau die doppelte<br />
Frequenz. Diese einfache Aufzeichnungsmethode hat den Vorteil, dass sich aus dem gelesenen<br />
Signal leicht ein Lesetaktsignal generieren lässt und dass sich die Bits damit unabhängig von der<br />
Lesegeschwindigkeit dekodieren lassen: Eine “1” hat gegenüber einer “0” immer die doppelte<br />
Frequenz, unabhängig davon, wie schnell die Karte am Lesekopf vorbeigezogen wird.<br />
Für die Aufzeichnung und Kodierung von Daten auf Magnetstreifenkarten ist der ANSI/ISO-Standard<br />
(ISO 3554) am weitesten verbreitet. Nach diesem Standard werden auf dem Magnetstreifen<br />
drei Spuren mit einer Breite von 2,8 mm (0,11 Zoll) aufgezeichnet. Wenn man die Karte so<br />
hinlegt, dass sich der Magnetstreifen horizontal unten auf der Karte befindet, dann ist auf dem<br />
Streifen oben die Spur 3, in der Mitte die Spur 2 und unten die Spur 1. Schaut man jetzt auf den<br />
Streifen, so werden die Daten von links nach rechts gelesen wie die Buchstaben einer Textzeile.<br />
Nach ISO ist für jede Spur eine bestimmte Anwendung, Kodierung und Bitdichte (bpi = bits per<br />
inch, Deutsch: Bits pro Zoll) vorgesehen:<br />
Spur 1: 210 bpi, alphanumerisch (7 bit), 79 Zeichen<br />
Spur 2: 75 bpi, BCD (5 bit), 40 Ziffern<br />
Spur 3: 210 bpi, BCD (5 bit), 107 Ziffern<br />
Spur 1 ist demnach die einzige Spur mit Textkodierung (z.B. Name des Karteninhabers). Die<br />
Kodierung erfolgt bei Spur 1 im ANSI/ISO ALPHA-Datenformat, kurz auch als ISO-7-bit-Format<br />
bezeichnet. Bei den Spuren zwei und drei hingegen im ANSI/ISO-BCD-Datenformat, kurz ISO-<br />
5-bit-Format genannt.<br />
Das ISO-7-bit-Format umfasst mit 6 bit pro Zeichen 64 verschiedene Zeichen. In der Reihenfolge<br />
ist das 1. Bit das LSB (least significant bit), das auch als erstes gelesen wird, das 6. Bit ist das<br />
MSB und das 7. Bit ist ein ungerades Paritätsbit. Von den 64 kodierten Zeichen sind 43 Kodes<br />
alphanumerische Zeichen, 3 sind Rahmenzeichen (Startzeichen, Trennungszeichen und Endzeichen)<br />
und 18 Kodes werden für Steuer- und Sonderzeichen verwendet.<br />
Das ISO-5-bit-Format kodiert mit den ersten vier Bits 16 verschiedene Zeichen, das fünfte Bit ist<br />
wieder ein ungerades Paritätsbit. Auch hier ist das erste Bit das LSB, das zuerst gelesen wird.<br />
Von den 16 kodierten Zeichen sind 10 Zeichen numerisch (Ziffern), 3 sind wieder Rahmenzeichen<br />
und weitere 3 sind Steuerzeichen.<br />
Die Aufzeichnung auf einer Spur des Magnetstreifens beginnt immer mit einer Reihe von logischen<br />
Nullen (“0”-bit-Zellen), um das Taktsignal für die Dekodierung zu synchronisieren. Ein<br />
Startzeichen markiert den Anfang der “echten” Daten, damit die Dekodierschaltung im Leser mit<br />
dem Abzählen der Bits (5er- oder 7er-Gruppen) für die Dekodierung der einzelnen Zeichen an<br />
der richtigen Stelle beginnt. Am Ende der Datenbitreihe einer Spur steht ein Endzeichen, dem<br />
ein LRC-Zeichen folgt. LRC bedeutet “Longitudinal Redundancy Check”, dabei handelt es sich<br />
um ein Paritätsbit für die Summe aller Datenbits sämtlicher vorangegangener Zeichen. Mit dieser<br />
“Längsparität” kann auch ein doppelter Bitfehler in einem Zeichen erkannt werden, der mit dem<br />
ungeraden Zeichenparitätsbit nicht erkannt werden kann, weil sich zwei Bitfehler innerhalb eines<br />
Zeichens bei der Paritätsprüfung kompensieren.<br />
31
COMPUTER<br />
Tabelle 1<br />
Jumper-Setting<br />
Jumper auf K2 für 1-Spur-Leser<br />
für Spur gesetzte Jumper<br />
1 1–2 und 7–8<br />
2 3–4 und 9–10<br />
3 5–6 und 11–12<br />
Jumper auf K3 für 2-Spur-Leser<br />
für Spur gesetzte Jumper<br />
1 1–2 und 5–6<br />
2 3–4 und 7–8<br />
Für 3-Spur-Leser sind keine Jumper<br />
erforderlich.<br />
der gelieferten (höchsten) Stellung für Spur 3<br />
und verstellt anstelle der Kopfplatte die Höhe<br />
der Grundplatte im Schlitz mit zwei Plättchen<br />
von etwa 4 mm Dicke. Diese “Unterlagen”<br />
heben die Magnetkarte beim Durchziehen um<br />
4 mm (für Spur 2) beziehungsweise um 8 mm<br />
(für Spur 1) an und ermöglichen so die Einstellung<br />
für alle 3 Spuren ohne “Eingriff” in<br />
5V<br />
5V<br />
K5<br />
K4<br />
K6<br />
K2<br />
1 2<br />
3 4<br />
5 6<br />
7 8<br />
9 10<br />
11 12<br />
K3<br />
1 2<br />
3 4<br />
5 6<br />
7 8<br />
5V<br />
R2<br />
5V<br />
1<br />
8x 10k<br />
2 3 4 5 6 7 8 9<br />
den Durchzugsleser.<br />
Das Interface<br />
Die Schaltung des PC-Interfaces ist<br />
in Bild 3 zu sehen. Sieht man einmal<br />
vom Spannungsregler ab, besteht<br />
das Interface aus nur zwei ICs:<br />
Einem Atmel-AVR-Controller<br />
(AT89C2051) und einem MAX232.<br />
Der AVR-Controller sorgt für die<br />
10<br />
C6<br />
33p<br />
20<br />
C12<br />
X1 X2<br />
5 4<br />
X1<br />
11.0592MHz<br />
100n<br />
RST<br />
1<br />
12<br />
P1.0 IC2<br />
13<br />
P1.1<br />
P3.7<br />
11<br />
14<br />
15<br />
16<br />
P1.2<br />
AT89C2051<br />
P1.3 -12PC P3.5<br />
P1.4<br />
P3.4<br />
9<br />
8<br />
17<br />
P1.5<br />
P3.3<br />
7<br />
18<br />
P1.6<br />
P3.2<br />
6<br />
19<br />
P1.7<br />
P3.1<br />
3<br />
P3.0<br />
2<br />
K1<br />
D1<br />
1N4001<br />
Track 1<br />
Track 2<br />
Track 3<br />
5V<br />
C2<br />
100µ<br />
25V<br />
Umwandlung des vom Durchzugsleser<br />
gelieferten Takt- und Datensignals<br />
in ein serielles Datensignal für<br />
den PC und regelt auch die Kommunikation<br />
über die serielle Schnittstelle,<br />
wobei der MAX232 wie üblich<br />
für die Pegelanpassung zwischen<br />
TTL und RS232 in beide Richtungen<br />
sorgt.<br />
Im Schaltbild und auf der Platine<br />
sind die drei getrennten Anschluss-<br />
32 Elektor 6/2000<br />
C5<br />
33p<br />
C3<br />
100n<br />
IC1<br />
7805<br />
10µ 16V<br />
Markierung<br />
Kopfträgerplatte<br />
(Metall)<br />
R6<br />
8k2 C9<br />
C8<br />
10µ<br />
16V<br />
C7<br />
10µ<br />
16V<br />
C1<br />
2k7<br />
100n<br />
D5 D4 D3<br />
Bild 3. Die Interfaceschaltung, die das Lesemodul mit einem seriellen Port des PCs verbindet.<br />
R5<br />
5V<br />
5V<br />
2k7<br />
R4<br />
2k7<br />
R3<br />
16V<br />
1<br />
C1+<br />
2<br />
V+<br />
16<br />
3<br />
C1–<br />
IC3<br />
11<br />
T1IN T1OUT<br />
14<br />
10<br />
T2IN T2OUT<br />
7<br />
9<br />
R2OUT R2IN<br />
8<br />
12<br />
R1OUT R1IN<br />
13<br />
4<br />
C2+<br />
5<br />
MAX232CP<br />
C2–<br />
V-<br />
15<br />
C4<br />
10µ<br />
16V<br />
2k7<br />
R1<br />
D2<br />
6<br />
Kunststoff-Gehäuse<br />
C11<br />
10µ<br />
C10<br />
10µ<br />
16V<br />
C14<br />
10µ<br />
63V<br />
5V<br />
C13<br />
100n<br />
1<br />
6<br />
2<br />
7<br />
3<br />
8<br />
4<br />
9<br />
5<br />
000054 - 11<br />
K7<br />
000054 - 13<br />
Bild 2. Beim 1-Spur-Leser ist eine Änderung der Spurlage durch Verstellen der<br />
Kopfträgerplatte möglich.
Stückliste<br />
Widerstände:<br />
R1,R3...R5 = 2k7<br />
R2 = 8 x 10 k<br />
R6 = 8k2<br />
Kondensatoren:<br />
C1,C3,C12,C13 = 100 n<br />
C2 = 100 µ/25 V stehend<br />
C4,C7...C11,C14 = 10 µ/16 V<br />
stehend<br />
C5,C6 = 33 p<br />
Halbleiter:<br />
D1 = 1N4001<br />
D2,D3 = Low-current-LED rot<br />
3mm<br />
D4 = Low-current-LED gelb 3mm<br />
D5 = Low-current-LED grün<br />
3mm<br />
IC1 = 7805<br />
IC2 = AT89C2051-12PC (EPS<br />
000054-41)<br />
IC3 = MAX232CP<br />
Außerdem:<br />
K1 = 2-polige Platinenanschlussklemme<br />
5 mm Rastermaß<br />
X1 = 11,0592-MHz-Quarz<br />
K2 = 6-fach Jumper<br />
K3 = 4-fach Jumper<br />
K4 = 9-poliger Pfostenfeldstecker<br />
K5 = 5-poliger Pfostenfeldstecker<br />
K6 = 12-poliger Pfostenfeldstecker<br />
K7 = 9-polige Sub-D-Buchse,<br />
gewinkelt, für Platinenmontage<br />
Magnetkartenleser, z.B. Hopt +<br />
Schuler Typ 832-01320000000<br />
(Best-Nr. 165328-33), siehe Text<br />
Platine EPS 000054-1<br />
Diskette EPS 000054-11 (siehe<br />
Tabelle 2)<br />
(EPS: siehe Serviceanzeige in der<br />
Heftmitte)<br />
leisten zu sehen, die wie eingangs<br />
beschrieben für den Anschluss der<br />
verschiedenen Versionen des Durchzugslesers<br />
von Hopt+Schuler vorgesehen<br />
sind. Für den ausführlich<br />
beschriebenen 1-Spur-Leser ist der<br />
5-polige Steckverbinder K5 vorgesehen.<br />
Die Einstellung der Interfaceschaltung<br />
auf den verwendeten<br />
Durchzugsleser erfolgt mit Jumpern<br />
in den Stiftleisten K2 und K3 entsprechend<br />
der Tabelle 1.<br />
Beim Aufbau auf der einseitigen Platine<br />
in Bild 4 gibt es fast keine<br />
Besonderheiten. Auch wenn es<br />
selbstverständlich ist, sei doch zur<br />
6/2000 Elektor<br />
IC1<br />
C3<br />
C1<br />
Sicherheit an die Kontrolle der Drahtbrücken,<br />
der Polung der Dioden und<br />
Elkos und daran erinnert, dass die<br />
ICs richtig herum eingelötet bzw. in<br />
die Fassung gesteckt werden (müssen).<br />
Ein wirklich wichtiger Punkt ist<br />
die Verwendung einer Sub-D-Buchse<br />
für K7. Wenn bei aus Elektor nachgebauten<br />
Projekten die serielle Verbindung<br />
zum PC nicht zustandekommt,<br />
liegt es nach der Erfahrung<br />
der Redaktion fast immer daran,<br />
dass der geneigte Leser anstelle<br />
einer Buchse einen Sub-D-Stecker<br />
auf die Platine gelötet hat und somit<br />
ein falsches Kabel verwendet.<br />
Für die Stromversorgung der Interfaceschaltung<br />
genügt ein unstabilisiertes<br />
9-V-Steckernetzteil, das nur<br />
etwa 100 mA zu liefern braucht.<br />
Bedienung<br />
H4<br />
H3<br />
K1<br />
R1<br />
D2<br />
D1<br />
D4<br />
C2 D5<br />
C4<br />
000054-1<br />
(C) ELEKTOR<br />
Wenn die Schaltung eingeschaltet<br />
wird, leuchtet die Einschaltkontroll-<br />
LED D2 auf. Die drei LEDs für die<br />
Spuranzeige (D3, D4 und D5) spielen<br />
während der nun folgenden Initiali-<br />
D3<br />
C5<br />
R6<br />
C9<br />
C6<br />
R3<br />
R4<br />
R5<br />
C12<br />
X1<br />
000054-1<br />
IC2<br />
R2<br />
C8<br />
C7<br />
C11<br />
IC3<br />
K2 K3<br />
K5 K4<br />
K6<br />
Bild 4. Das Layout der einseitigen Interface- Platine.<br />
C14 C13<br />
C10<br />
COMPUTER<br />
sierungsphase Lauflicht. Nach dem Ende der<br />
Initialisierung leuchtet nur noch die LED D5,<br />
die anzeigt, dass die Spur 3 ausgewählt<br />
wurde. Wie Bild 5 zeigt, startet auch das<br />
Windows-PC-Programm Magread.EXE mit<br />
Spur 3 als Voreinstellung (default). Durch<br />
Wechseln der Registerkarten “ISO Track 1”<br />
bis “ISO Track 3” kann zwischen den einzelnen<br />
Spuren der Karte umgeschaltet werden,<br />
dies kann durch die LEDs auf der Platine mitverfolgt<br />
werden. Wenn auf eine andere Spur<br />
umgeschaltet wird, ändert sich automatisch<br />
auch das Wortformat auf die nach ISO zugeordnete<br />
Wortlänge von 5 oder 7 Bit. Falls<br />
gewünscht, kann aber in jeder ISO-Spur zwischen<br />
5-bit- und 7-bit Dekodierung umgeschaltet<br />
werden.<br />
Die weitere Bedienung des Programms ist<br />
sehr einfach. Unter dem Menüpunkt Extra<br />
sind zwei Untermenüpunkte vorhanden, die<br />
das komfortable Anzeigen der Daten einer<br />
EC- bzw. Bank-Card und einer Kreditkarte<br />
erlauben. Dazu ist wie folgt vorzugehen: Bei<br />
EC- oder Bank-Cards ist zuerst die ISO-Spur<br />
3 einzulesen, anschließend kann mit der<br />
Funktionstaste “F5” der Karteninhalt wie<br />
Bankleitzahl, Kontonummer, Gültigkeitsjahr,<br />
Gültigkeitsmonat und so weiter in einem<br />
K7<br />
ELEKTOR<br />
(C)<br />
000054-1<br />
H2<br />
H1<br />
33
COMPUTER<br />
eigenen Fenster angezeigt werden. Bei Kreditkarten<br />
ist zuerst die ISO-Spur 1 einzulesen,<br />
dann kann mit der Funktionstaste “F6” der<br />
Karteninhalt wie Kreditkartennummer, Name<br />
des Inhabers, Gültigkeitsjahr und Gültigkeitsmonat<br />
in einem eigenen Fenster angezeigt<br />
werden .<br />
Unter Configuration findet man die Auswahl<br />
des Com-Ports (Com Port Setup), die Einstellung<br />
der Dekodier-Verzögerung (Decode<br />
Delay) und der Sprache für die Programmbedienung<br />
(Deutsch oder Englisch). Mit der<br />
Dekodierverzögerung wird je nach PC die<br />
Zeit zwischen Lesebeginn und Dekodierbeginn<br />
eingestellt. Standardeinstellung ist 2500<br />
ms (2,5 s), diese Zeit ist von 486/33 MHz aufwärts<br />
geeignet. Falls nicht richtig dekodiert<br />
wird (Ausgabe einer Fehlermeldung) ist die<br />
Zeit länger einzustellen.<br />
Das Programm zeigt im Bedienfenster oben<br />
die vom Leser gelieferten Originaldaten (Bitstream)<br />
und unten die dekodierten Daten<br />
(ASCII). Die Dekodierung kann auch durch<br />
Anklicken des Vorhangschloss-Symbols<br />
unten im Bedienfenster gestartet werden.<br />
Wie das am Beispiel einer (aus Datenschutzgründen<br />
fiktiven) Kreditkarte aussieht, ist in<br />
Bild 6 zu sehen. Von links beginnend sind die<br />
ersten beiden Zeichen Startzeichen. Es folgt<br />
die 16-stellige Kartennummer, gefolgt von<br />
einem ^ als Trennzeichen. Weiter folgen<br />
Name und Vorname und nach einem Punkt<br />
Zusatzbuchstaben für die englischsprachige<br />
Anrede. Die vier Ziffern nach dem nächsten<br />
Trennzeichen geben den Gültigkeitszeitraum<br />
der Karte an (hier 9711, also gültig bis 11/97).<br />
Die danach folgenden Ziffern stellen eine verschlüsselte<br />
Kodierung der Kreditkartengesellschaft<br />
dar, die es einem Offline-Kreditkartenleser<br />
ermöglicht, die Kartennummer zu<br />
verifizieren. Mit den Befehlsfeldern unten<br />
links (Save und Open für Originaldaten und<br />
dekodierte Daten) hat man die Möglichkeit,<br />
den Inhalt der Anzeigefelder zu speichern<br />
bzw. wieder zu laden.<br />
Zum Schluss<br />
Wie schon erwähnt, führt die Schaltung nach<br />
dem Anlegen der Stromversorgung einen<br />
optisch sichtbaren Funktionstest durch: die<br />
LEDs der ISO-Spuranzeigen wandern 1 mal<br />
Inhalt der Diskette 000054-11<br />
MAGREAD EXE Windows-Programm<br />
MAGREAD HEX Hex-Datei<br />
MAGREAD ASM Assembler-Datei<br />
INFO TXT Textdatei<br />
COPYRIGHT TXT Textdatei<br />
CONTENTS TXT Textdatei<br />
Bild 5. Das Benutzerinterface des Dekodierprogramms.<br />
hin und her. Ist dies nicht der Fall, ist<br />
die Schaltung auf Fehler zu überprüfen<br />
(Bauteildefekt oder Aufbaufehler).<br />
Funktioniert die Schaltung, so sendet<br />
sie bei Anlegen der Versorgungsspannung<br />
eine Startmeldung<br />
über die serielle Schnittstelle zum<br />
PC. Für mögliche Fehler folgen hier<br />
ein paar Tipps zur Fehlerbehebung.<br />
Fehler: Es erscheinen keine Magnetkartendaten<br />
in der Software:<br />
1. COM-Port-Einstellung in der Software<br />
überprüfen.<br />
2. Das Schnittstellenkabel auf Defekte überprüfen.<br />
3. Die Schaltung auf Defekte überprüfen.<br />
Fehler: Es kommen nur verstümmelte oder<br />
fehlerhafte Daten im PC an:<br />
1. Die Karte wurde nicht “sauber” durch<br />
den Mangetkartenleser gezogen.<br />
2. Der PC (die Schnittstellenkarte) kann mit<br />
Bild 6. Beispiel der dekodierten Daten einer (fiktiven) Kreditkarte.<br />
34 Elektor 6/2000
der Baudrate von 57600 Baud nicht<br />
umgehen => Karte (gegen 16550 UART)<br />
oder PC zum Einlesen der Daten wechseln.<br />
Fehler: Die Software meldetet “Decoding<br />
Error! , Start Sentinel not Found !”:<br />
1. Die Karte wurde nicht “sauber” durch<br />
den Magnetkartenleser gezogen.<br />
2. Die Magnetkarte wurde in der falschen<br />
Richtung durch den Magnetkartenleser<br />
gezogen (Pfeil auf dem Lesemodul beachten)<br />
Software<br />
3. Der Zeitraum zwischen Auslesebeginn<br />
und Dekodierbeginn ist zu kurz (Standardeinstellung<br />
von 2500 ms unter dem<br />
Menüpunkt Konfiguration auf einen höheren<br />
Wert stellen)<br />
4. Die Startmeldung der Schaltung wurde<br />
zum PC übertragen.<br />
000054e<br />
Der Magnetkartenleser liest seine Daten ein und dekodiert diese<br />
dann wie folgt:<br />
Das Programm der Hardwareschaltung wartet in einer Endlosschleife<br />
darauf, dass eine Magnetkarte in den Magnetkartenleser eingeführt<br />
wird. Sobald der Taktausgang des Lesemoduls, das eine<br />
negative Logik hat, auf “Low” wechselt, prüft das Programm in dem<br />
Atmel AT89C2051 Mikrocontroller, ob der Datenausgang des Lesemoduls<br />
einen “High”-Pegel (was einer logischen “0” entspricht)<br />
oder einen “Low”-Pegel hat (was einer Logischen “1” entspricht). Je<br />
nach Logikpegel wird über die serielle Schnittstelle der Schaltung<br />
eine “0” (High Pegel) oder eine “1” (Low Pegel) ausgegeben. Die<br />
serielle Schnittstelle arbeitet mit 57600 Baud, 1 Stoppbit, keine<br />
Parität.<br />
Nach der Ausgabe der “0” oder “1” über die serielle Schnittstelle<br />
wartet das mC-Programm auf einen neuen “Low”-Pegel.<br />
Die Ausgabe erfolgt im Klartext, d.h., es kann mit jedem Terminalprogramm<br />
mit den oben genannten Schnittstelleneinstellungen der<br />
Datenstrom angezeigt werden. Dieser kann z. B. im Terminalprogramm<br />
so aussehen:<br />
000011010000110000010001100100100101010110111100000101001111111<br />
(Ausgewertet: S0123456789E ; S=Startzeichen E=Stoppzeichen).<br />
Das sind die “Rohdaten”, die von der Schaltung zum PC übertragen werden.<br />
6/2000 Elektor<br />
Internet-Adressen:<br />
COMPUTER<br />
Informationen über Magnetkarten findet man bei<br />
www.paulmax.eng.net./indexmag.html<br />
Durchzugsleser findet man einmal beim Hersteller<br />
www.Hopt-Schuler.com<br />
sowie bei www.conrad.de<br />
Die Auswertung findet durch die Software statt. Da die Schaltung nur “Rohdaten” zum PC überträgt, kann sie mit selbst entwickelter<br />
Software universell und auch für besondere, nicht ISO-normgerechte Magnetkartenkodierungen verwendet werden.<br />
Die Software zur Schaltung liest beim Durchziehen der Magnetkarte den Datenstring ein. Nach einer in der Software einstellbaren Zeit,<br />
die das Programm benötigt, bis der serielle Puffer komplett eingelesen und geleert ist, beginnt die Software mit der Dekodierung der von<br />
der Schaltung gelieferten “Rohdaten”. Die Software kann mit ISO-5-bit- und ISO-7-bit-kodierten Magnetstreifen umgehen.<br />
Die Dekodierung der Daten funktioniert folgendermaßen:<br />
Eine Softwareroutine sucht nach dem Startzeichen im “Rohdatenstring”, das bei ISO-5-bit der Bitfolge “11010” und bei ISO-7-bit der Bitfolge<br />
“1010001” entspricht. Ist dieses gefunden, so werden nachfolgend immer 5 bzw. 7 Bit eingelesen und durch eine Softwareroutine<br />
dekodiert. Ein Ausschnitt der ISO-5-bit-Dekodierung aus dem Quelltext ist nachfolgend zu sehen:<br />
function ISODecode_5bit_Coded(InputStr: String): String;<br />
begin<br />
ISODecode_5bit_Coded := ‘?’;<br />
if InputStr = ‘00001’ then ISODecode_5bit_Coded := ‘0’;<br />
if InputStr = ‘10000’ then ISODecode_5bit_Coded := ‘1’;<br />
.......<br />
if InputStr = ‘10011’ then ISODecode_5bit_Coded := ‘9’;<br />
if InputStr = ‘11010’ then ISODecode_5bit_Coded := ‘S’; {Startzeichen}<br />
if InputStr = ‘00111’ then ISODecode_5bit_Coded := ‘’; {Steuerzeichen}<br />
if InputStr = ‘11111’ then ISODecode_5bit_Coded := ‘E’; {Stoppzeichen}<br />
end;<br />
Der ISO-Norm entsprechend sind auf den Spuren 2 und 3 nur numerische und Steuerzeichen vorhanden, deshalb reicht auch eine 5-bit-<br />
Kodierung aus. Auf Spur 1 finden sich numerische, alphanumerische und Steuerzeichen, weswegen eine 7-bit-Kodierung erforderlich ist.<br />
����<br />
����� ���� ���<br />
��� ��<br />
��<br />
����� ������ ��� �<br />
����� ��<br />
�����������<br />
���� ������ ��� �<br />
��<br />
����� ���� ���<br />
��� ��<br />
����<br />
35