【发布时间】:2018-02-15 07:02:25
【问题描述】:
我编写了这段代码,用于处理来自条形码扫描仪的扫描输入。但是这里的输入来自单行,我无法区分下一个扫描的输入和过去的输入。这是我的代码:
from evdev import InputDevice, categorize, ecodes
import select
dev = InputDevice('/dev/input/event2')
data = ""
def parse_key_to_char(val):
return CODE_MAP_CHAR[val] if val in CODE_MAP_CHAR else ""
for event in dev.read_loop():
if event.type == ecodes.EV_KEY:
e = categorize(event)
if e.keystate == e.key_up:
print parse_key_to_char(e.keycode)
输出是:
0
7
5
6
7
8
1
6
4
1
2
5
虽然预期的输出是:
075678164125
如果我在同一个终端,它可以工作,但如果我专注于其他终端,它将无法工作。我希望在后台捕获这些输入并将它们传递给正在调用当前函数的其他函数。
【问题讨论】:
-
看来问题可能出在您的
parse_key_to_char()函数中。 -
def parse_key_to_char(val): 返回 CODE_MAP_CHAR[val] if val in CODE_MAP_CHAR else ""
-
不要在 cmets 中发布代码,如果相关,请编辑/添加到您的帖子中
-
已编辑但我错误地在评论中添加了代码。
-
How to print without newline or space? 的可能重复项假设您使用的是 Python 2,我强烈 推荐
__future__导入并使用新版本。未来证明您的代码并且是一个更简洁、更直观的解决方案。
标签: python input raspberry-pi evdev