Thermodrucker über usb ansteuern

Gast #4157457
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.
Persönliche Seite #4157470
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.
Persönliche Seite #4157544
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.
#4157625
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)
Gast #4157645
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. :-(
#4157658
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.
Persönliche Seite #4157662
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?
Persönliche Seite #4160306
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.
#4160320
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 :-)
Persönliche Seite #4160347
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 ...
Gast #4163043
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?

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.