I have a DLINK DNS-325 network storage and it can work as a print server. I
have connected my HP LaserJet 1020 printer to it and for past six years I was able to print using that print
server. However, whenever I needed to print on two sides, or needed to add more paper, or had a paper jam
and then wanted to continue printing, I wasn't able to proceed with the print. The red LED would blink, but
the printer doesn't have the button to continue printing.
When that printer is connected to your PC, the driver takes care of those
situations and offers you to click somewhere on the screen to continue printing. With this print server,
that option was no longer available.
That was quite unpleasant situation, but I was able to resolve it by finding
out that on the internal NAS web site, among printer server options, there was a "Clear print queue(s)"
button, which continues with the printing. I was able to figure out the URL which was hit by the button, and
fortunately, that URL didn't require user to log on. The URL is something like this:
http://<NAS_IP_ADDRESS>/cgi-bin/system_mgr.cgi?cmd=cgi_clear_print
I have placed an icon on my desktop as a shortcut with the address above.
However, that fix required me to leave the printer and go back to the computer to click on that icon on my
desktop, to continue with the printing. That is where one of my raspberry pi devices came in - I have
connected a button to the pi and whenever I press that button, the Python code visits the URL above and
flushes the print buffer, continuing the print.
Here is the Python code:
def
edge_detected(channel):
print 'EDGE detected, channel is ', channel val = GPIO.input(PORT_SWITCH) if val == 0: print "FLUSH!" try: r =
requests.get('http://x.y.z.w/cgi-bin/system_mgr.cgi?cmd=cgi_clear_print') print r.text except: print
str(sys.exc_info())
GPIO.add_event_detect(PORT_SWITCH,
GPIO.BOTH, callback=edge_detected, bouncetime=50) The code above uses the
Requests
library.
One day I will connect my printer to the RPI instead of NAS, but so far, this works.