mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Signale eines USB-Druckers (Alarm / Meldedrucker) abgreifen


Autor: Darkwolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Drucker über einen USB-Printerserver umleiten und den Printerserver 
entsprechend manipulieren.
Oder den Drucker manipulieren...

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Darkwolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Frederik Krämer (n0ll4k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommen die Daten die an den Drucker gehen zufälligerweise über den CAN 
Bus rein?

Wäre evtl auch noch eine Möglichkeit...

Autor: Darkwolf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.