ELP Version for MS Windows is able to ensure, that the provided jobs are printed by 100%. If this is not the case then various actions can be performed.

In order to use this function,

  1. Every time a print job is sent the queue´s port name must be resolved to the IP address or the host name of the printer.
  2. Use "Standard TCP/IP Port" and set the configuration to LPR printing Queue name "RAW" or "PRN".

If monitored printing is enabled, ELP does not send the data stream via the Windows Port Monitor. Instead the stream is sent within the ELP process via socket communication direct to the provided TCP/IP address. Parallel, using an established SNMP communication (Simple Network Management Protocol), ELP ensures that the printing process is successfully finished at the printer.

This method may slow down the printing process a little, especially between jobs, but it is safe, and the exact amount of printed pages are evaluated, even if the user pressed the Job Cancel Button at the printer.

The communication was tested with HP and Ricoh printers. But the implementation allows to set up any printer of any manufacturer, but you need to know the correct MIB for several printer requests.

Finally the resulting page counters can be stored into the Accounting file, meaning that an API to project accounting is possible as well.

 

Easy usage via Rule assistant:

Technical information:

In order to perform this function,

  1. The port of the queue must point to an existing IP address.
  2. Use "Standard TCP/IP Port" and set the configuration to LPR printing queue name "RAW" or "PRN" or "LP".
  3. The printer (JetDirect) HOST NAME must be equal to the DNS name

The ELP function is triggered using the key Monitored_Printing_section. The key points to the section with the specific configuration. Just in case you may have different printers from different manufacturers, you can setup different monitored printing sections, e.g. driver name based.

 

If all your printers should be monitored AND are from one manufacturer use AND they use the same MIB entries, then the key could be set in the rule GLOBAL. On each job, ELP verifies the port name, and if it is not a 4 or 6 digit TCP/IP address, then the routine will notice any Hostname, which does use the following characters: 0-9 A-Z and a-z.. Any character outside those ranges will bypass the monitored printing function.
All page counter Variables are set to -1 and will be read back by the routine from the printer.

Otherwise ELP opens an SNMP connection to the printer and reads back it state and counters. Then the data stream is sent to the monitors printer, until the printer is back to ready mode.

On any errors (like printer is not reachable or error messages) a predefined action takes place, like user notification or resend, delete or archive the job. Those settings are done in the Monitored_Printing_section.

For each printer using a different MIB or a different error scenario, an own section can be defined. So in most cases the key is set in the section global or in a section triggered by the printer name.

The trigger  key:

Monitored_Printing_section Enter any name of a new section, which will contain all the rules keys needed to monitor the printer. Usually inserted in the section global or "Printer name".

 

The following keys set in the window above can only be used in sections, the key Monitored_Printing_section names:

Option: On successful printing

 

Menu name ELP key Description
Net send message to the print job owner OnDoneSendNetMessage If a job was successfully send to the printer and this key is turned on, ELP does send back a net send message that the job is successfully printed.
The service "Nachrichtendienst" / "Message service" needs to be started on the server and PC. You may try the connection by entering in the DOS command box the following line:
NET SEND UserName "This is a test message". As the user name is the content of variable  #USERNAME# is, so you may set it if a server or system process is the valid user for the print job
fix E-Mail address[es] OnDoneSendeMail If a job was successfully send to the printer and this key holds valid e-Mail addresses (Variables are allowed), ELP does send back an e-Mail that the job is successfully printed. The addresses have to be comma separated.
Subject OnDoneSendeMailSubjectText Text for e-Mail. Click on Examples to see more
Body OnDoneSendeMailBodyText Text for e-Mail. Click on Examples to see more
Execute OnDoneCallExternal If a job was successfully send to the printer call any external software like batch files.

 

Like above, there are on any error 2 information channels: E-Mail and Net Send.

 

Menu name ELP key Description
Net send meassage to the print job owner OnErrorSendNetMessage If set and a printer problem appears, ELP will send immediately a notification via "Net Send" to the owner of the job.
The service "Nachrichtendienst" / "Message service" needs to be started on the server and PC. You may try the connection by entering in the DOS command box the following line:
NET SEND UserName "This is a test message". As the user name the content of variable #USERNAME# is used, so you may set it if a server or system process is the valid user for the print job
Wait time in seconds before start OnErrorSendeMail Same function as above, but e-Mail is sent. The value of the key is one or more valid e-Mail addresses, comma separated. Variables can be used.
Enable email protocol

eMailLog

That a mail was sent is logged. You may have a look into the log files:Admin Tab

 

Whenever an error accures, ELP does take the action above, beside:

 

Menu name

ELP key

Description
After error no further eMail SendNextErrorAfterXMins After an error applied, this queue will not send out any other error message for the next X minutes. This command should only be used, if always the same person gets those kind of error information.
After a correct printed job any next error will send out a new first warning.
Ignore printer warnings IgnoreWarning Tell the Safe Monitored Printing system that such warnings can be ignored. Otherwise a toner low warning will lead to error actions.

 

If an error was detected and the E-mail / Message was sent out, Safe Monitored Printing starts now to wait:

 

