Forum: Mikrocontroller und Digitale Elektronik Daten von parallel port aufzeichnen


von Tyler (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Ich habe ein altes Gerät das Daten direkt über einen Parallel Port an 
einen Drucker senden kann. Es ist kein PC. Als Drucker kann man am Gerät 
HP oder Epson auswählen. Meine Vermutung ist dass die Daten im PCL 
Format gesendet werden wenn HP ausgewählt wurde.
Ich möchte den Datenstrom nun mit einem Mikrocontroller aufzeichnen, 
habe also die Pins 1-10 (strobe, db0-7, busy, ack) auf Eingänge gelegt 
und mich bei der Programmierung an das Schema im Anhang gehalten. Bei 
jeder negativen Flanke des Strobe werden die Daten an db0-7 eingelesen. 
Mein Problem ist jetzt dass ich die Daten nicht richtig interpretieren 
kann. Wenn ich davon ausgehe dass die Daten als ASCII kodiert gesendet 
werden, müsste in dem Datenstorm ja vermehrt der escape character (ASCII 
27, 0x1B) auftauchen, da mit ihm ja die einzelnen Befehle eingeleitet 
werden. Ich habe schon mehrere PCL Beispieldateien angeschaut, diese 
fangen auch immer mit dem escape character an.

Ich bekomme als erste Zeichen aber immer mehrere q´s (ASCII 113, 0x71). 
Habe schon mehrere Dinge probiert, LSB MSB getauscht, bits invertiert, 
Nibbles getauscht. Komme aber auf keine Lösung.

Kann mir jemand einen Tipp geben wie ich den Datenstrom richtig 
umwandeln kann. Habe auch schon gelesen dass die Daten im gray code 
kodiert sind. Hat aber auch nicht zum gewünschten Ergebnis geführt.

Oder gibt es in meinem ganzen Vorhaben einen Denkfehler ?

Bin für jeden Tipp dankbar.

Grüße

von G. O. (aminox86)


Lesenswert?

Das scheint mir eine typische Aufgabe für einen Logikanalysator zu 
sein;-)
Dein Versuchsaufbau ist etwas unklar beschrieben:
 a)lauscht der Prozessor nur am Druckerkabel, ist also parallel zum 
Drucker geschaltet oder
 b)soll er die Funktion der Druckersschnittstelle übernehmen, ist also 
das einzige Gerät am anderen Ende des Kabels?
Im letzteren Fall muss der Prozessor den Hardwarehandshake der 
Druckerschnittstelle mit allen Steuersignalen emulieren.
Im ersteren Fall muss der Strobeimpuls beobachtet werden, denn mit der 
0/1-Flanke schreibt das sendende Gerät seine Daten in den Druckerpuffer 
und löst weitere Aktionen des Drückers, wie in der Abbildung gezeigt.

Was die angebliche Umkodierung der Daten angeht, mir ist keine originäre 
Parallelschnittstelle mit diesem Verhalten bekannt. Auch findet idR 
keine Invertierung der Daten statt.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Hang einen PC mit Parallel port an deine Anordnung dran. Google nach

Tfla berlios

und verwende das zur Aufzeichnung

: Bearbeitet durch User
von Frank (Gast)


Lesenswert?

Zeichne doch mal die Daten auf und "verfüttere" sie an einen PCL-Viewer, 
diesen z.B.:

http://openpcl.sourceforge.net/

von Tyler (Gast)


Lesenswert?

Der Controller soll die Aufgabe der Druckerschnittstelle übernehmen. Er 
ist also das einzige Gerät am parallel port. Ich möchte den PCL Code 
dann mit einem Converter in ein pdf umwandeln.
Ich dachte dass die Signalverläufe so wie im Bild dargestellt ausreichen 
um die Schnittstelle zu emulieren. Also Strobe wird auf low gezogen, 
Mikrocontroller ließt das Byte an db0-7 ein und zieht dann den nAck auf 
low. Dann kommt das nächste Byte.

Werde es mal mit dem Logic Analyzer versuchen.

von G. O. (aminox86)


Lesenswert?

Tyler schrieb:
> Werde es mal mit dem Logic Analyzer versuchen.

Ein 2-Kanal-Oszi ist auch gut geeignet, zumindest um Grundfunktion der 
Verbindung zu überprüfen.
Also Emulation.
Hier noch einmal die klaasischen Abläufe des 
Centronics-(Hardware)-Protokolls:
1) Gerät stellt Daten bereit
2) Gerät zieht Strobe auf '0'
3) Drucker sendet Busy '1' (10ms min.)
4) Drucker nimmt Busy zurück
5) Drucker zieht Ack auf '0' (dieser Schritt wird vom klassischen 
Druckerport des PCs idR ignoriert, möglicherweise auch vom Gerät)
6) Drucker nimmt Ack zurück
7) weiter bei 1
Außerdem ist damit zu rechnen, dass das Gerät weitere Statussignale, die 
die korrekte Funktion des Druckers signalieren, auswertet. Vermutlich 
erwartet das Gerät folgende Signalpegel an den entsprechenden Eigängen:
- Paper empty    -> '0' kein Papierende
- Off/On         -> '1' Drucker ist bereit
- Auto Line Feed -> '1' Drucker führt keinen Zeilenvorschub aus
- Error          -> '1' kein Fehler
Zuletzt noch der Hinweis, dass Signal- und Gehäusemasse auf 
verschiedenen Pins liegen.

PS
Der alte Parallelportbaustein 82(C)55 führt in der Betriebsart 1 bzw 2 
das Cenronicsprotokoll völlig selbständig aus. Die erwähnten 
Statussignale müssen allerdings auch hier separat bereitgestellt werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.