06.12.2012 Aufrufe

computer

computer

computer

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!