I'm wanting to use automatic printing based on a field "isPrinted=0". This works, I get the list of cards I want to print but if the printer has no cards I get an error and the log shows "aborted" for each card. Because the storage item is not updated to a '1', I would expect automatic printing to resume on the next run but it doesn't.
DataExchange shows the query "...where isPrinted = 0" but it doesn't retry the unprinted cards.
How can this be achieved?
This is quite urgent as I was hoping to test the system this afternoon and this is the final hurdle!
We were wanting to run this as an unattended process, with the only user intervention being replacement cards/ribbons.
As it stands, if the ribbon runs out the printer feeds a card for encoding despite the ribbon being exhausted - this then leads to the fed card being rejected (following successful encoding and replacement of the ribbon) and a new card being fed and printed without encoding. This workflow isn't acceptable.
The Evolis print center shows that the ribbon requires replacement but CE doesn't get made aware of this prior to sending the command to move the card to encoder.
We are printing directly to the printer, not using the spooler as the device was mixing up card numbers when performing batch printing.
unfortunately I do not think this is going to work 100% how you want it, like you said CardExchange will process the Mifare encoding before sending the print job so the out of ribbon message will not be applicable until after the encoding.
CardExchange will try to process the Mifare encoding as it is possible that someone wants to do an encode only print run.
I checked with DED regarding the printer driver, but we do not think that there is anyway to prevent the printer from receiving the card positioning command for the encoding if the printer is out of ribbon.
Also the printer will always eject any card in the printer and synchronise the ribbon when the lid is opened/closed.
You could also have the problem where the printer thinks it has ribbon left, but when it comes to printing there is actually no ribbon left.
So this would give the same result but there is no way to check for this, card jams and ribbon breaks will possibly have the same result as when the jam is cleared or the ribbon fixed the printer may still try to process the print job in the queue again.
Is it possible that they could cancel the current print job from the print spooler (I think is still shows the one job even if you are printing directly) before they replace the ribbon ? This will still mean that automated printing still needs to be restarted for that card to be printed, but you would not get a card that is printed but not encoded.
Unfortunately I do not think that the automated printing can handle the physical errors/states with the printers as well as you need in this instance.
CardExchange Solutions Support Team
"If you define the problem correctly, you almost have the solution." (Steve Jobs)
Is there any way that CardExchange can perform the DB updates once printing is successful, instead of prior to printing?
If printing directly to the printer CE knows the progress of the job and knows when it can begin the next one. If the encoding is successful but the print job does not complete in a timely fashion then it would be preferable for the job to be cancelled/paused and the last card re-printed.
My worry is that what will happen is every time the ribbon is changed a successfully encoded card will be rejected, and a non-encoded card will then be printed and the latter is the one which will be handed over to the user.
There must be a way that we can make this workflow function much more smoothly than it does at the moment?
CardExchange processes the storage items after the entire print process has finished from a software point of view. That means that the card has been fetched into the printer, the card has been encoded, the card has been moved into print position and the print command has been sent to the spooler. What apparently happens is that CardExchange can submit the print task successfully and is not aware that printing fails.
Some printer drivers show a message dialog when the printer is out of ribbon, waits until the ribbon is replaced and then continues printing with the card that was already in the printer. In that case CardExchange is not aware of any error and no cards will be spoiled nor records will be skipped.
If the printer driver ejects the card that was successfully encoded but not printed giving an error and then prints the next card, again, CardExchange will not be aware of any problem. This behavior of the printer driver would be a bit strange though, as it should print the same card.
If any error message is perceived by CardExchange, the print process will be interrupted and the card will not print until the print server is restarted. In a single run, CardExchange will never print the same card twice, as that would cause undesirable loops when an error condition occurs.
In general, since CardExchange prints through the Windows printer driver, it is not very aware of what happens in the printer, unless the printer communicates any error condition back when printing directly to the driver.
Senior Software Engineer
"A reasonable man adapts himself to the world. The unreasonable man persists in trying to adapt the world to himself. All progress, therefore, depends on the unreasonable man." (Bernard Shaw)