'Fixing Traceback (most recent call last): in Bar code reader using Python

I used the following code to get the reading from a USB bar code reader connected to a raspberry pi.

#!/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') 

    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
               
                if int(ord(c)) == 40:
                    done = True
                    break;

                
                #  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 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

when this is executed, it get the following error message.

Traceback (most recent call last):
  File "C:\Users\buddhika\Desktop\barcode_test.py", line 66, in <module>
    barcode_reader()
File "C:\Users\buddhika\Desktop\barcode_test.py", line 16, in barcode_reader
    fp = open('/dev/hidraw0', 'rb')
FileNotFoundError: [Errno 2] No such file or directory: '/dev/hidraw0'

I tried the methods given in the internet to fix first error, but still the issue is there. The second error was corrected. Why the first error message still comes and how to fix this.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source