Forum: Mikrocontroller und Digitale Elektronik Thermodrucker über usb ansteuern


von oesm59 (Gast)


Lesenswert?

Guten Tag,
ich habe eine POS-Gerät zuhause (mit arm prozessor von atmel)und möchte 
ein "Treiber" auf das Gerät Laden. Wenn ich das Gerät über usb mit dem 
Rechner verbinde, soll es als drucker erkannt werden und mann kann es 
als drucker benutzen. Dazu brauch ich einige lösungsvorschläge und 
programmier ansätze, wie ich das Problem lösen kann.
hoffe ich konnte mein problem erläutern.
wäre dankbar um jede hilfe.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Hardwareseite ist recht einfach -- sorge dafür, daß das Ding über 
eine Centronics-Schnittstelle (Parallel) angesteuert werden kann und 
verwende ein USB-Paralleldruckerkabel. Oder sieh Dir die 
USB-Spezifikation für USB-Drucker an (das ist eine Standardgeräteklasse) 
und implementiere das auf dem "ARM-Prozessor von Atmel", wenn der eine 
USB-Device-Schnittstelle hat.

Auf der PC-Seite sieht's etwas komplizierter aus:

Du willst keinen Windows-Druckertreiber schreiben.

Glaub' mir. Das willst Du nicht.

Also wirst Du dafür sorgen müssen, daß das Ding mit seiner 
"Druckersprache" zu irgendwas kompatibel ist, was von Windows von Hause 
aus mit irgendeinem Treiber unterstützt wird - Epson ESC/P dürfte ein 
sinnvoller Kandidat sein:

http://de.wikipedia.org/wiki/ESC/P

Und das wiederum muss Dein "ARM-Prozessor von Atmel" entsprechend 
umsetzen.

von oesm59 (Gast)


Lesenswert?

Danke für die schnelle Antwort.
Ja das Gerät hat einen Micro-Usb Schnittstelle.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Tja, dann musst Du "nur" zwei Dinge machen:

- die USB-Standardgeräteklasse "Drucker" implementieren
- eine bekannte Druckersprache (wie eben das schon genannte ESC/P) 
nachbilden

und rausfinden, welcher der mit Windows mitgelieferten Treiber sich da 
am besten eignet.

Windows 8.1 bietet da z.B. "Epson ESC/P 9Pin V4 Class Driver" an, der 
könnte möglicherweise passen.

Das ganze kommt natürlich auf die Auflösung und Papierabmessungen des 
Druckers an, aber ESC/P ist recht gut und ausführlich beschrieben.

von oesm59 (Gast)


Lesenswert?

