如何在Python中将hidapi读取的输出转换为字符串?

时间:2018-08-19 08:15:07

标签: python-3.x hidapi

我正在读取带有json文本的简单QR码:

  

{test:Hi}

enter image description here

import hid
import time

h = hid.device()
h.open(0x1eab, 0x8003)

print("Manufacturer: %s" % h.get_manufacturer_string())
print("Product: %s" % h.get_product_string())
print("Serial No: %s" % h.get_serial_number_string())

try:
    while True: 
        d = h.read(64)
        if d: 
            print('read: "{}"'.format(d))
finally:
    print("Closing the device")
    h.close()

但是,在控制台中,它返回的是:

Manufacturer: YK
Product: YK-2D PRODUCT HID KBW
Serial No: MS001-000000000
read: "[2, 0, 47, 0, 0, 0, 0, 0]"
read: "[0, 0, 0, 0, 0, 0, 0, 0]"
read: "[0, 0, 23, 0, 0, 0, 0, 0]"
read: "[0, 0, 0, 0, 0, 0, 0, 0]"
read: "[0, 0, 8, 0, 0, 0, 0, 0]"
read: "[0, 0, 0, 0, 0, 0, 0, 0]"
read: "[0, 0, 22, 0, 0, 0, 0, 0]"
read: "[0, 0, 0, 0, 0, 0, 0, 0]"
read: "[0, 0, 23, 0, 0, 0, 0, 0]"
read: "[0, 0, 0, 0, 0, 0, 0, 0]"
read: "[2, 0, 51, 0, 0, 0, 0, 0]"
read: "[0, 0, 0, 0, 0, 0, 0, 0]"
read: "[2, 0, 11, 0, 0, 0, 0, 0]"
read: "[0, 0, 0, 0, 0, 0, 0, 0]"
read: "[0, 0, 12, 0, 0, 0, 0, 0]"
read: "[0, 0, 0, 0, 0, 0, 0, 0]"
read: "[2, 0, 48, 0, 0, 0, 0, 0]"
read: "[0, 0, 0, 0, 0, 0, 0, 0]"
read: "[0, 0, 40, 0, 0, 0, 0, 0]"
read: "[0, 0, 0, 0, 0, 0, 0, 0]"

1 个答案:

答案 0 :(得分:0)

这是非常确定的键盘输出,这意味着扫描程序会发送击键。

第一个字节是修饰符标志(shift,cntrl 、.) 秒始终为0。 第三是密钥用法(您可以将其称为scancode)。 对于条形码读取器,其余的值始终为0,因为操作系统无法保证键的顺序。

在python3中,您可以使用input()函数读取它。更好的是使用其他接口。 键盘模拟应该是您在公司中尝试使用的最后一个界面(我是键盘先生:-),这是条形码读取器中的主要播放器之一。

好的条形码扫描仪可以切换到其他USB接口,例如HidPos或CDC-ACM(ComPort仿真)。