Mac 环境下的 USBHIDManager HID、getReport() 和 setReport()

发布于 2024-12-10 16:08:58 字数 256 浏览 1 评论 0原文

我们正在尝试与 USB HIDDevice 进行通信。该设备在 Windows 中运行良好,我们可以使用 WriteFile()ReadFile() 发送报告并获取报告。

在 Mac 上,我们尝试使用 setReoprt()getReport() 与设备进行交互。但是 getReport() 没有返回任何数据,而是返回一个错误。

申请中有什么错误?

We are trying to communicate with a USB HIDDevice. This device is working fine in windows, where we can send a report and get a report back using WriteFile() and ReadFile().

On the Mac, we are trying to interface with the device using setReoprt() and getReport(). But getReport() is not returning any data, but an error.

What is the wrong in the application?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瞄了个咪的 2024-12-17 16:08:58

为了使用异步行为,必须将使用 getAsyncEventSource 获取的事件源添加到运行循环中。

以上注释是 setReport 注释的一部分。你可能需要先了解Mac OS中Runloop的runloop机制。

因为这里无法解释其机制。当您熟悉RunLoop后,以下函数和命令可能会对您的编码有所帮助。(尝试在google中搜索“CFRunLoop”)

CFRunLoopGetCurrent();
CFRunLoopRun();
CFRunLoopAddSource(CFRunLoopRef rl, CFRunLoopSourceRef 源, CFStringRef 模式);
CFRunLoopStop(CFRunLoopRef rl);(我通常在回调方法中调用这个函数)

In order to make use of asynchronous behavior, the event source obtained using getAsyncEventSource must be added to a run loop.

The above note is part of the comment of setReport. U might need to learn the runloop mechanism of Runloop in Mac OS first.

Since it's impossible to explain the mechanism here. The following functions and orders might help u coding when u get familiar with RunLoop.(Try to search "CFRunLoop" in google)

CFRunLoopGetCurrent();
CFRunLoopRun();
CFRunLoopAddSource(CFRunLoopRef rl, CFRunLoopSourceRef source, CFStringRef mode);
CFRunLoopStop(CFRunLoopRef rl);(i usually call this function in the callback method)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文