gpt4 book ai didi

python - 解释 HIDAPI python 输出

转载 作者:行者123 更新时间:2023-12-01 15:48:06 35 4
gpt4 key购买 nike

我想从 OS X 上的 Python 的 USB HID 扫描仪读取一个字符串。下面的例子是我的起点,我已经能够为我的扫描仪定制代码:我已经能够执行命令:h.open () 成功并打印出制造商和产品字符串。 scan codes were verified with EVDEV with the scanner.

挑战在于解释返回的数据并将其映射回 ascii 字符串。

This post provides python HIDAPI example code :

 from __future__ import print_function

import hid
import time

print("Opening the device")

h = hid.device()
h.open(1118, 2048) # A Microsoft wireless combo keyboard & mouse

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()
$ sudo python try.py输出:
Opening the device
Manufacturer: Microsoft
Product: Microsoft® Nano Transceiver v2.0
Serial No: None
read: "[0, 0, 0, 0, 0, 0, 0, 0]"
read: "[0, 0, 0, 0, 0, 0, 0, 0]"
read: "[0, 0, 0, 0, 0, 0, 0, 0]"

--8<-- snip lots of repeated lines --8<--

read: "[0, 0, 0, 0, 0, 0, 0, 0]"
read: "[0, 0, 0, 0, 0, 0, 0, 0]"
read: "[0, 0, 21, 0, 0, 0, 0, 0]"
read: "[0, 0, 21, 0, 0, 0, 0, 0]"
read: "[0, 0, 21, 0, 0, 0, 0, 0]"
read: "[0, 0, 21, 0, 0, 0, 0, 0]"
read: "[0, 0, 0, 0, 0, 0, 0, 0]"
read: "[0, 0, 4, 0, 0, 0, 0, 0]"
read: "[0, 0, 4, 22, 0, 0, 0, 0]"
read: "[0, 0, 4, 22, 0, 0, 0, 0]"
read: "[0, 0, 4, 22, 0, 0, 0, 0]"
read: "[0, 0, 4, 22, 0, 0, 0, 0]"
read: "[0, 0, 4, 22, 0, 0, 0, 0]"
read: "[0, 0, 4, 0, 0, 0, 0, 0]"
read: "[0, 0, 4, 0, 0, 0, 0, 0]"
read: "[0, 0, 4, 9, 0, 0, 0, 0]"
read: "[0, 0, 4, 9, 0, 0, 0, 0]"
read: "[0, 0, 4, 9, 0, 0, 0, 0]"
read: "[0, 0, 4, 9, 0, 0, 0, 0]"
read: "[0, 0, 4, 9, 7, 0, 0, 0]"
read: "[0, 0, 4, 9, 7, 0, 0, 0]"
read: "[0, 0, 7, 0, 0, 0, 0, 0]"
^Closing the device
Traceback (most recent call last):
File "try.py", line 17, in <module>
d = h.read(64)
KeyboardInterrupt

问题

我找不到好的例子( like those found with EVDEV )。任何等效的链接都会非常有帮助。 在没有良好文档的情况下解释输出是一项挑战。 h.read() 返回一个列表
  • 为什么 h.read() 选择了 64?

    d = h.read(64)

  • 当 64 替换为 1,2,3...8 中的数字时,列表中的元素数量相同。 9 个或更多的结果是一个包含 8 个元素的列表。
  • 为什么变量“d”是一个包含 8 个元素的输出列表? (8 未在任何地方指定)

    打印('读:“{}”'。格式(d))
  • 每个打印的输出列表代表什么? 1 个输入字符?
  • 输出列表中的每一列代表什么\编码?
  • 是否有已发布的将数字映射到键盘的表格?

  • 期待回复: 如果您有使用 HIDAPI(尤其是 Python)的经验,请在您的回答中说明这一点。进入 HID 扫描仪体验双倍奖金回合

    最佳答案

    HIDAPI(这是 Python 正在使用的)不检索描述符,这是解析传入数据所需的。
    您需要的是一种转储和解码这些描述符的方法:
    https://github.com/todbot/mac-hid-dump
    https://eleccelerator.com/usbdescreqparser/

    关于python - 解释 HIDAPI python 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50361770/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com