在python中扫描输入作为单个输入

时间:2018-02-15 07:02:25

标签: python input raspberry-pi evdev

我编写了这段代码,用于处理来自条形码扫描仪的扫描输入。但这里的输入来自单行,我无法区分下一个扫描输入和过去输入。这是我的代码:

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

如果我在同一个终端但是如果我专注于其他终端则不起作用。我希望在后台捕获这些输入并将它们传递给调用当前函数的其他函数。

1 个答案:

答案 0 :(得分:0)

print会在打印文本的末尾自动添加一个新行。您需要将所有符号添加到一个字符串然后打印它:

for event in dev.read_loop():
    if event.type == ecodes.EV_KEY:
        e = categorize(event)
        if e.keystate == e.key_up:
            text = text + parse_key_to_char(e.keycode)
print text

PS。您可以在print之后添加逗号,然后不会有新行,而是空格:

for i in range (5):
    print i,

输出:

0 1 2 3 4