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.
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