업데이트 :데이터가있을 경우에만 USB 바코드 스캐너에서 읽기
나는 파이썬을 사용하여 USB 바코드 스캐너를 성공적으로 읽을 수있었습니다. 사용자가 비어의 경우 EOF
늘 돌아 인수없이 fp.read()
를 사용하여 전송하지 않습니다 바코드 스캐너 때문에 왼쪽 LCD 버튼
def read Barcode
lcd.backlight(lcd.GREEN)
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: '?' }
backPressed = False
lcd.clear()
lcd.message("accn: \nLocation: ")
lcd.setCursor(7, 1)
print("Scan Next Accn:")
while not backPressed:
fp = open('/dev/hidraw0', 'r')
accn = ""
shift = False
done = False
print("should loop")
r, w, e = select.select([ fp ], [], [], 0)
print("Should be a line here")
if fp in r:
print("Fp is in r")
while not done:
print("looping")
buffer = os.read(fp.fileno(), 8)
for c in buffer:
if ord(c) > 0:
if int(ord(c)) == 40:
done = True
fp.flush()
fp.close()
print("Done = True")
break;
if shift:
if int(ord(c)) == 2 :
shift = True
else:
accn += hid2[ int(ord(c)) ]
shift = False
else:
if int(ord(c)) == 2 :
shift = True
else:
accn += hid[ int(ord(c)) ]
print("accn: " + accn)
fileAccn(accn)
fp.close()
backPressed = lcd.buttonPressed(lcd.LEFT)
if(backPressed):
lcd.backlight(lcd.WHITE)
return
backPressed = lcd.buttonPressed(lcd.LEFT)
if(backPressed):
return
return
밀어 경우 나는 비어있는 경우 fp.read()
탈출 및 확인 할 수 있도록하려면 . 어떤 도움을 주셔서 감사합니다. 바코드를 스캔하는 중간에 기능을 종료하고 싶지 않기 때문에 인터럽트 나 시간 초과를 사용하는 것을 주저합니다.
미리 감사드립니다.
정말 도움이되는 링크입니다. 나는 지금 일하고있다. 바코드를 읽은 후 파일에 데이터가 남아있는 것으로 나타났습니다. 파일을 닫은 다음 다시 열면 내 문제도 해결 된 것 같습니다. – Tom