Druck direkt auf Ethernet-Drucker mit 'raster-Modus': müssen grundlegende Hinweise
Habe ich stolperte über ein problem Weg über mein Fachgebiet, und ich habe nicht einen mentor zu wenden, um Hilfe mit diesem.
Habe ich einen Bon-Drucker brauche ich, um eine Schnittstelle mit, über eine iOS-app. Der Drucker befindet sich im selben Netzwerk wie das Gerät(s), also ich kann es unterstützt durch "Line-Mode Befehle"
Was ich tun möchte ist, halten Sie die code habe ich schon, das funktioniert cross-Plattform – d.h. es ist ein UIView/NSView, und wenn Sie nicht vertraut mit OS X/iOS, es ist nur ein standard-Vanille-Blick, den ich leisten kann, in PDF/PNG-Formate. Zum Glück hat der Drucker eine "raster-Grafik" - Modus, der das zu sein scheint was ich brauche.
Leider werden es die gebrochenen Englisch der Befehl spec, oder meinen vollständigen Mangel an wissen über alles, was über das einfache C, oder meinen vollständigen Mangel an wissen über Grafiken, ich habe keine Idee, wie Sie sogar von der Konsole gestartet Spezifikationen, die ich habe. Ich kenne den Drucker und meine Vernetzung funktioniert, weil ich kann die Adresse über das Netzwerk und senden Sie es dem Grundfutter Befehle. Aber, ich habe keine Ahnung, wie man aus einer PNG -> was auch immer der Drucker braucht, um die 'raster-Modus' arbeiten.
Die Spezifikation ist unter http://www.star-m.jp/eng/service/usermanual/linemode_cm_en.pdf , und die Seite, die Sie wollen, um zu beginnen, es zu Lesen, wenn Sie möchten, um zu helfen, ist 3-68, und die spezifischen Befehle, die ich habe Probleme, selbst erste Schritte mit auf 3-78/3-79.
Ich kann Euch nichts geben, aber ein Häkchen, aber ich versichere Ihnen, Sie haben meinen immerwährenden Dankbarkeit, wenn Sie können sogar geben Sie mir noch ein Punkt in die richtige Richtung.
- Bitte angeben, benötigen Sie Hilfe mit der Konvertierung von PNG-und einen Drucker-raster-format? Das ist ganz anderes Thema, das in seiner eigenen Farbe auf schwarz und weiß rasterisation, etc.
- Wie Sie an den Drucker anschließen? Auf einem sockel?
- yep, Buchse. siehe meine neueste update unter den anderen Jungs zu beantworten, ich bin lächerlich schließen, denke ich.
- refulgentis, ist, dass 320 pro Zeile hardcoded in Ihrer app, oder meinst du der Drucker ist fest für 320? Und das 1 byte pro pixel, ist, dass graue Ebene?
- hardcoded in meiner app, und ja
- Refulgentis, dann haben Sie wahrscheinlich zu skalieren auf 256 Pixel breit ist, bevor Sie drucken.
- +1 für: "ich kann Euch nichts geben, aber ein Häkchen, aber ich versichere Ihnen, Sie haben meinen immerwährenden Dankbarkeit, wenn Sie können sogar geben Sie mir noch ein Punkt in die richtige Richtung." 🙂
- Was ist die genaue Modell-Nummer des Druckers?
- Es wäre sehr interessant, wenn jemand könnte kommen mit einer endgültigen Antwort. Ich bin mehr und mehr fasziniert, sollte dies nicht schwer sein, und ich bin sicher, dass der endgültige code wird sehr einfach sein.
- Ich weiß, es sollte nicht schwer sein. Wenn ich den Drucker ich bin zuversichtlich, es werde in einer Stunde oder so.
- Ja. @refulgentis, könnten Sie versuchen, Prototypen-dieses in ein high-level-Sprache Ihrer Wahl auf einem PC oder Mac, die nicht mit einem iPhone.
- siehe meinen letzten Kommentar an @Richard Harrisons Antwort.
- Ich denke, was ich als Nächstes tun, um das setup des CUPS-Treiber, und dass die Arbeit, D. H. Sie können etwas drucken von Mac/Linux. Dann würde ich erfassen Sie die Ausgabe des CUPS-Treiber und untersuchen Sie es mit einem hex-editor, um herauszufinden, wo wir falsch läuft. Ich bin froh, das zu Debuggen, wenn Sie können setup die Verbindung.
- Jeder Fortschritt noch?
- haben Sie jemals bekommen, um diese arbeiten?
- ping-pong. Hast du es zur Arbeit?
- Erfassen Sie die Ausgabe des CUPS-Treiber ist eigentlich eine sehr gute Idee. (@Richard Harrison.)
- Hast du überall mit diesem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Geschrieben haben ein paar Drucker Treiber kann ich bestätigen, dass in der Regel die Dokumentation ist verwirrend, weil der Weg-Drucker arbeiten. Das Dokument, das Sie verweisen, um nicht wirklich scheinen es zu schlimm für mich.
Ich denke, Sie sind zu Recht Druck im raster-Modus, und dass insgesamt diese geben die besten Ergebnisse.
Aus der Stern-Dokumentation ich denke, Sie brauchen, um zu senden :
Öbv. in der obigen \x1b ist der C-Kodierung ESC (d.h. Zeichen 27 0x1b).
Ab, alle Unterlagen, die ich gelesen habe das folgende ist, wie die Bilder, die formatiert werden soll im raster-Modus. Wenn im line-Modus ist es völlig anders als die vertikal & horizontal vertauscht. Von THERMAL PRINTER PROGRAMMER ' S MANUAL (TSP552,TSP552II,TSP2000)
Entspricht dies der folgenden Byte-stream.
Auf dem 4. Befehlszeile es ist effektiv 'b', gefolgt von zwei bytes definining die Größe. Diese Größe wird berechnet als die Anzahl der Pixel im Datenstrom % 256 /256. Also für 320x1 würd 0x40,0x01
So, wenn man die oben und stecken Sie es in ein einfaches Testprogramm testen Sie mit diesem:
Einfach Spritzen, die aus dem Drucker und Sie sollten ein Bild wie oben. Dies ist, wo können Sie leicht zwicken und spielen über die genauen Befehle zu bekommen etwas, das funktioniert. Oft ist dies die einzige Möglichkeit, die ich habe jemals, um herauszufinden, was getan werden sollte.
rev. 3
Ref. Kommentare.
Wenn Sie ein byte pro pixel, dann müssen Sie Zusammenführen, diese in eine Reihe von bits, die folgenden sollte die Arbeit tun, basierend auf Ihren pastebin code. Habe ich auch geändert die
char*
werden, unsigned, da es signiert ist, kann Probleme verursachen, wenn das bit manipulieren.rev. 3a
Blick auf die Mac CUPS Unterstützung aus Star es hat den source-code für den Treiber enthält viele Hinweise, wie dies geschehen soll. Manchmal ist code viel einfacher zu Lesen als Dokumentation.
starcupsdrv-3.1.1_mac_20100423.zip\starcupsdrv-3.1.1_mac\SourceCode\
enthält
starcupsdrv-src-3.1.1.tar.gz\
sub-Ordnerstarcupsdrv\src\
Ansicht rastertostar.c, der wichtige Teil ist die Berechnung der n1 /n2-Werte. Diese sind nicht bei allen X & Y, aber auf der Grundlage der Pixelzahl, lastBlackPixel ist die Anzahl der Pixel von der Quelle.
Habe ich geändert, der code oben enthalten die Updates, hoffentlich näher. Wenn nicht, poste einen scan von dem, was kommt aus dem Drucker, es wird nützlich sein, zu diagnostizieren, was mit Ihnen geschieht.
Referenz Der code zwischen 580:650 von jsStarUSB.cpp scheint mir zu sein, entlang der Linien von, was Sie brauchen, um zu produzieren ein Puffer (gespeichert in
nextOut
), enthält die raster-Daten in das format direkt an den Drucker gesendet.bitmapBytePerRow = width/8
zweitens sind Sie die Zuweisung rasterCommandForRow und dann verwenden Sie es als ein Zeiger, so verlieren die ursprüngliche Adresse. Überarbeitung gepostet.rasterImage
muss nicht dieESC
(0x1b
) auf jede Zeile - nur die'b'
. Buchstäblich entfernen Sie einfach die0x1b
s und Sie sollten sehen, eine Ausgabe. Zumindest bei mir geklappt! 🙂Ich habe eine Vermutung, das könnte der gleiche sein wie der alte Seiko Drucker, nur ist dein Netzwerk aktiviert. Wenn dem so ist, haben Sie einen Blick auf die C-code hier. Es wird versucht, die Ausgabe an einen seriellen port /dev/cua, wo es denkt, ist der Drucker.
Aber wenn die Befehle sind die gleichen, der code sollte dir helfen. Es nimmt als Eingabe die Portable Bitmap Format, die reinen ASCII-text.
Aber ich weiß es nicht. Microsoft gibt an, Star Micronics funktioniert genauso wie Epson LQ, in welchem Fall es ist Dokumentation.
Weiterführende links:
ESC/POS-PDF-Dokumentation, Hunderte von Seiten
Kommando-codes aus der STAR-website
Update! 😉 Versuchen Sie dieses, völlig ungetesteten code:
Update!
Ich war auf der Suche in den docs in der Nacht, und stolperte über, wie Sie können, drucken Sie eine prestored logo. Dann sah ich, wie zu definieren, dass ein logo, und dass ein Teil der Dokumentation sah viel gründlichere:
Erklärungen von bitmap-format für einen ähnlichen Drucker:
Auch, Blick auf Seiten 34 und für eine Erklärung der bitmap-format von einem Star-Drucker.