mikrocontroller.net

Forum: PC-Programmierung (wx, C++): Rohdaten an Windows Drucker senden?


Autor: leif (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
copy /b datei lpt1:

Wenn der Drucker am Parallelport hängt.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stefan Kleinwort (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die Daten als File vorliegen: schau Dir mal Printfile an.

Viele Grüße, Stefan

Autor: leif (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Katzeklo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> So ganze wollte ich es nicht glauben, aber wenn Rufus es sagt,
> wird es stimmen und funktionieren.

Genau!

Autor: leif (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist denn der Drucker auch explizit freigegeben?

Autor: leif (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: leif (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Christoph __ (chris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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>).

Autor: leif (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Amir (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um die aktuelle Seite zu drucken brauchste einfach nur nen Button
erstellen mit dem Befehl Print();
schon druckt er dir deine seite.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du die Frage am Anfang dieses Thread überhaupt gelesen?

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die meisten mir bekannten Kyocera-Drucker mit einem Web-GUI haben dort 
eine Funktion drin, PS- bzw. KPDL-Daten hochzuladen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.