I’ve been working on a project to integrate my team’s POS (point of sale) software with an Ingenico iSC480. The device is pretty nice looking and some of the API stuff is pretty easy, especially since you can get an example app from Ingenico, and it shows how to do nearly anything.
However, the example apps don’t seem to show how to detect when the user is done signing. I had to figure it out from the examples.
So, I would like to share two ways of doing this. I call them “the not-so-obvious way of detecting when to get the signature” and “the not-obvious-in-any-way method of detecting when to get the signature”. Catchy names, eh?
1. The not-so-obvious way of detecting when to get the signature
Even though this way is “not-so-obvious”, I still figured it out. The API contains a command “M29”. This asks the device if any recent signatures have shown up. This command always gets a reply. You can set up a timer loop to keep asking the device the same question. When the user is done signing, the reply (from the M29 command) will have a status greater-than zero. This indicates the number of chunks that the signature has been broken-into. Zero chunks, means no signature.
2. The not-obvious-in-any-way method of detecting when to get the signature
I discovered this approach after reading-through a bunch of config files. I do stuff like that, just because I’m curious and I like to see what is in them. Sometimes you find the coolest stuff. Well, surprise, surprise! In one of the config files I found that it is possible to set the device to send a message when the user is done signing. You would think that would be “on” all of the time. Nope. To turn it on, you have to send a M60 command. Set option “0009” with a value of “0002”. From now on, the device will send a “20” message, when the user is done signing.
There you go. I hope that made your job a little easier.