Seite 1 von 1

Fehler beim Drucker auslesen

Verfasst: Do, 22. Apr 2021 11:39
von Wolfgang_B
Mahlzeit,
ich verwende Huberts Druckerklasse. Kann man hier irgendwie den vom Drucker gelieferten Fehler auswerten z.B. Papierstau oder kein Papier usw.?

Re: Fehler beim Drucker auslesen

Verfasst: Do, 22. Apr 2021 13:26
von flanelli
Ohne Gewähr auf Korrektheit der Errorcodes...
Habe das Ganze auch nur übernommen ( woher weiß ich nicht mehr ) und geringfügig modifiziert

Code: Alles auswählen

METHOD _HBPrinter:IsPrinterError(oDC)                       // Printer # READY -> error
   local lIsPrinterError := .f., cErrTyp1:="", error_test:=file("DRUCKERROR.CHK")
   LOCAL tmp_err:=1
   DEFAULT oDC TO ::oPS:device()

   do case
      case ::_PrinterCreateErr               // error at create -> there could be nothing
           lIsPrinterError := .t.            // Fehler schon bei create -> da kann nichts sein
           if error_test
              cErrTyp1:="CREATE-ERROR"
           endif
      case IsNil(oDC)
           lIsPrinterError := .t.            // NIL !
           if error_test
              cErrTyp1:="ISNIL-ODC-ERROR"
           endif
      case oDC:isDerivedFrom( "XbpPrinter" ) .and. IsMethod(oDC,"printerStatus")
           lIsPrinterError := ( oDC:printerStatus() # XBPPRN_STATUS_READY )
           if error_test
              tmp_err:=oDC:printerStatus()
              tmp_str:=""
              if tmp_err=0
              	  tmp_str:="Drucker wurde angehalten"
              elseif tmp_err=1
                 tmp_str:="Drucker ist bereit"
              elseif tmp_err=-1
                 tmp_str:="Drucker ist beschäftigt"
              elseif tmp_err=-2
                 tmp_str:="Drucker braucht Wartung ( Toner oder Papierstau )"
              elseif tmp_err=-3
                 tmp_str:="Drucker hat kein Papier"
              elseif tmp_err=-4
                 tmp_str:="Drucker offen oder wärmt auf"
              elseif tmp_err=-5
                 tmp_str:="Drucker nicht erreichbar"
              elseif tmp_err=-6
                 tmp_str:="Drucker ist im Fehlerstatus"
              elseif tmp_err=-7
                 tmp_str:="Drucker ist offline"
              else
                 tmp_str:="Druckerproblem nicht identifizerbar"
              endif
              cErrTyp1:=oDC:devname+" > STATUS = "+alltrim(str(tmp_err))+" > "+tmp_str+" > Station "+usernum+" > "+LW_USERNAM
           endif
   endcase
   if error_test .and. tmp_err<>1
      strfile(dtoc(date())+"  "+cErrTyp1+chr(13)+chr(10),"DRUCKERROR.LOG",.T.)
   endif
return lIsPrinterError

Re: Fehler beim Drucker auslesen

Verfasst: Do, 22. Apr 2021 17:12
von Wolfgang_B
prima, vielen Dank!!