Dymo Labelwriter an Atmega2560

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Dymo Labelwriter an Atmega2560

      Liebe Bascommer,
      ich war hier früher öfter einmal unter dem gleichen Benutzernamen unterwegs, kam aber jetzt nicht mehr mit meinem alten Login rein. Hmm, wohl zu lange weg gewesen ...

      Aktuell beschäftigt mich ein Problem: ich möchte Akkus testen (Hardware wird wegen der vielen erforderlichen Portpins von einem Atmega2560 bzw Arduino Mega2560 gesteuert) und die Ergebnisse der Tests gleich ausdrucken und als selbstklebendes Etikett auf den Zellen anbringen.
      Hierfür habe ich mir einen Dymo Labelwriter 400 gekauft. Ich weiß, ein Modell "... SE400" oder das neuere "SE450" wären besser gewesen, da RS232 statt USB, aber die sind nirgends zu bekommen.
      Schwierig erscheint neben dem USB auch, daß der Drucker wohl nur den Direktzugriff auf die 600+ Dots einer jeden Zeile des Druckkopfs gestattet.
      Dymo LW400 technical reference
      Der Host muß also die gesamte Funktionalität der Druckaufbereitung mitbringen, wenn ich das richtig verstanden habe. Es scheint keinen eingebetteten Zeichensatz oä zu geben, den man einfach aufrufen könnte. Mir graut jetzt schon bei der Vorstellung, einen eigenen Zeichensatz als Punktraster erstellen zu müssen ?(

      Daher hier jetzt die entscheidenden drei Fragen:
      - kennt jemand einen Etikettendrucker, der per RS232 "normal" (dh. durch einfaches serielles Senden der zu druckenden Zeichen) von einem Atmel µC ansteuerbar ist? Wenn es den gibt, dann würde ich den Dymo für etwas anderes nehmen und mich fortan auf den anderen stürzen ...
      - hat jemand schon einmal einen solchen oder ähnlichen Dymo Drucker an einem µC zum Laufen bekommen und kann den Code dafür teilen?
      - Gibt es eine Lösung, wie den Atmels die Funktionalität eines "USB printing hosts" verliehen werden kann, wodurch man dann eben doch so einen USB Drucker anschließen könnte? Obwohl: das löst dann auch nur das kleine Teilproblem USB, nicht das Hauptproblem zeilen(/Pixel)weise erforderlicher Druckausgabe ...

      Hier Thermodrucker Workshop wurde im Bascomforum schon einmal ein ähnliches Thema von @ceperiga, @fredred, @tschoeatsch und @djmsc behandelt. Wie ging es damals dort weiter? Wäre es vielleicht denkbar, solche Rollenpapierdrucker auch selbstklebende Etiketten einziehen zu lassen?


      Nebenfrage und haut mich bitte nicht: bringt mich ein Mega2560 ADK in der Angelegenheit weiter? Die sind wohl pinkompatibel zum Mega2650 und speziell für das USB OTG von Android "gemacht", können die aber auch einen USB printer host darstellen? Der darauf verwendete (?) Chip MAX3421E von Maxim kann laut dieser Appnote einen Host Code ausführen, aber "reicht" der dann auch für einen Drucker? Auf dem Gebiet kenne ich mich leider gar nicht aus ...


      Achso: Frohe Feiertage natürlich ;)

      Viele Grüße, Lars
    • naja gut, beim zeichensatz würde ich mich einfach an dem mit den 5x7 Punkten der viel verwendeten alphanumerischen LCD Displays orientieren und den entsprechend der Druckerauflösung hochzuskalieren, aber eine Fleißarbeit bleibt es trotzdem, das für x Zeichen und Zeile für Zeile zu definieren (zu tippen) ...
      Oder gehts viel leichter und ich stehe nur auf dem Schlauch?
    • Hallo @laase

      Es gibt AVR-Controller, die ein USB-Interface integriert haben. Aber diese Controller haben vermutlich dann zu wenig Pins und Speicher für die grafische Bearbeitung des Ausdrucks.

      Ich könnte mir 2 mögliche Lösungen vorstellen.

      1. mit zusätzlichem USB-Controller
      Du verwendest zusätzlich zum Mega2560 einen AVR Controller mit USB-Unterstützung, der dann zwischen dem Drucker und dem Mega2560 die USB-Übersetzung macht.

      2. USB im Drucker umgehen
      USB ist ja grundsätzlich eine serielle Schnittstelle. Dem Datenblatt zufolge kann man da Ascii-Text als Daten und auch als Commandos senden.
      Vielleicht kann man den eingebauten USB-Controller im Drucker umgehen und kann die serielle Schnittstelle direkt anzapfen.

      Kannst ja mal den Drucker aufschrauben und ein Bild posten. Vielleicht kann man da was machen.

      Eine Software-USB-Implementierung in einen 2560 ist vermutlich möglich, aber nicht unbedingt sinnvoll, denn das USB Protokoll verlangt einiges vom Controller ab. Ich denke da kommt man mit einem Mega an die Grenzen. Da wäre ein XMega vermutlich besser geeignet.

      Ich persönlich würde den Drucker mal aufschrauben und schauen, ob man den USB umgehen kann. Alternativ AVR mit USB checken, ob die Host können. Letzter Ausweg wäre tatsächlich versuchen einen Drucker mit AVR-freundlicher Schnittstelle aufzutreiben.

      Es gibt aber auch schon Breakout-Boards, die so etwas wie RS232 nach USB-Host bieten.
      Schau dir mal das hier an: researchdesignlab.com/usb-host-board.html
    • Hallo laase,

      das Projekt Thermodrucker hätte ich gerne weiter verfolgt. Zeitmangel hat das leider ausgebremst, denn im Grunde genommen finde ich das Thema spannend. Mir schwebte immer so etwas vor wie die LCD- Routine, bei der man statt LCD "Ausgabe" einfach Printer "Ausgabe" anwendet, um den Drucker anzusprechen. Naja, vielleicht findet sich ja noch Zeit.

      Mit Thermodruckern habe ich mich dennoch befasst. Ich habe hier Einbaugeräte für Frontplattenmontage von GeBe. Diese gibt es mit serieller und auch mit USB- Schnittstelle. Zur Ansteuerung inklusive dem Zeichensatz verwenden diese Drucker einen ATMEGA 32. Für die eigentliche Ansteuerung reicht dieser Controller somit sicherlich aus. Es gibt also garantiert eine Möglichkeit der Umsetzung mit ATMEL- Controllern und auch mit BASCOM. Leider sind diese Drucker nicht die preiswertesten.

      Für EPSON- Drucker gibt es ja Thermoetiketten auf Rollen. Es spricht nichts dagegen, dass diese auch mit anderen Thermodruckern verwendet werden können. Bei schmaleren Breiten bedarf das dann sicherlich einer Führung der Bahn. In Zeiten von 3D- Druckern sicherlich kein allzu großes Problem mehr. Auch gibt es Thermo- Rollenetiketten in den verschiedensten Abmessungen zu kaufen.

      Ich müsste auch noch Thermodruckelemente haben, die ich damals an Forummitglieder zum Testen verschickt habe. Solltest Du Interesse haben dieses Projekt weiter zu verfolgen, würde ich da noch einmal nachsehen. Mit diesen Elementen könntest Du Dein Projekt sicherlich umsetzen. Zu diesen Druckern habe ich komplette technische Daten mit allen Parametern, weshalb ich diese damals gewählt habe.

      Gruß Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Hi,
      danke für die zahlreichen Rückmeldungen!
      hier erstmal ein Bild vom Innenleben des Dymo LW400:
      IMG_20201226_000532.jpg
      Die traces gehen von der USB Buchse leider gleich direkt in den µC rein, einen LPC irgendwas. Der Achtbeiner rechts im Bild ist nur ein 74HC123 Doppelmonoflop. Die 2. von Dir,
      @Mitch, empfohlene Methode den USB-Controller zu umgehen, wird also vermutlich nicht funktionieren. Das war natürlich auch meine erste Idee ...
      Allerdings hat der LPC laut Datenblatt auch eine serielle Schnittstelle und auf der Leiterplatte sind dort zwei Testpads rausgeführt, die auch noch mit "RXD und TXD" beschriftet sind (links unten im Bild). Ich habe nicht viel Hoffnung, dort etwas "sniffen" oder gar einspeisen zu können, werde es aber natürlich mal (über Vorwiderstand ca. 220 Ohm) probieren.
      Was genau aber meinst Du mit "AVR Controller mit USB-Unterstützung"? Ich habe mal was mit dem AT90USB162 (Olimex-Board) gemacht, aber der ist nur USB-Slave, kein Master oder "Host", wie es ja heißt. Können die neueren "U" Chips von Atmel da mehr? Oder braucht man gar keine HOST Funktion, um so einen Drucker anzusprechen?
      Der von Dir angegebene Link führt zu einem Board mit einem FT311D Chip. Der scheint mir sehr ähnlich dem von mir oben schon erwähnten MAX3421E zu sein? Hat irgendjemand von euch darüber schon einmal einen Drucker, einen USB-Speicherstick, eine Tastatur oder eine Maus an einen 8-bit Atmel angeschlossen?

      Wenn ich die Bascom-Hilfe dazu frage finde ich nur das USB-Addon mit dem Kommentar "There is no support for host mode yet. In fact the add on is just the first step into USB support". Zumindest in der 2.081; die Hilfe der 2.083 funktioniert bei mir (noch?) nicht.

      Zu Ascii: ja, das ist erwähnt, richtig. Ich lese es aber so, daß es dabei nur um die Steuerbefehle geht, nicht jedoch um die eigentliche Übermittlung der zu druckenden Zeichen. Die Zeichen müssen zeilenweise vom Host (in "Fragmenten") erstellt und dem Drucker gesendet werden. Bei 203dpi wäre eine Zeile dann lediglich 0,125mm hoch bzw. für eine Zeichenhöhe von zB 5mm müßte man 40 Zeilen generieren und senden, bei 300dpi noch entsprechend mehr! (Liege ich falsch?) Hört sich nach ziemlich großem Lookup-Table an?! Oder eher eine riesige Case Anweisung?

      @Christian: ja, das mit der Zeit kenne ich auch ;) Danke für das Angebot der Thermoköpfe, aber aus eben diesen Zeitgründen bin ich auch äußerst skeptisch, hier Code für die Ansteuerung von 200dpi Druckelementen selbst zu erstellen. Ich kenne mich, da würde ich Monate für brauchen, weil ich es immer nur ein oder zwei Stunden nachts mache, tags könnte ich das nicht vertreten; so ein "Mammut-Programmierblock" ist zu 100% Familien-inkompatibel. Zumal das ja letztlich auch "nur" eine Druckfunktion ist ...

      @Tobias: ich kenne mich da nicht aus und habe daher keine Erfahrungen, die da positiv oder negativ mit reingespielt hätten. Angesichts der heutigen Preise
      mobile Drucker von Brother, seriell oder Bluetooth
      würde ich das aber genau anders herum einschätzen: die kleinen Geräte von Dymo scheinen mir eher günstiger zu sein, denn bei Brother fängt es erst oberhalb von 500 USD an!
      Bei solchen Preisen ist das Projekt sofort gestorben; da könnte man auch einen Edding nehmen und die Testergebnisse von Hand auf die Zellen pinseln und das wäre auch in Jaaahren noch wirtschaftlicher!
      Nein, also zumindest bei mir liegt der Reiz auch darin, daß ich eben keine Unsummen für so eine Drucklösung ausgeben möchte, sondern nach Möglichkeit sollten Drucker ansteuerbar sein, die man bei Ebay für gut unter 50E bekommen kann.
      Um die Preise für Drucketiketten mache ich mir nicht solche Sorgen, da wird man bei Ebay & Co förmlich erschlagen von kompatiblen Nachahmerprodukten (man hat Mühe, die ganzen Etiketten aus den "Hits" herauszufiltern, wenn man eigentlich nach Druckern sucht ...). Außerdem werden die gebrauchten Drucker oft mit Massen von Etikettenrollen angeboten, die der Vorbesitzer nicht mehr braucht. Und ehe er sie wegwirft, dienen die Rollen so noch zur Ausfütterung des Pakets.
      Kurz: es wäre schon "cool", wenn man diese Dymo LW400 oder LW450 ansteuern könnte, weil sie klein sind, es die für ca. 15-25€ gebraucht/gut gibt und sie am PC wunderbar funktionieren. Die Thermodirektdrucker über einen Akku (ggf +Supercap?) laufen zu lassen, wäre in Anbetracht der doch recht hohen Leistungsaufnahme von 30 bis zu 50W sicher ein separates Projekt. Da würde ich es also erst einmal anders herum machen: das Netzteil des Druckers versorgt auch das Arduino Mega2560 board mit.

      Viele Grüße, Lars
    • Ich habe mir das Datenblatt zum LPC2141 mal geladen.
      Der hat einen direkten USB-Eingang (D+/D-) an den Pins 10 und 11. Von diesen Pins (siehe Foto) gehen 2 parallele Leitungen zum USB-B Anschluss.
      D.h. den USB kann man schon mal nicht umgehen. Hätte ja sein können dass intern ein FT232RL oder ähnliches verbaut ist.

      Der Controller hat noch mindestens eine serielle Schnittstelle (Pin 19, 21), ich bezweifle aber, dass die das Datenprotokoll, wie es über USB geht genauso unterstützt. Ich denke da muss man mit einer Zwischenplatine ran, die auf der einen Seite das serielle Signal von 2560 bekommt und das auf USB umsetzt, wo dann der Drucker dran kommt. Die AVR-Controller mit USB-Unterstützung, die ich ansprach sind solche vom Typ Atmega8u2 oder AT90USB...
      Aber ich konnte da jetzt auch keinen Hinweis im Datenblatt finden, dass die als Host zu gebrauchen wären.

      Also bleibt noch so ein Breakout-Board, wie ich es verlinkt hatte. Zumindest sowas in der Art.

      Hier habe ich was gefunden, wie man das selber bauen kann: FTD312D und die Webseite.


      Hier ein fertiges Modul für 9$. Ich glaube man muss einfach nur etwas suchen, dann findet man solche USB-Host nach seriell Bridges.

      Hier noch ein Shield für Mega2560. Ein Schnäppchen!

      laase schrieb:

      Zu Ascii: ja, das ist erwähnt, richtig. Ich lese es aber so, daß es dabei nur um die Steuerbefehle geht, nicht jedoch um die eigentliche Übermittlung der zu druckenden Zeichen.
      Seite 8 in deinem Link zum Drucker steht unter der Überschrift Print Data:
      Spoiler anzeigen

      Print data is encoded in strings of 8-bit bytes, preceded by a single synchronization character.
      Two print line commands specify whether the data format is uncompressed or compressed.
      Uncompressed data is preceded by an ASCII <syn> character (0x16), and compressed data is
      preceded by an ASCII <etb> character (0x17). Appendix A describes the compressed data
      format.


      Ob die Daten nun ASCII oder Binär sind, sollte ja eigentlich keine Rolle spielen.
    • Ah, dachte du wolltest so nen kleinen Labeldrucker zum beschriften mit max 18mmBand, die breiten sind da ne andere Preisklasse.
      Such mal unter VNC1 Vinculum, der kann host und es gibt nen Herstellerdoku für USB Print, wie immer natürlich nicht in Bascom, aber immerhin doku. Und der Drucker muss pcl können, nimmt dir die last nen treiber auf Pixelebene bauen zu müssen, zumindest wenns nur schrift sein soll.

      Tobias
    • So, Vormittag gelötet (18 Kabel rausgeführt; von den Lötpads, wie auch einem anderen ungenutzten Steckverbinder auf der Platine), Nachmittag dauernd Daten zum Drucker geschickt, Etiketten drucken lassen und an allen Leitungen mit Oszi drangehangen: nichts! Überall dauerhaft entweder 0V oder 3,4V (Versorgungsspannung). An den TXD und RXD Pads leider 0V, also müßte man am RXD wenn, dann schon einmal ein invertiertes RS232 Signal einspeisen.
      Als nächstes käme jetzt also der Test, an RXD (und auch allen anderen rausgeführten Pads) Daten einzuspeisen und zu hoffen, daß der Drucker überhaupt irgendeinen Mucks von sich gibt. Ob ich die Daten von einem Terminal (Arduino. HTerm oä) vom PC aus über eine USB-UART bridge schicke oder sie von einem Atmel schicken lasse (was ja den Vorteil hätte, daß man dort auch gleich invertieren kann), weiß ich noch nicht. Tendiere zu Atmel. Baud würde ich mal mit 9600 anfangen, den das ist in der Technical Reference des Modells SE 450 so vermerkt. Und ich würde drauf tippen, daß wenn, dann nur diese Baudrate auch im "älteren" 400er Modell verwendet worden wäre.
      Danke Mitch (der unterste Link zum Mega-Shield wird auch wieder ein Maxim-Chip sein) und Tobias, aber der Schritt, so einen USB host zu verwenden, wird dann erst danach kommen und ich werde mir das noch einmal genau überlegen, denn da müßte ich mehrere dicke Bretter auf einmal durchbohren:
      - "reichen" diese Sorte von USB host chips überhaupt aus, den Drucker anzusprechen (es wird bei allen immer einerseits von "HID-devices", also Maus, Tastatur usw gesprochen, nie aber von einem Drucker. Andererseits geht es auch immer um Android mit ADK Kit als angeschlossenen Host)?
      - was genau speise ich auf der UART Seite ein, um es in ein USB Signal übersetzen zu lassen?
      - Wie muß ich mit bestimmt nötigen Acknowledges usw. verfahren? Oder wird es ohne solche gehen? Wird der Drucker sich angesprochen fühlen, nur weil er "am Kabel hängt"? Müssen nicht noch die USB typischen VID's und PID's vorher ausgetauscht werden?
      - ich müßte immer noch alle Pixel zeilenweise einzeln zum Drucker schicken, weil der Drucker dumm ist und keinen eigenen Zeichensatz hat. Aber gut, das wäre auch so, wenn ich doch noch einen seriellen UART-Pin am Drucker finde ... Immerhin hätte man dann mit diesem Drucker die Möglichkeit, Bitmaps (Pixelgrafiken) zu drucken, was ja auch ganz nett ist ;)

      Familienkrach ist schon da, also kann ich jetzt auch weitermachen ...

      Viele Grüße, Lars
    • mit einem
      ...
      Print #1 , "Hello World"
      ...
      ",inverted", sowie ohne Invertierung tut sich schonmal nichts. An allen rausgeholten Pins/Pads nichts. Wäre ja auch zu schön gewesen ...
      USB extra abgestöpselt, Netzstecker raus, gewartet usw.
      Signal vom Uno ist per Z-Diode und Vorwid 470 Ohm auf 3.1V begrenzt.
    • laase schrieb:

      - was genau speise ich auf der UART Seite ein, um es in ein USB Signal übersetzen zu lassen?
      - Wie muß ich mit bestimmt nötigen Acknowledges usw. verfahren? Oder wird es ohne solche gehen? Wird der Drucker sich angesprochen fühlen, nur weil er "am Kabel hängt"? Müssen nicht noch die USB typischen VID's und PID's vorher ausgetauscht werden?
      Um diese Fragen zumindest teilweise zu klären, musst du mal das Datenblatt von FTD312D studieren.
      Da ist bestimmt beschrieben, was es mit den VID's und PID's auf sich hat. Vielleicht musst du dich aber auch gar nicht drum kümmern.

      Ob der FTD312 noch ein Protokoll braucht (klärt das Datenblatt), weiß ich nicht.
      Vielleicht brauchst du aber tatsächlich nur die Kommandos und Daten, so wie sie der Drucker braucht, zu senden.
      Wenn der Drucker nichts zurück sendet, könnte höchstens was vom FTD312 was kommen, falls da ein Protokoll eingehalten werden muss.

      Wie gesagt, das Datenblatt studieren.

      Was die Character-Zeichen (Zeichensatz) angeht, da gibt im Installationsverzeichnis von Bascom (Samples) diverse Fonts. Vielleicht sind die verwendbar.
    • seriell auf die Pads und Pins geht's nicht. Habe hiermit:
      <
      Dim I As Byte 'zählvariable
      Dim Bytezeile(84) As Byte 'Inhalt der zu druckenden Zeile

      Open "comd.7:9600,8,N,1" For Output As #1

      For I = 5 To 20 'ganz links (0 bis ca. 4) soll einfach nichts gedruckt werden, danach halt irgendwas und ab ca. 1/4 der Breite (max "84") ebenfalls wieder nichts mehr (weil das Etikett nicht die volle Breite ausfüllt)
      Bytezeile(i) = I
      Next I

      Do
      Waitms 500 'die Zeilen werden sekundenweise übermittelt
      Led = 1
      For I = 1 To 85 'zunächst 85x den "ESC" Charakter senden, damit der Drucker auch wirklich und ganz sicher auf Datenempfang synchronisieren kann
      Print #1 , Chr(27) '27 (ist Ascii "Escape") zum Wechseln von Vorgabeparametern
      Next I

      Print #1 , Chr(22) '22 (ist Ascii "Sync") ist der Beginn/Identifier von darauf folgenden unkomprimierten ("Raster"-)DruckDaten

      For I = 1 To 84 'wenn keine weitere Vorgabe zur Kürzung der zu übertragenden Daten erfolgt, müssen 84 Bytes gesendet werden
      Print #1 , Bytezeile(i)
      Next I
      Led = 0
      Waitms 500
      Loop
      >
      ebenso wieder in invertierter, wie auch nicht invertierter Form alle in Frage kommenden Leitungen "behandelt" und das Gerät gab keinen Mucks von sich, auch keinen Form feed o.ä.
      Eigentlich hätte der Druckkopf so in jeder Zeile identische Punkte schwärzen müssen, so daß sich (nach Abwarten der jeweiligen Sekunde für den Zeilenvorschub) irgendwann Streifen auf dem Etikett ergeben. Die 85x Escape wurde in der technical reference des LW400 auf S9 als "Reset from any unknown state" empfohlen.

      Nach der heutigen "Session" glaube ich, daß ich das Projekt "Dymo USB Labelprinter per Atmega ansteuern" erst einmal beende. Oder zumindest auf unbestimmte Zeit pausiere.
      Irgendwann Ende Januar bekomme ich noch so eine UART zu USB-host Bridge mit MAX3421E Chip, dann probiere ich es vielleicht noch einmal. In der oben verlinkten Technical Reference heißt es, daß man sich wegen des notwendigen USB-Befehlssatzes an die "Universal Serial Bus Device Class Definition for Printing Devices" wenden soll und es könnte sein, daß dafür weder die von mir schon bestellte Brücke mit dem MAX3421E, noch eine solche mit dem FT312 ausreicht, da beide letztlich nur für den Anschluß von USB Geräten an Android-Geräte entwickelt wurden. Beide Chips erwähnen zwar ausdrücklich den "USB bulk transfer mode", der vom Druckermanual als Voraussetzung gesehen wird, aber ich weiß trotzdem nicht, ob die "Class definition for printing devices" unterstützt wird. Egal wie, selbst wenn einer der Chips funktionieren sollte, gibt es immer noch einen Haufen an Arbeit, bis nachher irgendwann vielleicht einmal ein paar läppische Zahlen auf dem Etikett stehen.

      Ich gehe jetzt lieber mal an die Hardware des Zelltesters, da kenne ich mich besser aus und muß nicht so viel Neuland betreten. Zur Not schickt das Gerät seine Daten dann einfach per Hyperterminal oä an einen alten WinXP Laptop und ich kopiere daraus dann händisch den zu druckenden Text in das Fenster des Druckmanagers um es auf diese Art und Weise doch noch wenigstens "halbautomatisch gedruckt" zu haben.


      Danke Euch trotzdem für eure Unterstützung!


      Viele Grüße, Lars
    • übrigens: das Thema ist offenbar ein alter Hut und es wird reihenweise zu Raspi mit Linux, Netzwerk-Printserver usw geraten:
      mikrocontroller.net/topic/133237
      mikrocontroller.net/topic/243738

      es scheint bisher niemand zu geben, der es ganz "einfach" (per Zusatzplatine oä) geschafft hat, per UART ausgegebene Strings auf einem USB-Drucker drucken zu lassen.

      werde daher wohl auch auf den Dymo SE450 "warten" oder mich nach anderen gebrauchten Thermodirektdruckern umschauen, die einen eigenen Zeichensatz haben und sich per RS232 ansprechen lassen.
    • Hi,
      viele Label Printer beherrschen die EPSON ESC Sequenzen. Hier mal ein gekürztes Fragment aus einem Projekt von mir:

      BASCOM-Quellcode

      1. Sub Print_label
      2. ' Print label on COM2
      3. Const Esc = 27
      4. Const Initialize = 64
      5. Const Line_feed = 10
      6. Const Print_mode = 33
      7. Const Character_set = 82
      8. Const Font_a = 0
      9. Const Font_b = 1
      10. Const Font_c = 2
      11. Const Font_kursiv = 4
      12. Const Font_double_height = 16
      13. Const Font_double_width = 32
      14. Const Full_cut = 0
      15. Const Partial_cut = 1
      16. Const Bold = 69
      17. Const Non_bold = 70
      18. Const Double_width = 87 '1=ON 0=OFF
      19. Print #2 , Chr(esc) ; Chr(105) ; Chr(97) ; Chr(0); 'Command Mode
      20. Print #2 , Chr(esc) ; Chr(initialize); 'Initializes the printer (ESC @)
      21. Print #2 , Chr(esc) ; Chr(105) ; Chr(76) ; Chr(0); 'Landscape Mode
      22. Print #2 , Chr(esc) ; Chr(107) ; Chr(1) ; 'Font select
      23. Print #2 , Chr(esc) ; Chr(character_set) ; Chr(2); 'Deutsche Zeichen
      24. ' Firmenname
      25. B_byte = Font_double_height + Font_double_width
      26. Print #2 , Chr(esc) ; Chr(print_mode) ; Chr(b_byte); 'Selects double-height mode
      27. Print #2 , "Firmenname" ; Chr(line_feed) ; Chr(line_feed);
      28. Print #2 , Chr(esc) ; Chr(print_mode) ; Chr(font_a); 'Cancels double-height mode
      29. ' Name Sequenz
      30. Print #2 , Text150 ; Chr(line_feed);
      31. B_byte = Font_double_height '+ Font_double_width
      32. Print #2 , Chr(esc) ; Chr(print_mode) ; Chr(b_byte); 'Selects double-height mode
      33. Print #2 , Tmp_name_ablauf ; Chr(line_feed) ; Chr(line_feed);
      34. Print #2 , Chr(esc) ; Chr(print_mode) ; Chr(font_a); 'Cancels double-height mode
      35. Print #2 , "Line-1" ; "________________" ; Chr(line_feed) ; Chr(line_feed);
      36. Print #2 , "Line-2" ; "________________" ; Chr(line_feed) ;
      37. Print #2 , Chr(esc) ; Chr(105) ; Chr(67) ; Chr(1); 'Cuting
      38. Print #2 , Chr(12); 'Print
      39. End Sub
      Alles anzeigen
      Infos z.B. hier: reference.epson-biz.com/module…os/index.php?content_id=2
      Code first, think later - Natural programmer :D
    • Hallo Six,

      spannend! Danke! Du hast also schon einmal einen (Papierrollen?)drucker vom Atmel aus angesteuert!
      Darf ich fragen, welchen?

      Genau so (einfaches Ansprechen des Druckers per Ascii) wollte ich das haben! Das festigt meinen Entschluß, mich
      1. weiter nach einem Drucker mit eingebautem Schriftsatz umzusehen (viele gerade kleinere Drucker haben keine solchen drin und sind daher reine Bitmap/Rasterpunkt Drucker, denen alles zu Druckende erst einmal vom µC her aufbereitet werden müßte. Die Dymo 400 und 450 gehören da auf jeden Fall dazu. Nur der (offenbar schwer erhältliche?) Dymo SE450 hat aus dieser "Laserwriter"-Reihe einen per ASCII ansprechbaren Zeichensatz. Ich hatte mich auch nach dem kleinen und feinen Seiko SLP-650SE erkundigt, bekam aber die Antwort, daß auch dieser Drucker ein reiner Rasterdrucker ist. er läßt sich zwar seriell ansprechen, hat aber keinen integrierten Zeichensatz. Für Leute, die einen x-y-Plotter (Sweep Recorder oä) mit 8-Bit Atmel bauen wollen, wäre das allerdings eine ganz tolle Möglichleit!
      2. nach einem Drucker mit einer seriellen Schnittstelle umzusehen. Die ganze Umsetzerei von seriell nach USB scheint mir erheblich zu kompliziert. Dann könnte man das Gerät auch gleich mit einem Raspi aufbauen ...

      Viele Modelle von Zebra scheinen geeignet zu sein. Sind aber meist auch relativ groß, schwer und vor allem teuer. Ich suche noch weiter nach bezahlbaren Alternativen. RS232/seriell ist zum Glück noch nicht ausgestorben.

      Viele Grüße, Lars
    • Hallo laase,

      wie geschrieben, habe ich Drucker von GEBE, welche mit einem ATMRGA 32 bestückt sind (Die Platine ist hinten nur geclipst, da kann man schnell mal draufsehen). Diese Drucker werden je nach Ausführung per USB oder seriell angesteuert. Also eigentlich genau das, was Du suchst. Hier mal ein Vergleichslink, ich müsste bei meinen Druckern erst mal auf das Typenschild sehen. Von GEBE wirst Du sicherlich auch weitere Informationen bekommen, dort war man immer sehr entgegenkommend.

      gebe.net/index.php?pc=TDMuldeMini4352-60

      Einziger Nachteil: nicht ganz preiswert, dafür aber robuste Industrieelektronik und kompakt, kann man praktisch überall einbauen. Ich habe 169.- € / Stück (netto) bezahlt, die Drucker jedoch nie eingesetzt, da sich das Projekt zerschlagen hat.

      Nur ein Angebot: wenn das was für Dich ist, würde ich die für den halben Neupreis abgeben. Selbstverständlich neu und unbenutzt. Selbstverständlich würde ich dann genauere Informationen vorab schicken. Hab den Drucker aber hier nicht zur Hand.

      Ansonsten bekommst Du bei GEBE sicher einen maßgeschneiderten Drucker.

      Gruß Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Die Dinger sind ja heutzutage an jeder Kasse im Supermarkt verbaut.
      Sollte also relativ günstig zu bekommen sein.

      Ich habe daher mal nach Kassendrucker bei eBay gesucht und was mit RS232 gefunden.
      Ab 1 Euro praktisch neu.
      Epson Thermodrucker TM-T88II Kassendrucker M129B Bon Drucker Seriell

      Der nächste was gerade angeboten wird kostet 37 Euro, generalüberholt.
      Epson TM-T88III Thermodrucker TM-T88 III Kassendrucker M129C Bon Drucker Seriell

      Was dabei?