Kiddy Till – A pretend till / cash register app for use with real barcode scanners

Kids bored? Downloaded one of those pretend till apps but finding that using your tablet’s built-in camera for the scanning isn’t particularly authentic?

Chances are you’re probably a tech parent. This might just be for you.

I’ve thrown together a quick open source C#/.NET application which has about enough functionality to keep the kids amused using a Symbol/Zebra/Motorola LS2208 barcode scanner (brand depends on when it was purchased), which can typically be obtained from eBay for as little as $10.

What you’ll need

  • Windows 10 Laptop or PC.
  • LS2208 Barcode scanner. Preferably the USB version however RS-232 versions will work too. You’re on your own with that. Others will probably work provided you understand the technical requirements.
  • This software.

Using it

The main screen is completely stateless which will minimise difficulties with little bashing hands. It does not even need to be in the foreground to work.

The “New Sale” button clears the basket and resets the total price to zero. It can also be activated by pressing the Page Up or Page Down key.

There is no other input on the main screen.

Product capture

To make loading products into the application as easy as possible there is a dialogue under the tools menu:

It uses a connected webcam (either built-in or external) to capture a photograph of the product. You then enter the description and price. Scan the barcode. The product is saved and the form is reset ready for the next product.

Barcode scanner setup (ascertain what state it is in)

These barcode scanners have many different operating modes. It may be set to any of them depending on who formerly owned it. For this application it must be set to “CDC mode” with “carriage return” enabled. The most common mode (and factory default) is “HID” mode where it emulates a USB keyboard. HID mode will not work with this application. I tried to support it but it’s hard to offer a clean and reliable user experience.

Plug in the barcode scanner, pull the trigger and see if the laser turns works. If the laser activates, skip to “Configuring the barcode scanner”. If it doesn’t it’s probably set to some obscure mode waiting for the appropriate driver to be loaded.

To fix this: Unplug it, hold down the trigger, then plug it back in while holding down the trigger. Do not release it. Wait until it emits a sequence of beeps. Release the trigger. Unplug it, and repeat. This sequence needs to be performed twice. When it you plug it back in for the third time the laser should now activate when the trigger is pulled.

Configuring the barcode scanner

To configure the barcode scanner correctly you will need to print off this graphic (you cannot scan the computer screen) and scan all five barcodes in the order I have specified. It will emit a sequence of beeps after each scan.

Once the above is done the laser will no longer work. To re-activate it we must now load the driver.

Loading the driver

Open up the Windows device manager. You will see the barcode scanner with an exclamation mark next to it. The instruction manual says Windows will automatically load the driver. This was not my experience.

  • Right click up the scanner and select “Update driver”
  • In the dialogue that pops up select “Browse my computer for drivers”
  • Now select “Let me pick from a list of available drivers on my computer”
  • Now select “Ports (COM & LPT)”
  • In the left hand box scroll down to “Microsoft”
  • Select “USB Serial Device”
  • Press “Next”
  • You will get an unfriendly warning. Press “Yes”
  • The driver should now be loaded. Take note of which “COM” port it was loaded as. In this example it ended up as COM7
  • Now launch the KiddyTill application. Select Tools -> Options
  • Select the appropriate device


Because I haven’t gone to the trouble of building a signed installer (too much effort) Windows will probably block you from running it. Here is a guide for how to unblock it after download.

Leave a Reply

Your email address will not be published. Required fields are marked *