Diplomarbeit
Entstehung
Inhalt
Abkürzungen
Einleitung
Recherche
Konzept
Umgebung
Hardware
Software
Funktionsweise
Zusammenfassung
Anhang
Überblick
MUX-Programm
Dienstroutinen
Datalogic
Mitutoyo
Digitrix
Weiterverarbeitung
Software: Datalogic

6.7.2 Die Datalogic-Barcode-Routine

6.7.2.1 Barcode: Erforderliche Interfacekonfiguration

Da es sich um ein RS232-Meßmittel handelt, sind keine Hardware-Konfigurationen erforderlich. Lediglich die ACIA muss programmiert werden. Dies läuft wie folgt ab:

Zuerst wird getestet, ob die ACIA schon programmiert wurde. Nachdem die Dienstroutine ACIAINI die ACIA nach einem Reset oder einem Modulwechsel programmiert hat, wird das Flag ACIA_OK auf $FF gesetzt. Ist das Flag auf $00 (wird von einem Reset oder einem Modulwechsel auf $00 gesetzt), so liegt eine erste Datenanforderung für die Schnittstelle nach einem Reset oder Modulwechsel vor, so dass die ACIA noch programmiert werden muss. Durch Programmieren der Command- und Control-Register der ACIA wird die Schnittstelle auf folgende Übertragungsparameter eingestellt:

Alle Interrupts gesperrt, RTS "High", even Parity, 1 Stoppbit, 7 Databits, 9600 Bd.


6.7.2.2 Barcode: Implementiertes Datenformat

Das Datenformat des Barcode-Lesers ist sehr flexibel, da es nur von den eingelesenen Barcodes abhängt. Gelesen werden also die Barcodes, über die der Lesestift geführt wird. Es findet keine weitere Manipulation der Daten statt. Lediglich die Länge der gelesenen Daten wurde auf 20 Zeichen begrenzt, damit die Lesedaten in dem Terminalprogramm richtig weiterverarbeitet werden können, wo bis jetzt alle Eingabefelder und weiterverarbeitenden Routinen von Barcode-Zeichenketten mit einer Länge nicht größer als 20 Bytes (Zeichen) ausgehen.

6.7.2.3 Barcode: Algorithmus

Zuerst wird über das Command-Register der RTS-Ausgang des Interfaces zur Datenanforderung an den Barcodeleser auf "Low" gelegt. Nun werden solange Zeichen gelesen, bis entweder ein LF (ASCII 10) empfangen wird oder 22 Zeichen gelesen wurden (inclusive CR, LF, also 20 echte Datenbytes). Anschliessend wird der Datenempfang beendet. Wenn der Barcodeleser mehr als 22 Zeichen sendet, so werden ab dem 22. Zeichen zwar alle weiteren von der Schnittstelle empfangen, aber nicht mehr abgespeichert. Das 20. Zeichen wird dann durch ein Ausrufezeichen "!" ersetzt, um anzuzeigen, dass der Barcodeleser mehr als 20 Datenbytes gesendet hatte.

Nun wird im Sende-RAM ein "A" als Kennung, dass die Daten vom Barcode kommen, an den Anfang geschrieben und anschliessend die Barcode-Daten unverändert dahinterkopiert. -Abgeschlossen wird der Barcode-Datenblock wie immer mit einem CR (ASCII 13).

6.7.2.4 Barcode: Fehlerbehandlung, Fehlercodes

Da der Barcode die Dienstroutine READONE zum Lesen eines Zeichens von der RS232-Schnittstelle verwendet, so sind auch alle dort implementierten Fehlercodes gültig. Zusätzlich wurde ein Fehlercode Nr.5 eingebaut, der anzeigt, dass mehr als 20 Datenbytes gelesen wurden.

Hier noch einmal eine Zusammenfassung aller Fehlercodes:

- 1: Timeout: Nach der Datenanforderung kam zwei Sekunden lang kein Signal vom Barcodeleser. Dieser Fehler tritt auf, wenn der Fusstaster gedrückt wird und mit dem Barcode kein Code gelesen wurde, oder wenn die Verbindung zwischen dem Barcodeleser und dem Interface unterbrochen ist.

- 2: Overrun: Das Receiver-Register der seriellen Schnittstelle auf der Interfaceplatine wurde nicht gelesen, während der Barcode weitere Daten nachgeschoben hat. Dieser Fehler sollte niemals auftreten, da das Programm bei einer Baudrate von 9600 Baud schnell genug arbeitet, um die Schnittstelle korrekt zu bedienen.

- 3: Framing: Das Datenformat stimmt nicht. Entweder es fehlen Stoppbit(s) oder Datenbits oder ähnliche Dinge. Meist liegt dann ein Hardwarefehler vor oder die ACIA wurde falsch programmiert (Baudrate...).

- 4: Parity: Die Paritätskontrolle ergab einen Übertragungsfehler. Auch meist eine Hardware-Ursache.

- 5: Es wurden mehr als 22 Zeichen incl. CR,LF empfangen. Die Daten werden mit einem Ausrufezeichen "!" nach dem 19. Zeichen abgeschlossen und der Rest der Daten geht verloren. 22 Zeichen deswegen, weil 20 Zeichen von der 2090 her zugelassen sind und CR, LF nicht als Datenbytes gezählt werden.

Zur Datalogic-Barcode-Routine ein Ablaufdiagramm:

Ablauf Datalogic Barcode-Routine

Abb. 27: Ablaufdiagramm zur Datalogic-Barcode-Lese-Routine

6.7.2.5 Barcode: Erforderliches Kabel, Pinbelegungen

Zum Betrieb des Barcodes muss ein neues Kabel angefertigt werden. Der Stecker am Barcode ist ein 8-poliger DIN-Stecker, an der neuen MUX-Platine wird immer ein 25-polige Sub-D-Stecker verwandt.

Pinbelegung Barcode-Kabel an neue Muxplatine:

Barcode-Stecker

Kabel

25pol. Sub-D Stecker am IF

Pin 1 GND

weiss

GND Pin 13

Pin 2RxD

gelb

TxD Pin 12

Pin 3TxD

rosa

RxD Pin 11

Pin 5CTS

grau

RTS Pin 10

Pin 4RTS

grün

CTS Pin 9

Pin 6+5V

rot

+5V Pin 8



Die Numerierung des Sub-D-Steckers ist hier wie auf dem Prototyp des Messmittelinterfaces aufgeführt. Leider ist diese Numerierung fehlerhaft, da die V.24- Leitungen aufgrund einer Verwechslung nicht auf den der Norm entsprechenden Pins liegen: Die RS232-Signale liegen auf dem Prototyp fälschlicherweise an den Pins 9..13 der 25-poligen Sub-D-Buchse. Bei einer endgültigen Version des Platinenlayouts sollen die Signale normgemäss an die Pins 1 bis 5 gelegt werden.

© 2001 Marcel Sieling, http://www.powerslider.de
   Ich freue mich immer über nette EMails, die ich gerne beantworte.