Hallo Profis, ich suche nach einer Möglichkeit, Rohdaten (Prescribe Befehle) an meinen Kyo FS-1020D Drucker (USB/Parallel) zu senden. Ich habe schon ein kleines GUI mit wxWidgets gebaut, und würde am liebsten damit weiterarbeiten, da die Druckerauswahl schon als Widget vorhanden ist. Leider habe ich bislang noch keine Information darüber finden können, wie sich reine ASCII Daten an den Drucker senden lassen. Weiß jemand, wie das gehen könnte, oder hat andere Vorschläge (Sprache, GUI-Toolkit)? Kann QT sowas? Zur Not könnte ich den Drucker auch am Parallelport betreiben, da sollte mein Vorhaben doch einfacher sein, oder? Gestresst, leif
copy /b datei lpt1: Wenn der Drucker am Parallelport hängt.
Das sollte so gehen: Drucker als Netzwerkdrucker freigeben und -beispielsweise- in der Konsole ("Eingabeaufforderung") folgendes eingeben: dir > \\rechnername\druckerfreigabename oder copy testdatei.txt \\rechnername\druckerfreigabename (wenn Steuerzeichen enthalten sind, ist ein Anhängen von /b hilfreich) So kannst Du Deine "Prescribe Befehle" auch erstmal zu Testzwecken in eine Datei schreiben und diese so auf den Drucker ausgeben. Mit dem UNC-Namen "\\rechnername\druckerfreigabename" kannst Du auch mit normalen Dateizugriffsfunktionen (fopen etc.) aus Deinem Programm heraus auf den Drucker zugreifen. Der "Umweg" über Netzwerkfreigabe/UNC-Namen ist sicherlich auch nicht erforderlich, nur verwende ich keine lokal angeschlossenen Drucker und müsste etwas Nachforschung für die genaue Syntax anstellen. Allerdings stellt sich bei solchen "Lösungen" die Frage, ob es wirklich sinnvoll ist, mit dem Drucker auf dieser direkten Ebene zu kommunizeren; sobald der Drucker durch einen anderen ersetzt wird, der mit einer anderen Druckersteuersprache (PCL, Postscript etc.) angesteuert wird, ist Deine Anwendung mindestens zu überarbeiten.
Wenn die Daten als File vorliegen: schau Dir mal Printfile an. Viele Grüße, Stefan
Tausend Dank! Danke! Ahh. Nachdem das Dateiumleiten (natürlich ;) geklappt hat, bin ich auf codeproject.com auf einige interessante Berichte gestoßen, wo ich das mit dem 'Netzwerktrick' gesehen habe. So ganze wollte ich es nicht glauben, aber wenn Rufus es sagt, wird es stimmen und funktionieren. Das Programm ist wirklich winzig und soll nur Etiketten mit vom Drucker erzeugten PDF 417 Barcodes bepflastern. Das könnte man natürlich auch alles in Software machen/kaufen, aber das lohnt sich für mich nicht. @ Stefan: Du meinst vermutlich http://www.lerup.com/printfile/ .. Ja, wäre vielleicht auch eine Möglichkeit das Programm dann mit nem Systembefehl aufzurufen. Ich probier's mal über die Netzwerkfunktion, wenn das klappt wäre ich ein Stück froher.. Überschwenglichsten Dank an Euch!
> So ganze wollte ich es nicht glauben, aber wenn Rufus es sagt, > wird es stimmen und funktionieren. Genau!
So, leider kommt C:\>copy /b print \\leif\kyocera1 Das Netzlaufwerk ist nicht erreichbar. Weitere Informationen üb... on Netzwerkproblemen finden Sie in der Windows-Hilfe. 0 Datei(en) kopiert. Firewall aus, ich kann mich sogar im Explorer sehen, wenn ich meinen eigenen Rechner suche, freigegeben ist er. Läßt sich die Verbindung irgendwie testen?
Es funktioniert, wenn ich den Computernamen groß schreibe! System-Computername -> wird klein angezeigt Drucker: Eigenschaften-Sicherheit: "Benutzer(COMPUTERNAME\Benutzer)" Dann seh ich mal zu, ob ich's auch aus dem Programm hinbekomme!
Grandios! Ich weiß nicht, ob das gültiges C++ ist, aber es funktioniert: FILE *fp = fopen("\\\\COMPUTER\\druckerfreigabename", "w"); fprintf(fp,"Da bist Du platt!\n"); fclose(fp); Danke!
> Ich weiß nicht, ob das gültiges C++ ist
AFAIK ist es gültiges C++, sofern du "#include <cstdio>" und "using
namespace std;" (oder ein äquivalentes "using") irgendwo oben drüber
stehen hast. Pfadangaben sind soweit ich weiß nicht vom C++-Standard
genormt.
Funktionieren wird es mit diesem Pfad vermutlich trotzdem nur unter
Windows.
btw, für I/O benutzt man in C++ eher streams (Stichwort <fstream>).
Man sollte nicht vergessen, eine Leerzeile bzw. ein \n am Ende der Datei / Daten einzufügen. Sonst denkt der Drucker evtl., es kommt noch was, und druckt erst, wenn neue Daten ankommen.
Um die aktuelle Seite zu drucken brauchste einfach nur nen Button erstellen mit dem Befehl Print(); schon druckt er dir deine seite.
Hast Du die Frage am Anfang dieses Thread überhaupt gelesen?
Dieser Thread ist zwar schon "uralt", da ich heute aber das gleiche Problem hatte hier meine Lösung: http://support.microsoft.com/kb/138594/de Funktioniert mit Prescribe einwandfrei und ist deutlich eleganter als die Sache mit den Netzwerkdruckern. Grüße, Sascha
Die meisten mir bekannten Kyocera-Drucker mit einem Web-GUI haben dort eine Funktion drin, PS- bzw. KPDL-Daten hochzuladen.
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.