Barcode Scanner

USB Barcode Scanner for the Raspberry Pi

You want to build your own barcode scanner using the Raspberry Pi? All you need is a simple USB barcode scanner which simply plugs into the Raspberry Pi. After that you only have to configure the software.

What do you need to build your barcode scanner?

  • Raspberry Pi
  • USB Barcode Scanner
  • Power Adapter
  • 16GB micro SD

 

After you have put on your Raspberry Pi and connected it to the Wifi, you are ready to go.

 

Step by step to your own Raspberry Pi USB Barcode scanner

 

1. Plug in USB Barcode Scanner to Raspberry Pi

2. Boot Pi and open terminal

3. Type “sudo raspi-config

4. Go to interfacing options and enable “Serial

5. Type “sudo python barcode.py” to run script (press ctrl+c to exit script)

 

Python Programm

barcode_scanner.zip
#!/usr/bin/python
import sys

def barcode_reader():
    hid = {4: 'a', 5: 'b', 6: 'c', 7: 'd', 8: 'e', 9: 'f', 10: 'g', 11: 'h', 12: 'i', 13: 'j', 14: 'k', 15: 'l', 16: 'm',
           17: 'n', 18: 'o', 19: 'p', 20: 'q', 21: 'r', 22: 's', 23: 't', 24: 'u', 25: 'v', 26: 'w', 27: 'x', 28: 'y',
           29: 'z', 30: '1', 31: '2', 32: '3', 33: '4', 34: '5', 35: '6', 36: '7', 37: '8', 38: '9', 39: '0', 44: ' ',
           45: '-', 46: '=', 47: '[', 48: ']', 49: '\\', 51: ';', 52: '\'', 53: '~', 54: ',', 55: '.', 56: '/'}

    hid2 = {4: 'A', 5: 'B', 6: 'C', 7: 'D', 8: 'E', 9: 'F', 10: 'G', 11: 'H', 12: 'I', 13: 'J', 14: 'K', 15: 'L', 16: 'M',
            17: 'N', 18: 'O', 19: 'P', 20: 'Q', 21: 'R', 22: 'S', 23: 'T', 24: 'U', 25: 'V', 26: 'W', 27: 'X', 28: 'Y',
            29: 'Z', 30: '!', 31: '@', 32: '#', 33: '$', 34: '%', 35: '^', 36: '&', 37: '*', 38: '(', 39: ')', 44: ' ',
            45: '_', 46: '+', 47: '{', 48: '}', 49: '|', 51: ':', 52: '"', 53: '~', 54: '<', 55: '>', 56: '?'}

    fp = open('/dev/hidraw0', 'rb') #Just have a look there if you can see something

    ss = ""
    shift = False

    done = False

    while not done:
        # Get the character from the HID
        buffer = fp.read(8)
        for c in buffer:
            if ord(c) > 0:

                #  40 is carriage return which signifies
                #  we are done looking for characters
                if int(ord(c)) == 40:
                    done = True
                    break;

                #  If we are shifted then we have to
                #  use the hid2 characters.
                if shift:

                    # If it is a '2' then it is the shift key
                    if int(ord(c)) == 2:
                        shift = True

                    # if not a 2 then lookup the mapping
                    else:
                        ss += hid2[int(ord(c))]
                        shift = False

                #  If we are not shifted then use
                #  the hid characters

                else:

                    # If it is a '2' then it is the shift key
                    if int(ord(c)) == 2:
                        shift = True

                    # if not a 2 then lookup the mapping
                    else:
                        ss += hid[int(ord(c))]
    return ss


if __name__ == '__main__':
    try:
        while True:
            barcode_reader()
    except KeyboardInterrupt:
        pass

 

 

What are common Problems?

 

Wrong directory

The first problem can be you can’t read anything from the barcode scanner. At the beginning of your programm we read the file where the barcode scanner send his data:

fp = open(‘/dev/hidraw0’, ‘rb’)

If you for example plugin a keyboard it can be that the keyboard is hidrwa0 and the barcode scanner is hidraw1. Depends which was plug in earlier.

 

Shift Key activated

An other problem can be that you have activated the shift key. Then the code won’t work because the barcode scanner works like a keyboard and all data is now shifted.

 

No rights

It can be that you don’t have rights to open the file. Just use “sudo”

Leave a Comment

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