Saturday, September 17, 2011

CardMe + Barcodes

CardMe: Location Aware Wallet is an iPhone app that stores location tagged images of membership and loyalty cards on your iPhone so you can remove the cluttered mess of cards from your wallet or purse.   The newly released version 1.1  adds automatic barcode processing that is easier and more convenient than before.  This tutorial demonstrates the barcode scanning feature of CardMe version 1.1.

Acknowledgment
Barcode scanning in CardMe is implemented using the open source ZBar barcode reader library.  As noted on the CardMe open source page, ZBar is licensed under the GNU LGPL 2.1.

Scanning + Encoding
Many loyalty card barcodes are encoded in a format known as EAN-13 [see http://en.wikipedia.org/wiki/International_Article_Number_(EAN) for nitty-gritty details].   Note: the common UPC format [see http://en.wikipedia.org/wiki/Universal_Product_Code] is part of EAN-13.  CardMe can use ZBar to decode an EAN-13 barcode to a 13 digit number.  CardMe can then generate a clean image of the barcode for that number.

Here are instructions for scanning an EAN-13 loyalty card into CardMe.

Step 1: Click the Add Card button, and drag the red pin to the location of store.




Step 2: Click the expansion arrow to display the card details screen.   On the card details screen click the camera icon.    Select Scan Barcode from the action sheet.  That will bring up the ZBar scanning screen, and you'll see a live preview image generated by your iPhone's camera.  When the camera is focused on a barcode, ZBar will draw a green box around the code and automatically take the image.  CardMe will then return to the card details screen, and show the generated barcode image.







Step 3: Fill in the name field, and click the Save icon.  The loyalty card and card number are now ready to be displayed.  For best results, ask your sales clerk or cashier to scan the barcode image with a handheld barcode scanner.






Scanning Only
While UPC/EAN-13 are the most popular formats for barcodes, some loyalty programs use other formats like Code 39 [see http://en.wikipedia.org/wiki/Code_39] and Code 128 [see http://en.wikipedia.org/wiki/Code_128].  CardMe, through ZBar, has excellent support for scanning these codes.  However, CardMe cannot currently generate clean images from these codes.

Follow Step 1 and Step 2 above to create a new card and use the Scan Barcode option to acquire the barcode image.  CardMe will learn the card number from the barcode, and will be able to display that card number with the photograph of the barcode.



This tutorial showed how to use the automatic barcode processing features of CardMe: Location Aware Wallet to manage your loyalty cards.  CardMe can automatically recognize and decipher the barcode on a loyalty card.  For barcodes in the popular UPC and EAN-13 formats, CardMe can generate a clean image of the barcode that can be read in-store by a handheld barcode reader.  For barcodes in other formats, CardMe can keep a photograph of the loyalty card in your location aware wallet.