Ich bin mir auch nicht sicher, wie ich mit der Implementierung Anfangen 
soll. :-(
Programmiergrundkenntnisse habe ich.

von Karl H. (kbuchegg)


Lesenswert?

oesm59 schrieb:
> Ich bin mir auch nicht sicher, wie ich mit der Implementierung Anfangen
> soll. :-(
> Programmiergrundkenntnisse habe ich.

Ich fürchte das wird nicht reichen.

von oesm59 (Gast)


Lesenswert?

hmmmm :-(

von Karl H. (kbuchegg)


Lesenswert?

Hat schon mal wer Erfahrung mit derartigen Kabeln gesammelt
http://www.amazon.de/Parallel-Centronics-Adapter-Druckerkabel-36pol/dp/B002CP8U3U
(jetzt nicht unbedingt dieses spezielle)

Sobald man auf Centronics ist, ist die Sache wesentlich leichter.
D.h. allerdings nicht unbedingt, dass man mit Grundkentnissen über die 
Runden kommt. Aber immerhin ist schon mal ein 'unangenehmer' Teil 
erledigt (ja, ich spreche von der USB Anbindung)

: Bearbeitet durch User
von oesm59 (Gast)


Lesenswert?

Die Anbindung und die Kommunikation sollte bei USB bleiben.
auf dem POS-Gerät funktioniert der Drucker.
ich müsste "nur" noch beim "Verbinden" mit dem Rechner über USB, den 
Rechner sagen das das ein "Drucker" ist. Es sollte auch Betriebssystem 
unabhängig sein. Habe bisschen in CUPS-Bib. rumgelesen....nicht viel 
geholfen. :-(

von Karl H. (kbuchegg)


Lesenswert?

oesm59 schrieb:
> Die Anbindung und die Kommunikation sollte bei USB bleiben.

Sollte

Es ist nicht leicht einen fertigen USB-Stack zu finden, in dem bereits 
eine Printer-Class inkludiert ist. Gefunden habe ich bisher nur eine, 
die von Freescale. Bei allen anderen müsste man über eine Custom Class 
gehen und sich die entsprechenden USB-Deskriptoren (oder wie das heisst) 
selber aufbauen. Mit Grundkentnissen wird das nichts.

> ich müsste "nur" noch beim "Verbinden" mit dem Rechner über USB, den
> Rechner sagen das das ein "Drucker" ist.

Genau das sagt der Begriff 'USB Klasse' aus. USB ist standardisiert, wie 
sich ein Gerät beim Host anzumelden hat. Und je nach Geräteklasse, muss 
es da einige Voraussetzungen erfüllen.

Allerdings kenn ich mich mit USB selbst auch nicht wirklich aus. USB ist 
für Hersteller von Geräten super (und je nachdem wen man fragt auch für 
Anwender). Für Bastler ist es ein Albtraum, wenn man nicht auf fertige 
IC zurückgreifen kann und/oder nicht mit einem Standard-HID Device über 
die Runden kommt. SO wie ich das sehe, gibt es aber keine fertigen IC, 
die eine USB Printer Class implementieren.

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

oesm59 schrieb:
> ich müsste "nur" noch beim "Verbinden" mit dem Rechner über USB, den
> Rechner sagen das das ein "Drucker" ist.

Deswegen gibt es die USB-Standardgeräteklasse "USB-Drucker". Die musst 
Du mit Deinem USB-Gerät implementieren.

Dann weiß der Rechner zwar noch nicht, welcher Drucker da ist, aber 
das ist der nächste Schritt.

Ist denn der Drucker --Du nennst das Ding "POS-Drucker"-- mit 
irgendeiner Druckersprache ansteuerbar, oder steuerst Du die 
Schrittmotoren & Druckkopf in Deinem bisherigen Gerät selbst an?

Was genau für ein Drucker ist das denn? Gibts von dem Ding 'ne 
Typenbezeichnung und ein Datenblatt?

von oesm59 (Gast)


Lesenswert?

es ist ein 384 dots thermodrucker (habe kein datenblatt vorhanden).
kann man mit ESC/P ansteuern.

von physiker (Gast)


Lesenswert?

oesm59 schrieb:
> Danke für die schnelle Antwort.
> Ja das Gerät hat einen Micro-Usb Schnittstelle.
Und was passiert, wenn man da den PC anschliesst? Wird irgendwas erkannt 
- welche VID/PID? Wofür ist der Anschluß gedacht - Konfiguration des 
Kassencomputers?

von oesm59 (Gast)


Lesenswert?

physiker schrieb:
> Und was passiert, wenn man da den PC anschliesst? Wird irgendwas erkannt
> - welche VID/PID? Wofür ist der Anschluß gedacht - Konfiguration des
> Kassencomputers?

es wird als laufwerk erkannt. kann man .bat datei hochladen und flashen.
kassensystem.

von oesm59 (Gast)


Lesenswert?

*meinte .bin datei.

von oesm59 (Gast)


Lesenswert?

soll ich aufgeben? :-D
wollte eigentlich nicht so schnell aufgeben...
hmm

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

oesm59 schrieb:
> kann man mit ESC/P ansteuern.

Na, wenn man das kann, ist die Katze schon recht weit gelaufen.

Also musst Du nur noch das USB-Druckerprotokoll auf Deinem Ding 
implementieren (wie bereits mehrfach geschrieben, ist das eine 
USB-Standardgeräteklasse), und das Ding an einen PC anschließen.


Im Gerätemanager wird zunächst ein Standardruckerport auftauchen. Jetzt 
kannst Du mit der Druckerverwaltung einen neuen Drucker einrichten, und 
gibst dort als Port den im Gerätemanager vorgefundenen ein.

Als Druckertreiber dürfte so etwas wie "Epson FX80" o.ä. verwendbar sein 
-- bzw. der von mir schon erwähnte "Generic 9pin ESC/P"-Treiber.

Wenn das dann funktioniert, kannst Du den nächsten Schritt begehen - das 
Anpassen der USB-Deskriptoren, damit das Ding nicht ein 
"Standarddruckerport" ist, sondern einen Namen bekommt, über den Windows 
sich den passenden Druckertreiber selbst 'raussuchen kann.

Aber das ist ohne den ersten Schritt sinnlos.

von Karl H. (kbuchegg)


Lesenswert?

Rufus Τ. Firefly schrieb:
> oesm59 schrieb:
>> kann man mit ESC/P ansteuern.
>
> Na, wenn man das kann, ist die Katze schon recht weit gelaufen.
>
> Also musst Du nur noch das USB-Druckerprotokoll auf Deinem Ding
> implementieren (wie bereits mehrfach geschrieben, ist das eine
> USB-Standardgeräteklasse), und das Ding an einen PC anschließen.

'nur noch'
So wie du das schreibst liest sich das als wäre das ein Spaziergang :-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Karl Heinz schrieb:
> So wie du das schreibst liest sich das als wäre das ein Spaziergang

Nun, ich hätte "nur noch" in Anführungszeichen setzen können.

Andererseits nehme ich an, daß hier ein USB-Stack vorhanden ist, und 
Beispielimplementierungen für USB-Standardgeräteklassen sind im Umfeld 
um USB-Stacks auch des öfteren zu finden, so daß das dem findigen 
Programmierer keine unüberwindbaren Hemmnisse in den Weg legt.

Ein alternativer Lösungsansatz:

Parallelport mit µC nachbilden, käufliches USB-Paralleldruckerkabel dran 
anschließen.

Dann aber würde die USB-Schnittstelle des µC unbenutzt bleiben ...

von oesm59 (Gast)


Lesenswert?

Danke für die hilfreichen Antworten.
Also USB-Stack wird mir zuverfügung gestellt ;-).

von oesm59 (Gast)


Lesenswert?

möchte euch nochmal nerven... ;-)
ich habe jetzt den Treiber für mein "ThermoDrucker" gefunden.
ppd datei ist vorhanden.
kann ich mit den informationen, langsam aber sicher mein Geräteklasse 
"Drucker" implementieren?

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.