Forum: Mikrocontroller und Digitale Elektronik Mal wieder USB-Drucker an einem Atmel


von Marcel K. (viewer)


Lesenswert?

Hallo Forumgemeinde,
ich habe schon einige Beiträge im Internet gelesen aber so richtig 
bescheid weiß ich immer noch nicht!
Gibt es definitiv keine Möglichkeit, USB-Drucker an dem AT90USB1287 
anzuschließen? (Host-Funktion) Ich kenne mich leider nicht mit 
USB-Drucker aus. Gibt es für USB Drucker keine Standardbefehle mit denen 
man z.B. nur die Standard Ascii Zeichen ausgeben kann? Ich würde mich 
sehr freuen wenn mir das jemand erklären könnte was man eigentlich genau 
bräuchte um dann doch einen USB-Drucker anschließen zu können. Gibt es 
keinen Standardtreiber? Wenn ja wie könnte man den denn dann 
integrieren?

Vielen Dank schon mal für eure Antworten.

Schönen Abend noch und viele Grüße

von Εrnst B. (ernst)


Lesenswert?

zum reinen Text-Drucken müsste das schon gehen.

Vorrausgesetzt natürlich, du hast den USB-Host korrekt implementiert 
(Enumeration etc.). Ein einfacher USB-OTG-Host wird vermutlich nicht 
reichen.

von Gast (Gast)


Lesenswert?

> Gibt es für USB Drucker keine Standardbefehle mit denen
> man z.B. nur die Standard Ascii Zeichen ausgeben kann?

Nein, im allgemeinen nicht, du Musst schon den Windows-Druckertreiber 
nachprogrammieren.

von Gast (Gast)


Lesenswert?

Wobei "USB-Drucker" ein sehr schwammiger Begrif ist.

von Hauke R. (lafkaschar) Benutzerseite


Lesenswert?

Dann frage ich mich gerade mal, wie USB Printserver funktionieren, die 
können ja auch nicht für jeden Drucker den "windowstreiber" 
implementieren.

von Εrnst B. (ernst)


Lesenswert?

Drucker die die "Device Class Definition for Printing Devices" von 
USB.org implementieren, sollten sich zumindest im ASCII Modus ansprechen 
lassen:

http://www.usb.org/developers/devclass_docs/usbprint11.pdf

Als Beispielimplementation vielleicht mal die drivers/usb/class/usblp.c 
aus dem Linux-Kernel zu Gemüte führen.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Der AT90USB1287 kann dank OTG als Host mit eingeschränktem 
Funktionsumfang genutzt werden, es sollte daher zumindest theoretisch 
möglich sein, mit USB-Druckern zu kommunizieren.

Das ist eine standardisierte USB-Geräteklasse, ähnlich HID für Mäuse und 
Tastaturen oder MSD für USB-Sticks, Festplatten und Kartenleser.

Wie das Protokoll aussieht, wird unter www.usb.org beschrieben sein.

Das viel größere Problem aber liegt hierin:

> Gibt es für USB Drucker keine Standardbefehle mit denen
> man z.B. nur die Standard Ascii Zeichen ausgeben kann?

Genau die gibt es nicht. Auch nicht für nicht-USB-Drucker, hier kocht 
jeder Hersteller sein eigenes oft undokumentiertes Süppchen. Das ist 
übrigens vollkommen unabhängig von der verwendeten Schnittstelle, ob 
USB, seriell, parallel oder Ethernet.

Zwar gibt es auch hier gewisse Standards, die bei einigen Druckern auch 
tatsächlich verwendet werden, aber auch die unterscheiden sich 
erheblich.

Epson ESC/P2 wird von manchen Tintenstrahldruckern von Epson verstanden, 
dürfte aber mittlerweile sehr selten geworden sein.

PCL verstehen recht viele Laserdrucker, nur die kleinen und günstigen 
Modelle nicht, die eine "GDI" genannte Technik einsetzen.

PostScript wird von anspruchsvolleren Laserdruckern verstanden.

"GDI" ist kein Standard, sondern nur eine Gattungsbezeichnung für zu 
allem vollkommen inkompatiblen Druckern.

Zwar gibt es mit CUPS eine OpenSource-Treiberarchitektur, mit der sehr 
viele Drucker angesteuert werden können, die aber ist ein paar 
Hausnummern zu groß für einen AVR ...

