1. DC
  2. Forum
  3. Tintendrucker
  4. Epson
  5. Bidirektionale Kommunikation programmieren

Bidirektionale Kommunikation programmieren

Dieses Thema ist inaktiv: weitere Antworten sind nicht mehr möglich. Sie können jedoch ein neues Thema erstellen.

von
Hallo,

ich bin neu hier und muss gleich mal eine sehr Software-lastige Frage stellen: Kennt sich jemand mit der Programmierung der bidirektionalen Kommunikation von EPSON-Druckern aus?

Es geht darum, dass ich in einem eigenen Programm all die Statusinformationen eines EPSON Stylus Pro 4800 anzeigen möchte, die auch der Statusmonitor anzeigt. Das ist z.B. die verbleibende Tintenmenge pro Patrone oder der Füllstand des Wartungstanks. Ich weiss, dass ich die Statusinformationen per Escape-Kommandos abfragen kann, genau so wie ich z.B. den Düsentest (nozzle check) ausführen kann.

Soweit, sogut. Ich kann zwar Kommandos an den Drucker senden, die er auch ausführt (Düsentest), bekomme aber keinerlei Antworten zurück (Füllstand der Tinten), stattdessen bekomme ich nur eine Fehlermeldung.

Hier meine Vorgehensweise mit Quellcode (C/C++):

char printer_cmd[1025];
int bufpos = 0;

//exit packet mode
char hdr[] = "\000\000\000\033\001@EJL 1284.4\n@EJL\n\033@";
memcpy(printer_cmd + bufpos, hdr, sizeof(hdr) - 1);
bufpos += sizeof(hdr) - 1;

//Druckeranschluss als Steam öffnen
fd = _open("\\\\rechner\\drucker", O_RDWR, 0666);

//remote mode aktivieren
char remote_hdr[] = "\033@\033(R\010\000\000REMOTE1";
memcpy(printer_cmd+bufpos, remote_hdr, sizeof(remote_hdr)-1);
bufpos += sizeof(remote_hdr) - 1;

//tintenstandabfrage zusammenstellen
char ink_cmd[] = "IQ\001\000\001";
memcpy(printer_cmd+bufpos, ink_cmd, sizeof(ink_cmd)-1);
bufpos += sizeof(ink_cmd) - 1;

//remote-mode abschließen
char remote_end[] = "\033\000\000\000";
memcpy(printer_cmd+bufpos, remote_end, sizeof(remote_end)-1);
bufpos += sizeof(remote_end) - 1;

//anfrage an drucker senden
write(fd, printer_cmd, bufpos);

//buffer leeren da jetzt hier die empfangsdaten rein sollen
memset(buf, 0, bufsize);

//antwort lesen
int status = _read(fd, buf, bufsize - 1);

...

Mein genaues Problem besteht jetzt darin, dass die letzte Zeile (int status = _read(fd, buf, bufsize - 1);) immer einen Lesefehler bringt. status ist immer -1 und die erweiterte Fehlerinformation sagt, das ich ein falsches Argument angegeben habe (EINVAL).

Kann es sein, dass ich von der USB-Schnittstelle unter WindowsXP nicht lesen kann oder woher kommt die Fehlermeldung?

Danke
René
von
Ok, laut meinen weiteren Recherchen scheint die Herangehensweise mit Streams nicht der richtige Weg zu sein. Die Windows API stellt zum Senden von Escape-Folgen die Funktion ExtEscape() zur Verfügung. Nur bekomme ich mit dieser Funktion auch auch keine Kommunikation hin.

Hat eventuell jemand ein funktionierendes Codebeispiel zum Senden von Escape-Folgen mittels ExtEscape() oder gibt es hier im Forum keine Programmierer?

Gruß
René
von
Hallo nospe,
danke erstmal für die Antwort. Das Dokument habe ich mir bereits vor einer Woche gezogen. Daher habe ich auch die entsprechenden Escape-Sequenzen. Das Senden mit ExtEscape() funktioniert auch und der Drucker führt dann auch z.B. einen Düsentest [NC] aus. Sende ich ihm aber ein Kommando, bei dem ich einen Rückgabewert bekommen soll (Remaining Ink Amount [IQ]) dann gibt es einfach keine Antwort. Der Antwortpuffer ist einfach immer leer.

