Printerstatus z.B. Papier alle offline etc.

Von Ausgaben mit der Gra-Engine über Generatoren bis zum Export in diversen Formaten

Moderator: Moderatoren

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Beitrag von AUGE_OHR »

hi,
medmaster hat geschrieben: Und wieso kann Kyocera das mit Delphi wunderbar lösen .. ? Die analysieren jeden Drucker im Netz auf seine Funktion .. fragen die Drucker in einem periodischen Thread ab
dabi fällt mir ein ob das Tool auch aktive war als du deine Test gemacht
hast ? schon mal ohne versucht ?

die 2nd. Frage. wo hängen deine Kyocera im Netzwerk dran ?
... etwa an LPT1 von einer Workstation ?
Zuletzt geändert von AUGE_OHR am Do, 31. Jan 2008 21:48, insgesamt 1-mal geändert.
gruss by OHR
Jimmy
medmaster
UDF-Programmierer
UDF-Programmierer
Beiträge: 58
Registriert: Di, 29. Jan 2008 1:43

Ok - Netzwerkdrucker

Beitrag von medmaster »

also :
1. wie verhält sich :printerready() bei lokalem Drucker ??
2. wie bei Netwerkdruckern ?
3. wie bei freigegebenen Druckern an anderen Netz-PCs ?
Rainer
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

Ich habe nun meinem Netzwerkdrucker (Samsung) und dem USB Canon das Papier entzogen.
Im Windows Druckmanager (ich drucke immer über Spooler) sind alle BEREIT.
Drucke nun aus MS Word, Xbase++ und Testseite aus Druckertreiber.
Immer noch alles BEREIT.
Nach etwas Wartezeit meckern die Druckertreiber fehlendes Papier an.
Aus allen Anwendungen kann ich weiter ohne Fehlermeldung drucken ... geht alles in die Warteschlange und das ist toll, denn so kann ich weiter arbeiten.
Die Druckerwarteschlange gibt trotz der Papierfehlerfenster immer noch BEREIT aus.
Weder MS Word kümmert sich drum, noch Xbase++ gibt etwas anderes als BEREIT zurück.

NUR wenn ich den PC abschalte, an dem ein freigegebener Drucker hängt, das merkt der Druckspooler und meckert, dass der Rechner / Drucker nicht erreichbar ist. Außerdem kann ich meinen Drucker anhalten, das stört MS Word nicht, denn die Warteschlange nimmt ja weiter Aufträge an, aber meine Druckerklasse merkt nun, dass der PrinterStatus nicht mehr READY ist und gibt eine Fehlermeldung (erwünschte MSGBOX) aus. Hier war ich etwas kleinlich, aber es kam vor, dass ein Anwender da rumgespielt hatte und sich danach gewundert hat wo das Papier bleibt ;-)

Auf jeden Fall zeigt es, dass Xbase++ genau die Meldungen erhält, die der WindowsSpooler weitergibt. Also KEIN Fehler in Xbase++ ;-)

Im übrigen hat mein Laser 128 MB (oder waren es mehr ...) Arbeitsspeicher, da passen einige schwarzweiß Seiten rein, bis er merkt, dass er nicht drucken kann 8)
Gruß
Hubert
medmaster
UDF-Programmierer
UDF-Programmierer
Beiträge: 58
Registriert: Di, 29. Jan 2008 1:43

Beitrag von medmaster »

Hubert,
ok ..danke .. - also will heissen : das geht mit xBase nicht zu klären ob ein Drucker physikalisch bereit ist, bevor ich drucke ... ??
Rainer
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

wenn er an LPTx angeschlossen ist könnte IsPrinter() helfen.
Siehe hierzu in der Hilfe nach.

Bei einem Netzwerkdrucker, der auf LPTx gemappt wurde,
weiß ich nicht wie IsPrinter() reagiert.

Der XbpPrinter() jedenfalls gibt nur das zurück, was der Druckspooler sagt.

Wenn der Netzwerkdrucker ein WEB-Interface hat, kann man das abfragen ...

Ansonsten habe ich mal im PowerBasic Forum danach gefragt, dort sitzen - ähnlich wie bei Delphi - mehr Leute die sehr hardwarenah programmieren, eventuell kommt ja da was raus. Xbase++ kann (fast) alle System-DLLs / API-Funktionen aufrufen und auswerten, man muss nur wissen welche man braucht und was die machen ;-)
Gruß
Hubert
medmaster
UDF-Programmierer
UDF-Programmierer
Beiträge: 58
Registriert: Di, 29. Jan 2008 1:43

Beitrag von medmaster »

ok .. isprinter() meldet auch immer ready ....
Irgendwo wird ja windows gemeldet dass es nicht drucken kann ..das muss man wohl irgendwo abfragen und das timeout für die Anwort heruntersetzen. Mal sehn ... was die "Spezialisten" sagen
Rainer
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

ich habe einige Antworten erhalten, mit Verweis auf diese Seiten:

http://vcfaq.mvps.org/sdk/15.htm
http://support.microsoft.com/kb/160129/en-us

Dort steht sinngemäß, dass mit der ApiFunktion GetPrinter() die Infos abgefragt werden können, dass aber ab WindowsNT bis auf die Störungen des Spoolers selbst, immer READY zurückgegeben wird.

Ich bin mir sicher, dass XbpPrinter() genau diese Funktion abfragt.

Sobald ein Druckauftrag vorliegt, kann man aber diesen selbst abfragen, ob Fehler aufgetreten sind (falls man als User genug Rechte hat auf
diese zuzugreifen ???).

Die Win32 API Funktion EnumJobs() liefert die Anzahl der Druckjobs eines Druckers zurück. Mit dieser Info kann man dann den ersten Job mit GetJob() abfragen. Wenn kein JOB in der Warteschlage ist, sollte kein Problem bestehen ... die Ergebnisse beider Funktionen stehen in 2 Strukturen.

Im Microsoft Artikel ist ein C-Code angegeben ...

Mit DLLFunction() in Verbindung mit der Win32 Programmers Reference und Kenntnis über API Aufrufe und Zugriffe auf Strukturen, kann man also sicher überprüfen ob ein Druckjob Probleme hatte ...

... ich habe jetzt aber andere Probleme ;-)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Ok - Netzwerkdrucker

Beitrag von AUGE_OHR »

hi,
medmaster hat geschrieben: 1. wie verhält sich :printerready() bei lokalem Drucker ??
2. wie bei Netwerkdruckern ?
3. wie bei freigegebenen Druckern an anderen Netz-PCs ?
Das hab ich doch nun Seitenlang geschrieben !!!

Du solltest aber mal die Frage beantworten "wo" deine Testdrucker dran
hängen und ob das Kyocera Tool desinstalliert wurde.
Zuletzt geändert von AUGE_OHR am Do, 31. Jan 2008 21:48, insgesamt 1-mal geändert.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

ich hatte etwas Zeit zum experimentieren in PowerBasic.
Wenn ich die Druckjobs durchgehe, dann meldet EINER davon (der aktuelle - Nummer 0 ) FEHLER + Papier fehlt (0x10). Da ich jedoch 2 Druckertreiber auf einen Drucker installiert habe (PS und PCL), sind auch in der zweiten Druckerschlage Jobs. Dort meldet der letzte (???) den Fehler Papierstau :?

Mal sehen ob ich in den nächsten Tagen das ganze nach Xbase bekomme und eine schöne Funktion draus mache ... den Druckerhandle müssten wir ja im XbpPrinter haben oder ... :?
Gruß
Hubert
Antworten