我是python新手,但对HID设备和evdev有经验。我有一个二维条码扫描仪接口作为隐藏设备。目标是从二维码中获取字符串。我能够识别Linux中的扫描仪,甚至可以在/dev/input中找到它的位置。
我找到了evdev并用我的扫描仪实现了下面的示例。这只是他们网站上的默认代码。它会读取值,但会打印长事件代码,其中包含向下和向上。我看不出一个简单的方法把这个变成字符串。我只想从Python中的HID扫描器读取一个字符串。任何帮助或指导都将不胜感激(也许evdev不是答案)。
下面是我当前的python代码和一些示例输出:
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))
下面是一些条形码的输出:
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
非常感谢!
这里缺少一个转换步骤。您的输出格式已经很不错了,所以我将帮助您进一步分解它:
要对此有任何有用的理解,您需要做两件事:
不过,有一个简单的方法来绘制它们。使用在线服务生成包含所有可用字符的已知条形码,然后扫描该条形码并将输出的每个扫描码映射到扫描仪的正确字母/号码。您可以使用以下稍微修改过的代码来更好地控制输出:
下面是这个脚本的一些示例输出
一旦你在线生成一些条码,你就会知道哪个扫描码被映射到哪个值!建立你自己的表和利润!
高温高压
伏都教的代码非常有用,把我踢向了正确的方向。我想回答我自己的问题,以增加清晰度,任何其他人试图接口霍尼韦尔MS7580或类似的光学扫描仪与键盘模拟与python在linux上。
这个项目是使用BeagleBone Black完成的,我只有命令行访问权限,因此不能仅仅使用扫描仪作为常规键盘。为了正确地处理移位,我不得不在按下移位按钮时添加第二组扫描代码。这是我从二维码中读取字符串的最终代码:
非常感谢伏都教指点我和埃夫德夫的正确方向。
相关问题 更多 >
编程相关推荐