Habe auch gestern schon mit EPSON telefoniert. Wurde dann von einem 'wichtigen Herren' zurück gerufen. Der hat total geblockt und hat gemeint, dass er zu meinem Problem keine Aussage macht und dass bei dieser Frage der Support von EPSON enden würde. Er hätte mir alles gesagt, was es zu sagen gäbe...
Ich bin ja so begeistert, wie EPSON sich um Firmenkunden kümmert, die deren Drucker in ihre Systeme integrieren will.

Gruß
René
von
Hallo René,

evtl. geht das was mit einer NDA (Non Disclosure Agreement). Es ist klar das die Hersteller ihr Know-How schützen wollen. Frag einfach noch einmal nach.

Viel Erfolg!
1

Offenlegung - Provisionslinks

Wir erhalten bei einer Vermittlung zum Kauf oder direkt beim Klick eine Provision vom Anbieter.

Alle Preise enthalten die derzeit gültige MwSt. und verstehen sich zzgl. Versandkosten. Der Preis sowie die Verfügbarkeit können sich mittlerweile geändert haben. Weiß hinterlegte Preise gelten für ein baugleiches Gerät. Alle Angaben ohne Gewähr.

Forum Aktuell
10:10
09:50
09:18
08:54
08:12
5.5.
4.5.
4.5.
2.5.
ZEBRA GK420T druckt nicht schmidt_as
Artikel
05.05. HP Laserjet Cashback 2024/05: Geld zurück für viele S/W-​ und zwei Farb-​Laserjets von HP
27.04. Brother L5000-​ und L6000er-​Serie: Gehobene Monolaser mit und ohne Scanner
24.04. Epson Readyprint Ecotank: Größere Druckerauswahl fürs Tintenabo mit Leihdrucker
23.04. Epson ReadyPrint Flex: Neue Vieldrucker-​Tarife fürs Tintenabo
18.04. The Recycler Live 2024: HP will wohl Chip-​Reset für professionelle Aufbereiter ermöglichen
17.04. Xerox Laserdrucker-​Cashback 2024/04: Bis zu 300 Euro zurück beim Kauf eines Laserdruckers mit Toner
16.04. CVE-​2024-​2209: Schwachstelle bei Deskjet-​Einstiegsmodellen
11.04. Brother ADS-​1800W und ADS-​1300: Einklappbare Dokumentenscanner mit USB-​C
10.04. HP zu SMTP-​Fehlern bei Laserjet und Officejet: Probleme beim E-​Mailversand sollen behoben werden
05.04. Epson Workforce Enterprise AM-​C400 und AM-​C550: Linehead-​Tintendrucker als kompakte A4-​Systeme
04.04. HP EvoMore-​Tintenpatronen: Nachhaltig? Für die Umwelt oder als Einnahmequelle?
22.03. Roland DG: Brother bietet für Großformat-​ und Industriedruckerhersteller
Themen des Tages
Beliebte Drucker
ab 348,88 €1 Epson Ecotank ET-4850

Multifunktionsdrucker (Tinte)

ab 170,99 €1 Canon Maxify MB5150

Multifunktionsdrucker (Pigmenttinte)

ab 228,90 €1 Epson Ecotank ET-2850

Multifunktionsdrucker (Tinte)

ab 637,90 €1 Epson Ecotank ET-8550

Multifunktionsdrucker, A3 (Tinte)

ab 629,00 €1 Canon Maxify GX7050

Multifunktionsdrucker (Pigmenttinte)

ab 394,94 €1 Canon Maxify GX4050

Multifunktionsdrucker (Pigmenttinte)

ab 323,99 €1 Epson Ecotank ET-3850

Multifunktionsdrucker (Tinte)

ab 744,99 €1 Epson Ecotank ET-5850

Multifunktionsdrucker (Pigmenttinte)

ab 470,00 €1 Canon Maxify GX6050

Multifunktionsdrucker (Pigmenttinte)

ab 158,00 €1 HP Smart Tank 5106

Multifunktionsdrucker (Tinte)

Merkliste

×
Drucker vergleichen