Wir haben früher oft die erste Seite vom 2. Schacht (LOGO) geholt und den Rest vom 1. Schacht.
Mit den Laserdruckern hat das unter Clipper und Xbase++ funktioniert.
Man muss nur die Werte manuell abfragen und speichern und natürlich muss immer das richtige Papier im vorgesehenen Schacht eingelegt sein.
Der Drucker kann nicht erkennen ob LOGO oder BLANKO oder Etiketten im Drucker liegen, das muss schon der Mensch richtig bestücken.
Wie das mit den Druckjobs ist müsste ich nachsehen.
Seit langem haben wir nur noch Farblaser oder sehr gute Tintenspritzer, da wird alles inkl. LOGO mit ausgedruckt.
Papiergrösse in Druckschacht abfragen
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Papiergrösse in Druckschacht abfragen
hi,
ein
erzeugt nicht immer ein "gültiges" XbpPrinter-Object z.b. wenn der Drucker "Offline" ist
der printerStatus() meldet dabei nicht XBPPRN_STATUS_OFFLINE
IHMO wird der Status des Print-Spooler und nicht vom "ungültigen" XbpPrinter-Object angezeigt
deshalb prüfe ich ob es ein "gültiges" XbpPrinter-Object ist
Der Printer-Status kann man nur dann geprüft werden wenn der Drucker nicht "Offline" ist
Die Demo XbpPrinter() im Help File ist für "lokale" Drucker ausgelegt die direkt mit dem PC verbunden sind.
Ich habe damals von Novell "Nadel"- Drucker auf Laser mit Schacht umgestellt welcher per "fester" IP frei gegeben wurde
während die Novell Drucker-Queue immer zu erreichen war konnte der Laser in "Sleep" Modus gehen -> Offline
die Konstanten von \XPPW32\Include\xbpdev.ch sind NICHT die "Werte" ...
ich frage es so ab
danach rufe ich ein Configure auf und "verbinde" es mit XbpPresspace()
zunächst muss ich dazu bemerken das es um einen Netzwerkdrucker ging der nicht an einem PC angeschlossen war.ramses hat geschrieben: ↑Fr, 27. Aug 2021 9:38habe ich jetzt noch getestet. Es gibt immer .t. egal welcher Zustand der Drucker tatsächlich hat.Code: Alles auswählen
IF oDC:Create( cPrinter ) == oDC // = self
Erst nach dem Absetzen eines Druckjobs auf der gleichen WS ergibt :PrinterStatus() z.B. den Wert -3 (Kein Papier)
Die Druckjobs werden jedoch weiterhin problemlos angenommen und und in den Spooler gestellt und nach auffüllen von Papier auch problemlos gedruckt. Es funktioniert genau so wie MS dokumentiert.
ein
Code: Alles auswählen
oDC:Create( cPrinterObjectName )
der printerStatus() meldet dabei nicht XBPPRN_STATUS_OFFLINE
IHMO wird der Status des Print-Spooler und nicht vom "ungültigen" XbpPrinter-Object angezeigt
deshalb prüfe ich ob es ein "gültiges" XbpPrinter-Object ist
Code: Alles auswählen
IF oDC:Create( cPrinter ) == oDC // = self
ELSE
MSGBOX( "! Drucker ist Offline !" )
BREAK // raus
ENDIF
nStatus := oDC:PrinterStatus()
Die Demo XbpPrinter() im Help File ist für "lokale" Drucker ausgelegt die direkt mit dem PC verbunden sind.
Ich habe damals von Novell "Nadel"- Drucker auf Laser mit Schacht umgestellt welcher per "fester" IP frei gegeben wurde
während die Novell Drucker-Queue immer zu erreichen war konnte der Laser in "Sleep" Modus gehen -> Offline
"Das" sind die Werte die du zuordnen musstramses hat geschrieben: ↑Fr, 27. Aug 2021 9:38 Auch die Schachtauswahl funktioniert nicht so wie du vorschlägst. Schau mal was :PaperBin() meldet:
PaperBins : {{15, " Automatisch ausw„hlen"}, {257, " Drucker autom. Auswahl"}, {258, " Manuelle Zufuhr"}, {259, " Fach 1"}, {260, " Fach 2"}, {261, " Fach 3"}, {262, " Fach 4"}, {263, " Fach 5"}, {1285, "Nicht bestimmt"}, {1284, "Normal"}, {1513, "HP LaserJet 90 g"}, {1276, "Leicht 60-74g"}, {1514, "Mittelschwer 85-95 g"}, {1279, "Briefpapier"}, {1278, "Recyclingpapier"}, {1515, "HP Color Laser 105 g, m"}, {1516, "HP Premium Choice 120 g"}, {1518, "HP Pr„sentationspapier "}, {1519, "HP Professional 120g, s"}, {1520, "HP Premium Pr„sentation"}, {1257, "Mittleres Gewicht 96-11"}, {1275, "Schwer 111-130g"}, {1271, "Mittleres Gewicht 96-11"}, {1270, "Hochgl„nzend, schwer 11"}, {1523, "HP Broschrenpapier, ma"}, {1525, "HP Broschrenpapier, ho"}, {1274, "Sehr schwer 131-175g"}, {1269, "Hochgl„nzend, sehr schw"}, {1530, "HP Deckblattpapier 200 "}, {1531, "HP Fotopapier, matt 200"}, {1533, "HP Broschrenpapier, ho"}, {1273, "Karton 176-220 g"}, {1272, "Karte 176-220 g, hochgl"}, {1537, "Color Laser-Transparent"}, {1280, "Etiketten"}, {1282, "Briefkopf"}, {1267, "Briefumschlag"}, {1283, "Vorgedruckt"}, {1281, "Vorgelocht"}, {1277, "Farbig"}, {1540, "Rau"}, {1542, "Folie, opak"}}
die Konstanten von \XPPW32\Include\xbpdev.ch sind NICHT die "Werte" ...
ich frage es so ab
Code: Alles auswählen
IF oDC:paperBins() != NIL
aPB := oDC:paperBins()
iMax := LEN( aPB )
// HP P2055dn
//
IF "P2050" $ cPrinter // HP LaserJet P2050 Series PCL6
FOR i = 1 TO iMax
nDummy := aPB[ i ] [ 1 ]
DO CASE
CASE nPaperBin == XBPPRN_PAPERBIN_CASETTE
IF nDummy == 260 // das ist der HP2050 Wert
nPaperBin := 260
lRaus := .F.
EXIT
ENDIF
CASE nPaperBin == XBPPRN_PAPERBIN_MIDDLE
IF nDummy == 261
nPaperBin := 261
lRaus := .F.
EXIT
ENDIF
ENDCASE
NEXT
Code: Alles auswählen
IF nPaperBin > 0
oDC:setPaperBin( nPaperBin ) // welche Kasette
ENDIF
oDC:setNumCopies( nCopies ) // Anzahl Kopien
oDC:setCollationMode( XBPPRN_COLLATIONMODE_OFF )
oDC:configure()
oPS := XBPPRESSPACE() :New()
oPS:Create( )
oPS:configure( oDC, oDC:paperSize(), GRA_PU_LOMETRIC )
gruss by OHR
Jimmy
Jimmy
- AUGE_OHR
- Marvin
- Beiträge: 12911
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Papiergrösse in Druckschacht abfragen
hi,
ich habe die "Konfiguration" in PrinterPS wo ich den Schacht, Format usw. jedes mal neu angebe.
---
es kommt wohl noch aus einer Zeit wo Windows / Hardware noch nicht so gut reagierten.
bei dem NEC P60 kam es, trotz Doppel-Einzug und Papier "von unten", immer wieder zu Papier Stau.
dabei ging Drucke, die schon im Drucker RAM waren, verloren wenn man den Drucker ausgeschaltet hat.
seit dem schicke ich immer nur einen Druck-Job ab und prüfe vor dem nächsten ob der Drucker bereit ist
p.s. wenn der Drucker viel RAM hat kann man auch den Drucker-Spooler "abschalten" und der Drucker reagiert schneller
bei mir ist :endpage auch Ende des Druck-JobWolfgang Ciriack hat geschrieben: ↑Fr, 27. Aug 2021 12:32 Ich meine, eine Schachtsetzen zwischen :endPage und :StartPage funktioniert.
Code: Alles auswählen
oPrinter := PrinterPS( ... )
oPrinter:device() :startDoc( cText )
oPrinter:device() :endDoc()
DelDevice( oPrinter )
---
es kommt wohl noch aus einer Zeit wo Windows / Hardware noch nicht so gut reagierten.
bei dem NEC P60 kam es, trotz Doppel-Einzug und Papier "von unten", immer wieder zu Papier Stau.
dabei ging Drucke, die schon im Drucker RAM waren, verloren wenn man den Drucker ausgeschaltet hat.
seit dem schicke ich immer nur einen Druck-Job ab und prüfe vor dem nächsten ob der Drucker bereit ist
p.s. wenn der Drucker viel RAM hat kann man auch den Drucker-Spooler "abschalten" und der Drucker reagiert schneller
gruss by OHR
Jimmy
Jimmy