<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN"> <html> <head> <meta name="generator" content="HTML Tidy, see www.w3.org"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="author" content="Jean-Jacques"> <title>Mtink</title> </head> <body style="background-color: rgb(255, 255, 255);"> <h2>Mtink</h2> <b>Mtink</b> ist ein Status-Monitor für EPSON Tintenstrahldrucker. <p> <b>Mtink</b> zeigt Ihnen die Tintenmenge und gibt Ihnen Auskunft über den allgemeinen Status Ihres Druckers. Zudem ist das <b>Überprüfen</b> und <b>Reinigen</b> der Düsen und das <b>Ausrichten</b> der Druckköpfe möglich. Einige Drucker, darunter der <i>Stylus Color 480</i> und der <i>Stylus Color 580</i>, benötigen extra Software um die Tintenbehälter zu wechseln. In <b>Mtink</b> sind diese Steuercodes bereits eingebaut. </p> <h3>Inhalt</h3> <a href="#Requirements">Voraussetzungen für den Betrieb</a><br> <a href="#Protocol">Mtink und die EPSON Kommunikationsprotokolle</a><br> <a href="#HowToWork">Wie Mtink funktioniert</a><br> <a href="#Internationalization">Internationalisation</a><br> <a href="#cmdLineOptions">Optionen in der Befehlszeile</a><br> <a href="#mainWindow">Das Hauptfenster</a><br> <a href="#confWindow">Das Konfigurationsfenster</a><br> <a href="#Align">Druckkopf justieren</a><br> <a href="#Icon">Das Minifenster</a><br> <a href="#Bugs">Bugs</a><br> <a href="#SeeAlso">Siehe auch</a><br> <a href="#ToDo">To do</a><br> <br> <br> <h3><a name="Requirements"></a>Voraussetzungen für den Betrieb</h3> Für den Betrieb sollte <i>openMotif</i>, <i>Motif</i> oder die <i>Lesstif library</i> installiert sein. Falls <b>Mtink</b> kompiliert wird, muss zusätzlich das X-Entwicklerpaket und vom oben genannten die Runtime- und die Entwicklerumgebung installiert sein. Für <b>Mtink</b> muss die Schnittstelle <i>bi</i>-directional sein, das heißt, dass Daten vom Drucker auch gelesen werden müssen. <h4>Linux</h4> Wenn Sie den parallelen Druckerausgang benutzen, dann muss der Kernel oder das parport-Modul korrekt konfiguriert sein. Beim Standardkernel ist das auch in der Regel der Fall, beim Selbstkompilieren von 2.2-Kernelversionen muss der Eintrag in der Konfigurationsdatei "/usr/src/linux/.config" im Abschnitt "CONFIG_PRINTER_READBACK" auf "y" stehen. <p> Leider ist das USB-Druckerport-Modul für ältere 2.2- und 2.4-Kernel fehlerhaft. Gibt es Schwierigkeiten, müssen Sie sich einen neuen Kernel mit höherer Versionsnummer besorgen oder die Datei /usr/src/linux/drivers/usb/printer.c modifizieren. Das ist nicht schwer, es brauchen nur die folgenden Zeilen geändert werden: </p> <pre> static ssize_t usblp_read(struct file *file, char *buffer, size_t count, loff_t *ppos) { struct usblp *usblp = file->private_data; .... if ((usblp->readcount += count) == usblp->readurb.actual_length) usb_submit_urb(&usblp->readurb); return count; } </pre> ändern nach: <pre> static ssize_t usblp_read(struct file *file, char *buffer, size_t count, loff_t *ppos) { struct usblp *usblp = file->private_data; .... if ((usblp->readcount += count) == usblp->readurb.actual_length) <b><font color="#ff0000">{ usblp->readcount = 0; usblp->readurb.dev = usblp->dev;</font></b> usb_submit_urb(&usblp->readurb); return count; <b><font color="#ff0000">}</font></b> } </pre> Die Änderungen sind rot und fett gekennzeichnet. <h4>Solaris</h4> Leider besitze ich keine Sparc-Station, die eine bi-direktionale Schnittstelle zum drucken hat, deshalb konnte ich es nicht testen. Neuere Workstations verfügen über einen "ecpp"-Port, der beidseitige Kommunikation erlaubt. Falls das Jemanden mit einem Epson-Drucker gelingt, so möge er mir bitte Bescheid geben, damit ich es in künftigen Versionen berücksichtigen kann. <h3><a name="Protocol"></a>Mtink und die EPSON Kommunikationsprotokolle</h3> Mit Erscheinen des <i>Stylus Color 740</i> und des <i>Stylus Scan</i> verwendet Epson ein neues Protokoll, um diese Drucker anzusteuern. Es heißt <b>D4</b> und basiert auf dem Entwurf des Datenübertragungsprotokolls <b>IEEE 1284.4,</b> Version 1.5, und ermöglicht die Kommunikation über mehrere logische Kanäle. Der größte vorteil ist, dass Kommandos über einen <i>control</i>-Kanal geschickt werden können, und obwohl der Drucker gerade arbeitet, also eigentlich <i>busy</i> ist, ausgeführt werden können. Dank dieses Protokolls ist es auch möglich, diesen Port mit anderen Geräten, beispielsweise einem Scanner, zu teilen. <p> Die Implementation des <b>D4</b>-Protokolls scheint für ältere Drucker sehr unvollständig zu sein und ist somit nicht frei von Fehlern - im Gegensatz zu neueren Geräten wie dem <i>Stylus Photo 890</i> (das ist mein eigener). </p> <p> Das <b>D4</b>-Protokoll erfordert, dass der Drucker zumindest ein paar Grundzüge der <b>EJL</b> (Epson Job Language) beherrscht. Das wichtigste Kommando daraus ist der <i>Exit from D4 mode</i>-Befehl, der von allen Geräten unterstützt wird, die das <b>D4</b>-Kommunikations-Protokoll und den <i>Get ID</i>-Befehl beherrschen. Letzterer veranlasst den Drucker zur Ausgabe über das Modell, die Bezeichnung und die unterstützten Sprachen. Der <i>Get ID</i>-Befehl wird offensichtlich nicht vom <i>Stylus Scan 2500</i> und wahrscheinlich auch nicht vom <i>Stylus Scan 2000</i> und von der <i>Stylus Cxxx</i>-Reihe unterstützt. Diese benötigen das <b>D4</b> Pendant von<i>Get ID</i> . Bisher erfuhr man Informationen über den Drucker-Status durch die Epson <b>REMOTE</b>-Befehle. Diese Befehle sind in den neueren Geräten weiterhin eingebaut. </p> <p> <b>Mtink</b> unterscheidet die unterschiedlichen Protokolle, aber der Autor kennt nicht alle Fähigkeiten der Drucker, die von Epson ausgeliefert wurden. Um zu verhindern, dass <b>Mtink</b> auf Reaktionen des Druckers wartet, die schlicht nicht vorhanden sind, können die erforderlichen Modifikationen leicht vorgenommen werden. </p> <p>Die Fähigkeiten der verschiedenen Drucker sind zu Beginn der Datei model.c beschrieben. Die wichtigsten Felder sind die, in denen das "protocol" steht und die "id". Im "protocol"-Feld muss einer der folgenden Einträge stehen: </p> <ul> <li>PROT_OLD Der Drucker kann mit dem <b>D4</b>-Protokoll überhaupt nichts anfangen.</li> <li>PROT_NEW Der Drucker kennt einige wenige Befehle von <b>D4</b> . <i>Exit from D4 mode</i> ist erforderlich.</li> <li>PROT_D4 Der Drucker unterstützt das <b>D4</b>-Protokoll im größeren Rahmen.</li> </ul> <a name="Protocol">Sollte der Drucker auf das <i>get ID</i>-Kommando (bei <b>EJL</b> und <b>D4</b> Versionen) nicht antworten, wird es problematisch, denn Fragen an den Drucker werden unmöglich und der Wert des Feldes der <i>id</i> wird anstelle von <i>True</i> auf <i>False</i> gesetzt. <pre> /* name colors <font color="#ff0000">prot </font> state exch e.sep cl sep <font color="#ff0000">reset</font> <font color="#ff0000"> id</font> */ { "Stylus C20SX", 4,<font color="#ff0000">PROT_D4</font>, True, False, False, True, PROT_D4, <font color="#ff0000"> True</font>, 3, 15, 2, 9, NULL },<br> { "Stylus Color", 4,<font color="#ff0000">PROT_OLD</font>, True, False, False, False, PROT_OLD,<font color="#ff0000"> True</font>, 1, 7, 0, 0, NULL },<br> { "Stylus Photo 750", 6,<font color="#ff0000">PROT_NEW</font>, True, False, False, False, PROT_NEW,<font color="#ff0000"> True</font>, 3, 15, 0, 0, NULL },<br> { "Stylus Scan 2500", 4,<font color="#ff0000">PROT_D4</font>, True, False, False, False, PROT_OLD|PROT_D4, <font color="#ff0000">False</font>,3, 15, 0, 0, NULL }, <br> </pre> Aus den Daten der Datei model.c können Sie erkennen, das der <i>Stylus Scan 2500</i> nichts über seine Identität preisgibt, aber das <b>D4</b>-Protokoll benötigt. Der <i>Stylus Photo 750</i> ist einer aus der ersten Generation, die <b>D4</b> beherrschen. Die Kommunikation funktioniert aber nur, wenn der <i>Exit from D4</i>-Befehl dem erforderlichen <b>REMOTE</b> -Befehl vorangestellt wird. Der <i>Stylus Color</i> ist ein älterer Drucker, der nichts über das <b>D4</b>-Protokoll weiß. Letztlich benötigt der <i>Stylus C20SX</i> das <b>D4</b>-Protokoll (das "alte" <i>Get ID</i> funktioniert nicht). <p> Durch Korrekturen an den jeweiligen Feldern sollte <b>Mtink</b> mit Ihrem Drucker zusammenarbeiten. Bitte informieren Sie mich, wenn Sie eine Kombination gefunden haben, die mit Ihrem Drucker zusammenarbeitet und die von den Vorgaben aus der Datei model.c abweicht. In der <i>gimp-print</i>-Dokumentation steht mehr dazu:</a></p> <p> <a href="http://gimp-print.sourceforge.net">http://gimp-print.sourceforge.net</a> </p> <h3><a name ="HowToWork"></a></a>Wie Mtink funktioniert</h3> Wenn Sie <b>Mtink</b> das erste Mal aufrufen, werden sie nach der Gerätedatei (Anschluss) und dem Drucker gefragt. Dann wird die Drucker-Beschreibungsdatei geladen und mit dem Druckereintrag verglichen. Steht das <i>id</i>-Feld auf <i>True</i>, versucht <b>Mtink</b>, das Gerät zu bestimmen. War Ihre Angabe zum Druckermodell nicht korrekt, wird von <b>Mtink</b> dasjenige, dass es selbst herausgefunden hat, genommen (ausser wenn ein Gerät deklariert wurde, das keine Identifikation zurück gab). Diese Daten, Druckermodell und Port, werden in der Datei <b>$HOME/.mtink</b> gespeichert. Wenn Sie <b>Mtink</b> danach aufrufen, wird die Konfigurationsdatei eingelesen und mit der Antwort des angeschlossenen Druckers verglichen. Das Löschen der Datei <b>$HOME/.mtink</b> ist wie ein <i>Reset</i> der Konfiguration. <p> <b>Mtink</b> belegt zwei Bereiche im Arbeitsspeicher und kommuniziert über "Shared Memory". Das erlaubt kurze Refresh-Zeiten für die grafische Ausgabe über X und vermeidet Fehlfunktionen im <i>printer code</i>, damit sich der nicht mit der X-Umgebung, den Timer, den Interrupts und anderen Funktionen ins Gehege kommt. </p> <p> <b>Mtink</b> entspricht vom Aufbau her nicht herkömlichen X-Anwendungen. Damit Daten von verschiedenen Darstellungsmasken zurückgeliefert werden können und damit die Ansteuerung des Druckers nicht zu Wartezeiten führt, bei denen die Oberfläche nicht mehr bedienbar wird, beinhaltet <b>Mtink</b> für jede Maske und für die Schnittstelle zur Druckeransteuerung eigene <i>XEven</i>-Schleifen. </p> <h4><a name="Internationalization"></a><b>Internationalisation</b></h4> <p> <b>Mtink</b> kann auf einfache Weise an andere Sprachen angepasst werden. Zur Zeit kennt es die Sprachen Englisch, Französisch, Italienisch, Deutsch und Türkisch. Sie können leicht Ihre eigene Sprache einbauen, in dem Sie die Datei <i>Mtink.res</i> editieren und in Ihr Home-Verzeichnis als <i>EpsonUtil</i> kopieren. Der Resourcen-Name für Ihre Sprache leitet sich von den Umgebungsvariablen <i>LANG</i>, <i>LC_ALL</i> und <i>LC_MESSAGE</i> ab. So erwartet beispielsweise <b>Mtink</b> beim Inhalt einer Variablen von <i>fr_FR</i> eine Resourcen-Datei mit dem Namen <i>EpsonUtil.Fr</i>. Bitte beachten Sie, dass bei der Länderkennung der erste Buchstabe, hier das <i>F</i>, großgeschrieben ist und der zweite Buchstabe entsprechend dem Variableninhalt von <i>LANG</i> ist. Wird die Resourcendatei nicht gefunden, kommt <i>default</i> zum Zug, also Englisch. </p> <h4>Beispiel:</h4> <pre> EpsonUtil*title_LB.fontList: *-helvetica-*-r-normal--14-*-*-*-*-*-iso8859-1 EpsonUtil*fontList: *-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1 !!! set the font required for turkish EpsonUtil.Tr*title_LB.fontList: *-helvetica-*-r-normal--14-*-*-*-*-*-iso8859-9 EpsonUtil.Tr*fontList: *-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-9 .... !!! The default (english) EpsonUtil*previous_PB.labelString: Previous !!! and the texts for german, french, italian and turkish EpsonUtil.De*previous_PB.labelString: Zurück EpsonUtil.Fr*previous_PB.labelString: précédent EpsonUtil.It*previous_PB.labelString: Informazioni EpsonUtil.Tr*previous_PB.labelString: Geri </pre> Wenn Sie die Übersetzung in andere Sprachen unterstützen möchten, senden Sie mir bitte Ihre Datei, die mit Ihrem Namen und Ihrer Internetadresse, sofern Sie es möchten, versehen ist. <h3><a name="cmdLineOptions"></a>Optionen in der Befehlszeile</h3> <b>Mtink</b> mit Optionen aufzurufen ist normalerweise nicht erforderlich. Falls <b>Mtink</b> seine Bildschirmausgabe zu einem anderen Computer schicken soll, müssen Sie die <i>DISPLAY</i>-Variable anpassen, oder <b>Mtink</b> so aufrufen: <i>mtink -display ComputerName:0</i>. Es ist nicht erforderlich, dass auf dem Rechner, an dem der Drucker angeschlossen ist, ein X-Server läuft. <b>Mtink</b> kann mittels <i>ssh</i> und <i>rsh</i>, sofern vorhanden, gestartet werden: <pre><i>$ ssh serverName /home/jj/mtink/mtink -display workStationName:0.</i> </pre> Sie können auf diesem Weg auch die Sprache einstellen. <pre>$ <i>ssh serverName LANG=fr /home/jj/mtink/mtink -display workStationName:0</i></pre> veranlasst <b>Mtink</b> zur Ausgabe von französischen Texten. Bitte berücksichtigen Sie, dass nicht alle Browser (Hilfe Funktion) korrekt arbeiten, wenn diese vom entfernten Rechner aus aufgerufen werden. <p> Die automatische Druckererkennung kann mit dieser Option ausgeschaltet werden: </a></p> <pre> $ <i>mtink -noAutoDetect</i> </pre> <p> Die Option <i>-config <Nummer></i> erlaubt den gleichzeitigen Betrieb mit unterschiedlichen Druckern. </p> Beispiel: <p>Drucker 1 ist ein Stylus Color 980 an /dev/lp0</p> <p>und</p> <p>Drucker 2 ist ein Stylus Photo 890 an /dev/usb/lp0.</p> <p>Sie können mit <i>mtink -config 1</i> <b>Mtink</b> für Drucker 1 (Stylus Color 980) und mit <i>mtink -config 2</i> für Drucker 1 (Stylus Photo 890) aufgerufen werden.</p> <p>Die Konfigurationsdaten werden in die Dateien ~/.mtinkrc.1 beziehungsweise ~/.mtinkrc.2 gespeichert.</p> <p>Ohne Angabe der Option <i>-config #</i> oder mit <i>-config 0</i> wird auf die Datei ~/.mtinkrc zurückgegriffen.</p> <h3><a name="mainWindow">Das Hauptfenster</a></h3> <img src="mtink.De.gif" alt="mtink Hauptfenster" align="top"> <p> Ganz oben im Fenster wird der angeschlossenen Drucker angezeigt. Grafisch als Balken und in Zahlen wird die Tintenmenge dargestellt, die sich aktuell in den Behältern befindet. Die Zahl der Balken hängt von der tatsächlich verfügbaren Zahl der Farben des Druckers ab. Der Druckerstatus beinhaltet einige Informationen über den internen Zustand, beipielsweise ob er gerade druckt. Die Schaltflächen unter der Statuszeile erlauben verschiedene Aktionen. Hier im Beispiel ist der letzte Button nicht aktiv, weil dieser Drucker das Wechseln der Patronen auf diesem Wege nicht unterstützt. In diesem Fall müsste man selbst am Drucker die entsprechenden Knöpfe drücken. Mit den Buttons ganz unten kann man sich verschiedene Informationen über <b>Mtink</b> anschauen und das Programm mit <i>Exit</i> verlassen. Die Schaltfläche mit der Bezeichnung <i>Hilfe</i> zeigt diesen Text an, den Sie gerade lesen. </p> <h3><a name="confWindow"></a>Das Konfigurationsfenster</h3> <img src="configure.De.gif" alt="Mtink Konfigurationsfenster" align="top"> <p> Hier können Sie bestimmen, welcher Browser die HTML-Hilfedatei anzeigen soll. <b>Mtink</b> kann mitgeteilt werden, dass beim Programmaufruf automatisch nach einem Browser gesucht werden soll. Das ist die Voreinstellung. </p> <h4><b>Auswahl eines Browsers</b></h4> <p> Sie können den Namen des Browsers in das Eingabefeld schreiben oder den <b>[ ... ]</b>-Button drücken. Dann erscheint ein Dateimanager. <b>Mtink</b> kennt Optionen für die verschiedenen Browser wie Netscape, Mozilla und Galeon und startet sie entsprechend. Andere Browser, beispielsweise der Konqueror, der Gnome-Help-Browser und Opera brauchen keine besonderen Optionen und können auch verwendet werden. </p> <p> Manche Browser verweigern die Arbeit, wenn die dazugehörige Desktop-Umgebung fehlt. Die bessere Lösung sind in diesem Fall Browser wie Netscape, Mozilla, Galeon und Opera, die von einem speziellen Desktop wie beispielsweise <i>KDE</i> unabhängig sind. Der Autor steht der Entwicklung von <i>KDE</i> kritisch gegenüber, lediglich die <i>Bluescreens</i> sind bei KDE noch nicht implementiert. </p> <h4><b>Automatische Erkennung</b></h4> <p>Der <i>Check</i>-Button erlaubt den Wechsel zwischen der automatischen und der manuellen Erkennung. Im automatischen Modus versucht <b>Mtink</b> , den angeschlossenen Drucker zu identifzieren. Falls Ihr Modell älter als der <i>Stylus Color 400/600</i> und dergleichen ist, und er nach dem ersten Versuch nicht erkannt wurde, sendet <b>Mtink</b> einen Code, damit der Drucker ein paar Zeichen auf Papier ausgibt. Dabei ist es ein Vorteil, wenn die automatische Erkennung ausgeschaltet wird, dann gehen die späteren Programmstarts schneller. Das könnte lediglich in dem Fall problematisch werden, sobald ein anderer Drucker angeschlossen wird. Nach dem Ändern der Einstellungen müssen sie auch gesichert werden. Diese Daten werden in die Datei <i>$HOME/.mtinkrc</i> geschrieben.</p> <h4><a name="Align"></a>Druckkopf justieren</h4> <b>Mtink</b> kann auch die Druckköpfe ausrichten. Diese Funktion ist jedoch abhängig vom Druckermodell und die Erscheinung des Programmfensters hängt ebenfalls davon ab. Manche Drucker, wie der <i>Stylus Color 480</i> und <i>Stylus Color</i> <i>580</i>, erfordern eine getrennte Justierung für den farbigen und für den schwarzen Kopf. Dementsprechend werden auch die Fenster mit den Auswahlmöglichkeiten angepasst, so dass es in diesem Fall zwei Buttons, einen für den farbigen und einen für den schwarzen Kopf, gibt. Ein weiterer Unterschied ist im Ausdruck des Testmusters zu sehen, denn es können 8 oder 15 Streifen sein. Unterschiedlich ist auch die Zahl der Durchgänge. <p> <table> <caption> <br> </caption> <tbody> <tr align="left" valign="top"> <td><img src="align1.De.gif" alt="Mtink Einstellung Erstes-Fenster" border="0"> </td> <td><img src="align2.De.gif" alt="Mtink Einstellung Pause-Fenster" border="0"> </td> </tr> <tr> <td><br> </td> <td><br> </td> </tr> <tr align="left" valign="top"> <td>Mtink Einstellung Erstes-Fenster</td> <td>Mtink Einstellung Pause-Fenster</td> </tr> <tr> <td><br> </td> <td><br> </td> </tr> <tr align="left" valign="top"> <td><img src="align3.De.gif" alt="Mtink Einstellung Setup-Fenster" border="0"> </td> <td><img src="align4.De.gif"alt="Mtink Einstellung letztes Fenster" border="0"> </td> </tr> <tr> <td><br> </td> <td><br> </td> </tr> <tr> <td>Mtink Einstellung Setup-Fenster</td> <td>Mtink Einstellung letztes Fenster</td> </tr> </tbody> </table> </p> <p>Das zweite und das dritte Fenster wird je nach Druckermodell bis zu dreimal angezeigt.</p> <h3><a name="Bugs"></a></a>Bugs</h3> Wahrscheinlich eine Menge. Ich kann nicht garantieren, dass der Code, der zum Drucker gesendet wird, immer korrekt ist, weil mir Informationen darüber oft fehlen. Die Benutzung des Programms geschieht auf eigene Gefahr. <h3><a name="Icon">Das MiniFenster</h3> Diese Fenster wird nur aufgeschaltet wenn der Server <b>mtinkd</b> läuft oder die Rc-Datei <i>.mtinkrc</i> deb Pfad "/var/lib/mtink/..." beinhaltet.<br> <img src="micon.gif"> <p> Das Fenster kann 2 Fareben annehmen, Grün (alles klar), Orange (Tintenmenge weniger als 10%) oder Rot (Drucker nicht verfügbar oder wenige als 5 % Tinte).<br> Durch betätigen er linke Maustaste, wird das Mtink-Hauptfenster aufgeschaltet bzw. geschlossen.<br> Das Fenster kann frei positionniert werden (rechte Maustaste). Die Position des Fensters wird in der Datei <i>~/.mtinksess[.Konfiguration nummer</i> festgehalten wenn mtink via <i>ALT + F4</i> oder der Schliessschaltfläche der Titelleiste beendet wird. <h3><a name="SeeAlso"></a>Siehe auch</h3> <a href="index.html"><b>Index</b></a><br> <a href="mtinkd.html"><b>mtinkd der server for D4 Drucker</b></a><br> <a href="mtinkc.html"><b>minkc ein Auswahl Dialog für Besitzern von mehereren EPSON druckern</b></a><br> <a href="ttink.html"><b>ttink ein Konsolen basierten Statusmonitor</b></a> <br> <br> <h3><a name="ToDo">To do</a></h3> <ul> <li>Bessere Dokumentation.</li> <li>Übersetzen der Dokumentation.</li> <li>Test mit mehreren Druckern.</li> <li>....</li> </ul> <h3>Autor</h3> Jean-Jacques Sarton <a href="mailto:jj.sarton@t-online.de">jj.sarton@t-online.de</a> <br> Zur <a href="http://xwtools.automatix.de">Xwtools Home Page</a> <br> <br> </body> </html>