저는 python에 익숙하지 않지만 HID 장치 및 evdev에 대한 경험이 있습니다. HID 장치로 인터페이스하는 2D 바코드 스캐너가 있습니다. 목표는 QR 코드에서 문자열을 가져 오는 것입니다. 나는 리눅스에서 스캐너를 인식 할 수 있었으며 심지어/dev/input에 위치를 발견했다.Evdev를 사용하여 Python의 HID 장치에서 String을 가져 오는 방법은 무엇입니까?
나는 evdev를 발견했으며 아래 예제를 내 스캐너로 구현했습니다. 이것은 사이트의 기본 코드 일뿐입니다. 값을 읽지 만 긴 이벤트 코드를 다운 및 업으로 인쇄합니다. 이것을 문자열로 변환하는 쉬운 방법을 볼 수 없습니다. 내가하고 싶은 것은 파이썬의 HID 스캐너에서 문자열로 읽는 것뿐입니다. 어떤 도움이나 방향 (아마 evdev isnt 대답) 감사하겠습니다.
key event at 1383327570.147000, 2 (KEY_1), down
key event at 1383327570.147990, 2 (KEY_1), up
key event at 1383327570.148997, 3 (KEY_2), down
key event at 1383327570.150010, 3 (KEY_2), up
key event at 1383327570.151009, 29 (KEY_LEFTCTRL), down
key event at 1383327570.151009, 42 (KEY_LEFTSHIFT), down
key event at 1383327570.152017, 36 (KEY_J), down
key event at 1383327570.153005, 36 (KEY_J), up
key event at 1383327570.154004, 29 (KEY_LEFTCTRL), up
key event at 1383327570.155005, 32 (KEY_D), down
key event at 1383327570.155993, 32 (KEY_D), up
key event at 1383327570.157002, 48 (KEY_B), down
key event at 1383327570.158015, 48 (KEY_B), up
key event at 1383327570.158997, 48 (KEY_B), down
key event at 1383327570.282002, 18 (KEY_E), up
key event at 1383327570.283004, 49 (KEY_N), down
key event at 1383327570.284005, 49 (KEY_N), up
key event at 1383327570.284968, 18 (KEY_E), down
많은 감사 :
from evdev import *
dev = InputDevice('/dev/input/event1')
print(dev)
for event in dev.read_loop():
if event.type == ecodes.EV_KEY:
print(categorize(event))
여기에 몇 가지 바코드의 출력은 다음과 같습니다
는 여기에 몇 가지 예를 들어 출력을 내 현재 파이썬 코드입니다!
이것은 내가 필요한 것입니다. 고맙습니다! 그러나 이제 테스트의 다음 단계로 넘어 갔으므로이 코드는 약 10 자 이상의 바코드에서는 작동하지 않습니다. 스캐너는 PC에 연결하고 빈 텍스트 창에 타이핑 할 때도 정상적으로 작동합니다. 그러나 이것으로 바코드의 대부분의 문자를 임의로 삭제합니다. 속도 문제입니까? 아니면 뭔가 잘못하고있는 것입니까? – calumb
루프를 시작하기 전에 오른쪽에 evdev grab 함수를 추가하여이 문제를 해결했습니다. 위의 코드에서 event_loop for 루프 바로 위의'dev.grab() '를 사용했습니다. 또한 내 최종 코드를 내 대답에 추가했습니다. – calumb