Hallo liebe µC-Freunde, ich möchte gerne einen "Datagrabber" entwickeln, welcher die Druckdaten abgreift, welche von einem PC an einen Alarm/Meldedrucker gesendet werden. Dieser Drucker wird über die USB Schnittstelle angesprochen. Ich bin schon einige Zeit am überlegen, wie man das realisieren könnte. Über den Parallelport wäre ja nicht so schwer, aber USB... Die gesammelten Daten sollen über ein Netzwerk-Modul (evtl. Fertigbaustein) herausgegeben werden, zunächst würde aber RS232 reichen. Gibt ja einige µC mit USB Funktionalität, aber irgendwie fehlt mir ein Ansatz, ich will nämlich nicht in den PC eingreifen (Software oder Treiber einspielen) Ideen: 1.) Signale D+ / D- einfach abgreifen: Meiner Meinung nach nicht ralisierbar, da die Daten zu schnell durchrauschen, und keine Signale wie beim Parallelport zum Bremsen vorhanden sind (ACK,BUSY). Außerdem sind die Datem NRZI kodiert und haben einen erheblichen Protokoll-Overhead (nicht so rein wie bei LPT). Der µC würde bestimmt nicht schnell genug reagieren. (Interruft Response Time) und der Buffer... 2.) Vom PC in den µC, dort die Daten verarbeiten (RS-232), und wieder raus zum Drucker über USB Hostcontroller Board Z-USB v3.0, welches vom µC angesteuert wird. Problem: Der µC gibt sich nicht als Drucker gegenüber des PC´s aus (Vendor ID), somit wird der Druckertreiber wohl meckern... Jemand eine Idee? Muss ja nicht unbedingt ein µC sein... Darkwolf
Darkwolf schrieb: > 2.) Vom PC in den µC, dort die Daten verarbeiten (RS-232), und wieder > raus zum Drucker über USB Hostcontroller Board Z-USB v3.0, welches vom > µC angesteuert wird. Das wäre ein gangbarer Weg. > Problem: Der µC gibt sich nicht als Drucker gegenüber des PC´s aus > (Vendor ID), somit wird der Druckertreiber wohl meckern... Allerdings kannst Du auch dieses Problem umgehen, indem Du einen µC verwendest, der einen USB-Device-Controller enthält. Auf diesem implementierst Du die Standard-USB-Geräteklasse für Drucker und verwendest (etwas frei am Standard vorbeiimplementiert) die PID/VID-Kombination des Druckers, den Du über einen separaten USB-Host-Controller wie den Vinculum ansteuerst. Wenn Du Dein Gerät geschickt aufbaust, verbindet es sich erst dann mit dem Host-PC, wenn es vom eigenen Hostcontroller mitgeteilt bekommen hat, daß ein Drucker angeschlossen ist, und meldet dessen VID/PID an den PC weiter. Das wäre etwas eleganter, als die VID/PID-Kombination fest in Deine Firmware einzubauen, denn die müsste geändert werden, wenn der Drucker geändert wird. Was Du jedoch beachten musst, bevor Du anfängst, Dinge zu entwickeln: Wird der Protokolldrucker denn überhaupt mit einem zeichenorientierten Protokoll angesteuert oder ist das ein "Windows-Drucker", der Text als Vollgraphik druckt? In letzterem Falle wird die Auswertung von im Druck enthaltenen Texten erheblich komplizierter, weil Du dann auch "mal eben" eine OCR in Deinem µC implementieren müsstest. Was ist das für ein Drucker und was ist das für ein System, an dem der Drucker betrieben wird?
Den Drucker über einen USB-Printerserver umleiten und den Printerserver entsprechend manipulieren. Oder den Drucker manipulieren...
nun der einfachste Weg wäre wohl einen kleinen Filtertreiber zu installieren und die Daten direkt dort abzugreifen. Das setzt allerdings Kenntnisse in der Treiberprog. vorraus. MS hat ein Beispiel im DDK wie das geht. Vorteil: kommt ganz ohne HW aus. Nachteil: ohne Erfahrung mit dem DDK wohl unmöglich in annehmbarer Zeit zu realisieren. Thomas
Das mit dem Filtertreiber wäre eine Möglichkeit, aber ich will nicht in das system eingreifen. Außerdem habe ich mit der Windows Treiberprogrammierung keine Erfahrung. @Rufus t. Firefly Der Drucker ist ein übrigens EPSON EPSON LX-300+II. Das System ist ein HP Computer mit CANBUS Karte, sonst Standard. Suche gerade, was für ein Protokoll der Drucker spricht. OCR kannst du natürlich vergessen :-)
> EPSON LX-300+II.
Das ist ein 9-Nadel-Drucker. Der wird mit hoher Wahrscheinlichkeit nicht
im Vollgraphikmodus drucken (das würde ewig dauern), sondern tatsächlich
nur Text drucken.
Das aber vereinfacht die Angelegenheit ganz erheblich, da der Drucker
auch über andere Schnittstellen als USB verfügt.
Für Dein Projekt benötigst Du nur noch ein USB-zu-Paralleldrucker-Kabel,
das Du mit dem Parallelport ("Centronics-Schnittstelle") des Druckers
verbindest. Dazwischen klemmst Du einen einfachen "Mithörer", der an
folgenden Leitungen der Schnittstelle angeschlossen werden muss:
D0-D7 (Datenleitungen), Strobe und Masse.
Der µC wertet Flanken auf der Strobe-Leitung aus (kann
interruptgesteuert erfolgen) und liest an einem Port den aktuellen
Zustand der Datenleitungen ein.
Et voilà, da sind die Druckdaten. Für jedes übertragene Byte wird einmal
an der Strobe-Leitung gewackelt, so daß Du in Deinem µC problemlos die
Daten auswerten kannst.
Die in den Drucker eingebaute USB-Schnittstelle unterscheidet sich nicht
essentiell von einem USB-zu-Paralleldruckeradapter; sofern es sich um
ein Windowssystem handelt, wird man nur in den Druckereigenschaften
einmal einstellen müssen, daß der Anschluss jetzt halt anders heißt.
Kommen die Daten die an den Drucker gehen zufälligerweise über den CAN Bus rein? Wäre evtl auch noch eine Möglichkeit...
Nein, dadurch wird der PC mit den Unterstationen der Anlage verbunden. Diese melden nur die aktuellen Werte, ob Alarm oder nicht, wird im PC entschieden.
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.