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
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.
Hang einen PC mit Parallel port an deine Anordnung dran. Google nach Tfla berlios und verwende das zur Aufzeichnung
:
Bearbeitet durch User
Zeichne doch mal die Daten auf und "verfüttere" sie an einen PCL-Viewer, diesen z.B.: http://openpcl.sourceforge.net/
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.