Wenn Du Dich auf einen Druckertyp festlegen kannst, dann hast Du 
hingegen gewisse Chancen einer Umsetzbarkeit, Postscript oder PCL sind 
am besten dokumentiert.

Ein Verhalten, wie es die vor zwanzig Jahren weitverbreiteten 
Nadelratzen an den Tag legten, daß ankommende Zeichen einfach so 
gedruckt werden, das jedenfalls ist ganz und gar nicht mehr zu erwarten.

von Marcel K. (viewer)


Lesenswert?

Hoppla, das sind ja sehr schnelle Antworten, Danke!!!

@ Ernst Bachmann:
Was meinst du mit ein einfacher USB otg Host wird nicht reichen? Gibt es 
denn da unterschiedliche Hostarten? Ich dachte entweder ist der µC 
Device oder Host?
Auf jeden Fall mal Danke für den Link!!! Scheint sehr brauchbar zu 
sein!! Danke!!!

von Michael U. (Gast)


Lesenswert?

Hallo,

@Hauke Radtki: die benutzen meist RAW-Daten, sind also transparent vom 
Windows-Druckertreiber über LAN-Printserver-USB.

Die Datenaufbereitung erledigt weiterhin der lokale Druckertreiber auf 
dem druckenden Rechner.

Gruß aus Berlin
Michael

von Marcel K. (viewer)


Lesenswert?

@ Rufus t. Firefly:
Danke für deine ausführliche Erklärung, weiß ich sehr zu schätzen!!! Ja, 
da liegt mein Problem, ich wollte mich eigentlich auf keinen Drucker 
spezialisieren! Ich weiß jetzt das dies wohl unmöglich ist :o( Ich hätte 
gerne ein mobiles Gerät gebaut das Messwerte speichert. Man sollte es 
dann einfach an einen Drucker anschließen können und der druckt dann die 
aufgezeichneten Daten aus.

Und wenn man einen anderen Baustein verwendet der das Drucken übernimmt? 
Gibt es da eine Möglichkeit der das Drucken übernehmen könnte?? 
Vielleicht ein fertiges Modul? (Ich weiß das ist wohl ne blöde Idee….)

Viele Gruße….

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nun, der "andere Baustein" muss nur CUPS implementieren ... dann kann 
schon auf 'ner ganzen Menge Drucker gedruckt werden.

Oder der "andere Baustein" ist ein Windows-Rechner, auf dem die 
erforderlichen Druckertreiber installiert werden müssen.

Da normalerweise Drucker an Desktoprechner angeschlossen werden, was 
hieltest Du vom Ansatz, Druck_dateien_ in einem standardisierten Format 
(PDF) zu erzeugen, die der geneigte Anwender sich dann auch noch auf dem 
Bildschirm ansehen kann, anstatt tote Bäume damit zu belästigen?

von Εrnst B. (ernst)


Lesenswert?

Es stimmt schon das die alle ihr eigenes Protokoll fahren, aber reiner 
ASCII-Ausdruck hat noch bei allen USB-Druckern, die mir begegnet sind, 
funktioniert.
(Einfach mal unter Linux mit echo irgendwas >/dev/usb/lp0 testen)

Im Zweifelsfall einfach mal unter
http://www.openprinting.org/printer_list.cgi
den Drucker raussuchen, da steht dann genaueres über den Drucker...

von Marcel K. (viewer)


Lesenswert?

@Rufus t. Firefly:
Danke für die Antwort. CUPS ist also eine Art Software. Wie kann man die 
den in einen Baustein bekommen? Sorry, das ist wahrscheinlich zu hoch 
für mich :o)
Also das mit dem PDF-Format muss ich mir mal überlegen!!! Du meinst man 
könnte dann mein mobiles Gerät an einem Rechner anschließen und dann 
bekommt der Rechner ein PDF-File von meinem Gerät geschickt?? Klingt 
auch nicht schlecht!! Wie würde denn dann das PDF erzeugt??

@Ernst Bachmann:
Noch mal Danke für den Link!! Also ich sehe schon ich muss das wirklich 
mal ausprobieren!! Muss aber noch alles aufbauen. Das dauert bestimmt 
noch ne weile.

Danke auf jeden Fall mal für alle Antworten. Jetzt ist da etwas mehr 
Licht im dunklen!!!

von Gast (Gast)


Lesenswert?

Es gibt auch noch solche kleinen Drucker, die in den Supermarktkassen 
die Bons ausdrucken.

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.