Menu name

ELP key

Description
Wait time in seconds before start OnErrorJobStartWaitTime Wait time in seconds for the printing process, after a printer error is deteced before the first page is printed. Like Paper out or printer down. Now the Job can be moved, archived and or simply continue printing.
To set this times does only make sense, if a Net Message or an eMail is send out. Otherwise do not use it, that the OnError keys are evaluated.
When printer error appears while printing OnErrorWaitTime Wait time in seconds for the printing process, after a printer error is deteced while already some pages had been printed

 

Finally what to do, after the wait time is over:

 

Menu name

ELP key

Description
When connection to the printer is lost OnConnnectLostExit When connection to the printer is lost (power off / network problems) continue printing after the waiting time via Windows queue. In this case, the job can be aborted
Move to printer OnErrorMoveJob If the problem is not fixed after the Wait Time is over, the complete job will be sent to an new port and is ERASED! You may use any variable analog to the OutPort key.
Important, for accounting the option "Process User" must be set to "Current" user in the PPADMIN Administration tab, in order the moved job will still run under the user name, otherwise it might be counted on the user system.
Archive to OnErrorArchiveJob If the problem is not fixed after the Wait Time is over, the job will be sent to an archive and is ERASED! You may use any variable analog to the OutArchiveDir key.
Execute OnErrorCallExternal If the problem is not fixed after the Wait Time is over call any external software like batch files.
Delete job OnErrorEraseJob If the problem is not fixed after the Wait Time is over, the complete job is simply ERASED, without any further notification.

 

Note:

  • If the maximum print job takes more then 300 seconds, meaning if the print time for the largest job possible should be below 300 seconds. If this is not the case, then you need to increase the DLL waiting time for sending out the error e-mail.
    Open the registry Local Machine - Software - ELP [- Wow6432] - Welpprint. Then change the keys: AmountFileCheck und SleepTime. For Monitored printing the SleepTime of 0.5 seconds (= 500) is anyway stupid and should be set to 1000 (= 1 Second) or even up.
  • If no message is send out, then the user may never know when the job fails, that his job was moved to a different printer, erased and/or archived for reprinting.

1. Example: Monitored printing

[HP LaserJet 9000mfp]

MONITORED_PRINTING_SECTION=MyMonitorSection

 

[MyMonitorSection]

; Send a net message back to the user if something is wrong

OnErrorSendNetMessage=ON

; Wait after the message for 4 minutes

OnErrorWaitTime=240

; Erase the job (University students did print)

ONERRORERASEJOB=ON

; And report that job was printed

OnDoneSendNetMessage=ON

Beispiel Ende


Well if the results of printed pages should be stored in a accounting file, new variables are available as soon as the monitored print function is executed. Unknown variables are set to -1! So if the printer is tiurend off or in an unfixed error state, all Counters may be set to -1.

The available counters and state variables are:

#SNMP_TOTALPAGECOUNT# The actual page counter read back from the printer, before the joib starts
#SNMP_TOTALDUPLEXPAGECOUNT# Dito, but Duplex Page Counter if available
#SNMP_TOTALCOLORPAGECOUNT# Dito, but Color Pages Counter if available
#SNMP_JOBPAGECOUNT# Contains the amount of the printed pages, either at the job end, or until the job is canceled.
#SNMP_JOBDUPLEXPAGECOUNT# Dito for Duplex Page amount
#SNMP_JOBCOLORPAGECOUNT# Dito for Color Page amount
#SNMP_JOBSTATUS# Contains a string if job was completed successfully or not

 

If accounting is turned on then ELP will store the real amount of printed pages, even when the job was aborted by front panel action. Those numbers can be stored into an accounting file.

2. Example: Extension of 1. example

[HP LaserJet 9000mfp]

Monitored_Printing_Section=MyMonitorSection
Accounting=ON
ACC_File=c:\ProgramData\WELP\ACC_FILE_9000mfp.csv
ACC_StoreValues=#USERNAME#;#PRINTDOCNAME#;#PAGECOUNT#;# SNMP_JOBPAGECOUNT#;#SNMP_JOBSTATUS#

Beispiel Ende


As explained earlier ELP uses by default for the SNMP communication the Hewlett-Packard printer MIB. If your printers does not support the same MIB address range, then you can define the correct name range using the following keys again only in the Monitored_Printing_Section:

 

TotalPageCount_MIB MIB address, which returns the total page counter
DuplexPageCount_MIB MIB address, which returns the duplex page counter
ColorPageCount_MIB MIB address, which returns the color page counter
DeviceState_MIB

MIB address, which returns the actual printer state, like DOWN, RUNNING, etc

PrinterState_MIB MIB address, which returns Job state: IDLE, PRINTING,etc


All those addresses need to be entered comma separated like that 1,0,0,0,0,0,0,0,...

 A good place to search for your printers MIB description is http://www.mibdepot.com.
 
If  there is only one of those addresses: PrinterState, DeviceState or TotalPageCount missing, then the Monitored Printing Function can`t be used!