问题标签 [hidapi]
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.
python - 两个线程,一个对象
我正在用 Python 为 USB HID 设备编写 Linux 驱动程序。设备有两种发送数据的方式,这两种方式都是必需的:特征报告(同步)和输入报告(异步)。使用 hidapi Cython 库,我只有一个设备实例可以使用,但我需要为 hid.read() 设置一个监听器,它将持续运行并允许应用程序随意调用同步方法来发送功能报告。
目前我在一个线程中有监听器,在另一个线程中有同步调用。当我运行程序时,我的同步调用没有发生,尽管如果我从不启动监听器它们工作正常;所以看起来监听器线程正在接管。
下面是一段令人不安的代码:
应用程序.py
myhiddriver.py
我的问题:为什么我的同步调用(request_swipe_card)没有通过?或者,我怎样才能更好地构建它以拥有一个无穷无尽的监听器以及对同一个对象进行同步调用的能力?
ios - 如何从 .m 或 .swift 文件中调用 .c 文件中的函数?
我的问题是,我有一个.swift
文件,并且我有.c
('C'文件)有一些功能。我想从.swift
文件中调用这些函数我该怎么做?
例子:
在我的product.c
文件中,我有这个功能
现在我如何product.c
在我的文件中导入这个文件viewcontroller.swift
以及如何调用它get_vendor_id method
以及.switf
如何获取返回值?
首先有可能吗?
谢谢
windows - 在 Windows (hidapi) 上读取隐藏鼠标/键盘
我在 Linux 上有一个应用程序,它使用 hidapi 读取复杂设备的数据(由 Qt5.3 创建)。该设备具有多个接口 HID,其一种类型“鼠标”和一种类型“键盘”。在 Linux 上,我可以毫无问题地获取所有数据。我还需要在 Windows 上部署我的应用程序。我可以显示所有几个设备和接口,但我无法打开与接口类型“鼠标”或“键盘”的连接。(hid_open_path 返回空值)。我看到 Windows 不允许打开与鼠标和键盘的连接(因为此设备已被 Windows 使用)。我怎样才能绕过这个禁令?如何防止 Windows 使用特定键盘或鼠标打开句柄?
谢谢您的帮助
java - Java OS X 应用程序无法从 finder 正确运行
我正在使用面向 Windows 和 OS X 的 Netbeans 构建 Java 应用程序。它使用 HIDAPI 与 HID 设备进行通信。
当我们为 OS X 打包时,如果我们使用终端启动应用程序:
它打开并正常工作。
但是,如果我们从 finder 中双击构建的 .app 文件,应用程序会加载,但 HIDAPI 在尝试列出系统中的设备时会死掉。
有没有其他人有类似的问题?我们认为这可能是 OS X 的 USB 权限问题,但不确定从终端执行它为什么会起作用?
应用程序使用为 Windows 构建的 .EXE 安装程序运行良好。
技术信息:
JVM:jdk1.8.0_31.jdk 类路径:lib/hidapi-1.1.jar OS X 版本:10.10.2
linux - cabal 安装失败,因为缺少 C 库
我想通过命令cabal install hemokit
命令安装 hemokit 驱动程序,但它告诉我它在安装依赖项'hidapi'时失败。这就是给我的信息
然后我运行命令sudo apt-get install udev
安装udev
包,但问题没有解决!
c++ - hidapi:发送小于 caps.OutputReportByteLength 的数据包
我正在使用一个通过 DATA 管道接收命令的设备(wiimote),并且只接受与命令本身一样长的命令数据包。例如,它将接受:
但它不会接受:
这是 windows 上的一个问题,因为 windows 上的 WriteFile() 要求传递给它的 byte[] 至少与 caps.OutputReportByteLength 一样长。在不存在此限制的 mac 上,我的代码可以正常工作。以下是 hid.c 中导致此问题的代码:
如评论中所述,删除上述代码会导致 WriteFile() 出错。
有什么方法可以将数据传递给任意大小的设备?提前感谢您的任何帮助。
python - 如何通过 Python HIDAPI 去皮便宜的称重传感器秤?
好消息是这款便宜的厦门 ELANE.NET 称重传感器通过 USB 通电进入报告 3 模式;不断地以克为单位吐出它当前的重量。
这是它的数据表:
http://www.elane.net/USBscales/List_USB_Digital_Load_Cell_Commands_and_Data_Format_User.pdf
我可以通过标准pyusb
调用来阅读。这个样本可以读取规模......
http://www.orangecoat.com/how-to/read-and-decode-data-from-your-mouse-using-this-pyusb-hack
...如果您将设备查找替换为usb.core.find(idVendor=0x7b7c, idProduct=0x301)
(我也滥用sudo
运行我的程序,因为我拒绝使用设备权限,并且sudo
在 Raspberry Pi 上很容易。)
使用标准pyusb
调用,我可以像这样读取我的体重秤喷出:
这将返回一个 6 字节数组:
现在,当我尝试向秤发送命令时,乐趣就开始了。将当前重量(零重量,又名“皮重”)归零的命令可能是7 4 2 0 0 0
.
如果我使用https://github.com/walac/pyusb/blob/master/docs/tutorial.rst之类的示例代码来查找 ENDPOINT_OUT 端点,并使用以下任一行写入它,我不能去皮:
(症状是,我可以在我的称重传感器上放一个负载,用上面的线称重,然后去皮,然后当我再次.read()
时不会得到零。).read()
好吧,我们还没死。我们还没有尝试过任何 HIDAPI。所以我是apt-get
some libusbhid-common
, some cython-dev
, some libusb-dev
, some libusb-1.0.0-dev
, and some libudev-dev
,我升级了 HIDAPI C 示例代码以尝试去皮重:
那是稗子。
为了在 Python 中复制我的一次成功(尽管用 C++ 重写我的应用程序的一小层是多么诱人!),我拿出了一些 Cython-hidapi(大概来自git://github.com/signal11/hidapi.git
),并升级了他们的try.py
示例代码:
你猜怎么着?最后一行不去皮。但如果我运行它 3 次,它确实会去皮!
所以,在我编写一个循环调用皮重线直到读取返回零级之前,有人可以检查我的数学并建议一个捷径吗?原始pyusb
解决方案也可以很好地工作。
python - cython-hidapi、send_feature_report 或 chr() 的问题
我有这段代码,它在使用 Python 2.7.6 的 Windows 和 Mac OS X 上运行良好。我正在使用 cython-hidapi 接口从 Voltcraft VC870 功率计读取数据。要获取数据,如果首先需要向设备发送功能报告,如下所示:
在 Windows 8.1 和 Mac OS X Mavericks 上,这可以正常工作并返回一个非负值。但是,Linux 上的相同代码返回一个负数。我相信这意味着设备不理解发送的功能报告。
调用的来自 hid (cython-hidapi) 的代码如下:
我对 C 类型或字节级处理不是很熟悉。我最初怀疑这条线:
是罪魁祸首,因为 chr(0x80) 在我的系统中输出不同的值。但我想知道是否有人可以进一步了解这里出了什么问题并提出修复建议。
c# - HIDAPI - 在 ac# 项目中使用
关于 HIDAPI 的高级问题,如果有人对此有任何经验 - http://www.signal11.us/oss/hidapi/ - Visual Studio 解决方案是用 C++ 编写的,我有一个我想使用的 C# 项目图书馆上。有什么方法可以使用 C++ 库吗?我可以从解决方案构建一个 DLL 并将其作为参考添加到我的 C# 项目中吗?
qt5 - hidapi Windows 8.1 hid_write 失败
hw : lpc1549 eval board with usb hid test firmware ...
端点大小 64 字节端点 intr 读取 out-report buf 并以十六进制显示 len 和数据 ...将 out_report 复制到 in_report buf 并使用 write funct 和 len 回显
主持人 :
使用 qt5、libusb-1.0.19wingw32 dll 和 hidapi 代码
隐藏测试代码在 linux、win7 和 win8.1 中成功发出所有 api 调用(写入和读取除外)
测试代码问题 hid_write 后跟 hid_read 并在 linux 中正确获取数据
我没有使用 hidapi hid_write 强制标记的报告 ID,因为 nxp 固件和 keil 软件不使用它(据我所知)......我的 linux sw 发送和接收定义的 64 字节模式或更小len) 正确,并且字节 [0] 是此模式的一部分...输出和输入字节 [0] 数据故意不同且正确接收
在 windows 下运行 keil hid 客户端成功与 lpc1549 固件正确通信,即使它们只传输和回显一个字节......
我的固件将端点大小更改为 64 字节(我希望我的更改是正确的)并且 keil hid 客户端在 Windows 中使用它,所以我的假设是我的描述符是正确的......希望
主机 sw kububtu 14.04 hid_write len = 17,设备收到 17 个字节,17 个字节指示已收到...一切似乎都正常工作
win 8.1 hid_write len = 17 bytes 的主机 sw 显示在设备上,16 个字节正确,其余为 0,但读取表明接收到的 len 为 64 ...我发出了 17 的写入,正确接收了 16,但是被指示为 64 收到也赢得 8.1 抛出一个空白的 system32/cmd 提示窗口...为什么???
同样在win7上挂起,只有一个hid_write len = 0成功......弹出相同的cmd提示......收到len = 64,但没有传输数据(因为它对len = 0有意义)
我不能单步或断点,因为 qt 调试器在应用程序加载时出现段错误
我还在我的 qt 应用程序中链接到 hidapi“windows/hid.c”代码,它现在是我的代码的一部分
对不起我相当复杂的描述
如果报告 ID 没有被使用,为什么它是强制性的……这将浪费一个字节,如果需要 uint32_t 对齐,这将浪费大约 64 字节数据的 7%
为什么用c ++ msvs编写的keil hid客户端与我的fw和hidapi不能正常工作
keil hid 客户端的功能是否表明我的 fw 和我的描述符和报告 len 是正确的
什么会导致弹出一个空的cmd提示?
我可能做错了什么(整个基于 hidapi 的应用程序正在与完整的基于 USB 的固件 pgm 正确通信,而不仅仅是描述的测试代码)?