Signale eines USB-Druckers (Alarm / Meldedrucker) abgreifen

Gast #1792391
Lesenswert?
• ▲
▼
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
Persönliche Seite #1792424
Lesenswert?
• ▲
▼
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?
Gast #1792512
Lesenswert?
• ▲
▼
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
Gast #1792530
Lesenswert?
• ▲
▼
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 :-)
Persönliche Seite #1792562
Lesenswert?
• ▲
▼
> 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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.