Basic tutorial of how to setup the NADAMOO Wireless Barcode Scanner with the Raspberry Pi.
PARTS:
CanaKit Raspberry Pi 4 4GB Starter Kit – https://amzn.to/2Jrlbfj
NADAMOO Wireless Barcode Scanner – https://amzn.to/373BckB
SETUP:
1. Install EVDEV 1.2.0 library
sudo pip3 install evdev==1.2.0
2. Check barcode device name and path exists
sudo python3 /usr/local/lib/python3.7/dist-packages/evdev/evtest.py
You should see “MMicroelectronics MM32 Joystick” if device is detected
3. Run Script
sudo python3 barcode_wireless.py
CODE:
evdev documentaion: https://python-evdev.readthedocs.io/en/latest/index.html
#!/usr/bin/env python3
from evdev import InputDevice, ecodes, list_devices, categorize
import signal, sys
barCodeDeviceString = "MMicroelectronics MM32 Joystick" # barcode device name
scancodes = {
# Scancode: ASCIICode
0: None, 1: u'ESC', 2: u'1', 3: u'2', 4: u'3', 5: u'4', 6: u'5', 7: u'6', 8: u'7', 9: u'8',
10: u'9', 11: u'0', 12: u'-', 13: u'=', 14: u'BKSP', 15: u'TAB', 16: u'Q', 17: u'W', 18: u'E', 19: u'R',
20: u'T', 21: u'Y', 22: u'U', 23: u'I', 24: u'O', 25: u'P', 26: u'[', 27: u']', 28: u'CRLF', 29: u'LCTRL',
30: u'A', 31: u'S', 32: u'D', 33: u'F', 34: u'G', 35: u'H', 36: u'J', 37: u'K', 38: u'L', 39: u';',
40: u'"', 41: u'`', 42: u'LSHFT', 43: u'\\', 44: u'Z', 45: u'X', 46: u'C', 47: u'V', 48: u'B', 49: u'N',
50: u'M', 51: u',', 52: u'.', 53: u'/', 54: u'RSHFT', 56: u'LALT', 100: u'RALT'
}
def signal_handler(signal, frame):
print('Stopping')
dev.ungrab()
sys.exit(0)
if __name__ == '__main__':
# find usb hid device
devices = map(InputDevice, list_devices())
for device in devices:
# print(device.name, device.fn)
if barCodeDeviceString in device.name:
dev = InputDevice(device.fn)
else:
print('No barcode device found')
sys.exit()
signal.signal(signal.SIGINT, signal_handler)
dev.grab()
# process usb hid events and format barcode data
barcode = ""
try:
for event in dev.read_loop():
if event.type == ecodes.EV_KEY:
data = categorize(event)
if data.keystate == 1 and data.scancode != 42: # Catch only keydown, and not Enter
key_lookup = scancodes.get(data.scancode) or u'UNKNOWN:{}'.format(data.scancode) # lookup corresponding ascii value
if data.scancode == 28: # if enter detected print barcode value and then clear it
print(barcode)
barcode = ""
else:
barcode += key_lookup # append character to barcode string
except KeyboardInterrupt:
dev.close()
References: https://stackoverflow.com/questions/21648595/python-evdev-and-bar-code-scanner