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.
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.
Danke für die schnelle Antwort. Ja das Gerät hat einen Micro-Usb Schnittstelle.
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.
Ich bin mir auch nicht sicher, wie ich mit der Implementierung Anfangen soll. :-( Programmiergrundkenntnisse habe ich.
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.
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
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. :-(
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
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?
es ist ein 384 dots thermodrucker (habe kein datenblatt vorhanden). kann man mit ESC/P ansteuern.
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?
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.
soll ich aufgeben? :-D wollte eigentlich nicht so schnell aufgeben... hmm
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.
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 :-)
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 ...
Danke für die hilfreichen Antworten. Also USB-Stack wird mir zuverfügung gestellt ;-).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.