问题标签 [pywinusb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
24776 浏览

python-2.7 - 在 Python 中从/向 USB HID 设备进行简单的读/写?

我有一个相当简单的 USB HID 设备,我一直试图弄清楚如何使用 Python 读写。我已经能够使用 PyWinUSB 读取它,但是当我尝试写入它时问题就出现了。试图写它会使事情爆炸。

例如:

这工作正常。然后读取原始数据,这就是我现在所关心的(一旦我能弄清楚如何写入被诅咒的东西,我就会使用它):

这很好用(事实上,当我看到它工作时非常令人兴奋)。所以我会像这样分配数据处理程序:

每次我按下一个按钮,都很好。数据如您所愿。太棒了!

当我想写入设备时,问题就来了。按照示例 simple_send 文件作为模板(这可能不是最佳选择),我将执行以下操作:

这将返回一个带有包含 4 个条目的字典的报表对象。那是对的吗?您是否使用 output_reports 对象写入设备?尝试通过将报告值设置为 ANYTHING 来做到这一点:

这将继续返回一些我无法解释的令人讨厌的错误:

我正在使用 Windows 7。我已经设法(最终)找到了 HID DLL 导出函数的参考,我不必(或者,就此而言,甚至真的想要)使用 PyWinUSB 库。我只是想完成这项工作,看起来并没有那么难,但确实如此。

有人可以告诉我我在这里做错了什么吗?

谢谢。

此外,我尝试跟踪错误调用,并在程序刚刚关闭之前完成了它,这有点令人沮丧。

0 投票
1 回答
1096 浏览

python-2.7 - 从 Python 调用 SetupDiGetClassDevs 只返回一个整数值

我正在尝试为一个相当简单的 USB 设备创建一个简单的读/写应用程序,但事实证明它根本不是那么简单。

我正在使用 WinUSB 和 SetupAPI DLL 并从头开始工作,因为我似乎找不到任何真正适合我需要的东西。PyWinUSB 和 PyUSB 等等等等都接近了,但是当我尝试用它们实际写入设备时,它们失败了。

无论如何,现在我仍然处于零基础。按照说明,我从 SetupAPI.dll 调用 SetupDiGetClassDevsExW 函数。该函数正确执行,如调用返回零的 kernel32.lasterror 函数所示,但我从调用中返回的唯一内容是一个整数值。那是对的吗?这甚至是正确的功能吗?(有 4 个类似,而且不只是普通的 SetupDiGetClassDevs 函数。这 4 个函数是 SetupGetClassDevsExW、SetupGetCLassDevsExA、SetupGetClassDevsA 和 SetupGetClassDevsW。)我需要创建一个类来处理它吗?我问是因为调用下一个函数 SetupDiEnumDeviceInterfaces 只返回了代码 259 的失败,根据快速谷歌搜索,这意味着 ERROR_NO_MORE_ITEMS。

我已经取得了一些进展,有人向我展示了正确的类结构方法,用于创建用于保存一些信息的结构,但由于我以前从未真正使用过 USB 设备的编程,更不用说在 Python 中了,我我还是有点卡住了。我将提供答案所需的更多信息,但现在我不想让这个 Q/A 陷入不必要的信息。

谢谢。

0 投票
1 回答
584 浏览

python-2.7 - What do I pass as the last value to the function SetupAPI.DLL.SetupDiEnumDeviceInterfaces()?

I'm working in Python trying to create a simple program that reads and write from and to a fairly simple USB device. The problem I'm having is that since PyWinUSB and PyUSB don't seem to have what I need (trying to write to the device makes things explode), I have to work from scratch using the ctypes python module and the raw dll functions in WinUSB and SetupAPI.

I've been able to get my question answered about how to define the structure that I'm passing to the function, but the problem that I'm having now is that according to the specifications of the function... well, I'll just quote it.

How do I translate these requirements into Python?

The structure class I'm working with right now looks like this:

According to what I was informed by an answer to an earlier question.

Thanks.

0 投票
1 回答
925 浏览

python - PyWinUSB 无法识别的错误消息

我正在尝试使用 PyWinUSB 与我拥有的一个非常简单的 USB 设备进行通信。该装置是两个组件;一个无线收发器和设备本身,它有 5 个按钮、一个旋转拨盘和一个 DIP 开关。按下任何按钮(取决于拨盘和开关的设置)时,都会向收发器传输一个值。

该设备还可以接收用于各种目的的信号。

使用 PyWinUSB,我从设备接收输入没有问题。我遇到的问题来自我尝试向设备发送内容时。这会导致我至今无法破译的错误。即使对 simple_send.py 示例程序进行基本的更改也会使其爆炸。

我认为我遇到的问题是我不知道目标使用参数是什么。我不是 100% 确定这是做什么的,但是当我在找到它之后从设备中获取报告时,我有一些运气,但除此之外,我无法弄清楚为什么它一直有错误以及我可以做些什么来解决它。

您可以在此处找到错误本身,并在此处找到我的 simple_send.py 示例版本。任何反馈表示赞赏。

0 投票
1 回答
2653 浏览

python-2.7 - 从 pywinusb / python 初始化一个 USB 设备

我的问题类似于 Will "Simple reading from/write from/to a USB HID device in Python?" 所建议的问题,但遵循它我没有得到任何结果。问题:我正在尝试处理 Oregon WMRS200 Meteo 站,它将 USB 连接实现为 HID 设备。我开始调整/简化提供的“原始数据.py”示例,如下所示

数据传输未开始。我在网上发现系统必须初始化一次(在重置或pw失败后)发送缓冲区 0x20 0x00 0x08 0x01 0x00 0x00 0x00 0x00 问题是我不知道如何发送它。做类似发送报告(如上面引用的示例)之类的事情不会得到任何结果。

如果在重置后我开始和停止原始的俄勒冈 sw 一切开始工作,即通道以某种方式初始化。在通信通道上安装嗅探器我想我看到了字节串到设备,但是,我怎样才能发送它?这是带有原始 sw 的嗅探器的输出。我想字节模式可以在 URB 9-10 中看到去设备。

从 URB 11 - --> 正常传输也从我的示例脚本开始。

我希望我已经足够清楚.....感谢您的帮助。

0 投票
1 回答
1010 浏览

python - 从处理函数中检索数据/异常

requested_serial_number当有效请求到达 Web 服务器(来自查询字符串)时,我正在尝试使用 Python 和 pywinusb-0.3.2 从 USB 称重秤读取数据。

所以我的里面有以下代码do_GET

这是我的 scales_handler (加上自定义异常定义):

所以过程是:

  1. Python 开始使用 http.server 监听端口 8000 上的请求,HTTPServer并且BaseHTTPRequestHandler
  2. 一个请求进来并被路由到我的do_GET函数。
  3. 执行一些基本验证,然后do_GET搜索匹配的 USB HID(我的第一个代码示例)。
  4. 如果找到匹配项,它会打开设备并传入数据处理程序。

我想要达到的目标:

我想让数据处理程序继续从秤上读取直到data[1] == 4(这表明秤上的读数稳定)。那时,我想在 my 中检索此读数do_GET并将其发送到等待的 HTTP 客户端,关闭设备并结束函数。

但是, myGotStableWeightException并没有被困在 mydo_GET中,我认为是因为它被扔进了不同的线程。我是使用多线程编程的新手,我无法弄清楚如何在结果do_GET匹配data[1] == 4条件后恢复结果。

编辑

我得到什么:

这是我在终端中看到的输出scales_handler

0 投票
2 回答
18100 浏览

python - 如何使用 python / pywinusb 将隐藏数据发送到设备?

我正在尝试使用 pywinusb 将输出报告发送到 pic18f4550。该设备可以接收数据,我已经使用 C# 应用程序对其进行了测试,效果很好。此外,我可以使用 pywinusb 从设备中读取数据,但我在尝试发送数据时遇到问题。

这是我正在运行的代码:

它会产生此错误:

0 投票
1 回答
12102 浏览

python - python有一个简单的跨平台HID模块吗?

我正在尝试编写一些代码来从诸如秤之类的 USB HID 设备获取接收数据。我在 Windows 上使用了 pywinusb,但我需要它是跨平台的。pyhid 说它仅适用于 Mac OS X。到目前为止,我发现的唯一跨平台模块是 libhid,它是用 C 编写的,但仍然可以通过 python 访问。但是,我还没有找到任何有用的互联网资源来说明如何在 python 中使用它。

我需要做的就是从 USB 秤上读取重量。

还有其他跨平台的 python HID 模块>?

0 投票
1 回答
2255 浏览

python - 在 Python 中从 HID 游戏控制器接收数据

我正在尝试使用 Python 脚本与游戏控制器人机接口设备 (HID) 通信,但我无法从控制器接收数据。我正在使用 pywinusb 0.3.2 和 Python 3.3。游戏控制器是 Logitech Gamepad F310.Link Here to pywinusb。

我已经能够让 python 识别 HID,但我被困在从那里去的地方。我识别控制器的代码是:

此代码返回如下内容: HID 设备 (vID=0x00a, pID=0xa000, v=0x0000); 罗技;Logitech Dual Action,路径:\(此处为长序列中的数字和字母)

我不确定这里的方法是否适用于控制器,或者是否有另一个库比 pywinusb 更可取。如果我必须切换库,我宁愿切换到跨平台的库。示例部分中包含的少量文档不足以让我弄清楚这一点。

我的问题是:我如何从控制器接收数据?有命令吗?我曾与 Arduino 一起工作过,将它连接到 Wii Nunchuk 是一个类似的过程。我是否必须发送初始化序列,类似于 Arduino?我需要知道控制器上两个摇杆的 x 和 y 值以及按钮是否被按下。

如果这很明显或已经得到回答,我深表歉意。我以前从未在 python 中使用过 HID。

0 投票
1 回答
1321 浏览

python-3.3 - 我无法让 PyWinUSB 示例工作

我正在尝试从 pywinusb 获取示例,但无济于事。

我的设置是:

  • Windows7-64位上的python3.3
  • 使用“python setup.py install”脚本安装的 pywinusb-0.3.2

我得到这个输出:

如您所见,我直接从控制台运行脚本。

我是一名经验丰富的 C 程序员,刚刚学习 Python。会不会是与 Python 2/3 不兼容?我在想我的设置有问题。我不认为这些例子是错误的。