首页 文章

MAC中的HID设备接口

提问于
浏览
1

我必须为OSX创建一个软件/驱动程序,它与通过USB连接的HID设备进行交互 . 申请的目的如下,

  • 检测何时插入或移除了HID设备 . 设备的PID和VID是已知的 .

  • 读取HID设备序列号,固件版本以及与VID和PID匹配的已连接设备的其他详细信息

  • 获取报告并在连接时将报告设置到HID设备 .

  • 与另一个应用程序通信,用户可以通过该应用程序更改HID设备设置

我不是驱动程序开发人员,但有C,C,Obj C等经验 . 我想知道实现上述目标的最佳方法是什么 . 那我应该开发内核扩展(驱动程序)还是有更好的替代方案?

我面临的挑战是,

  • 从驱动程序开发开始

  • Mac应用程序与驱动程序通信 .

无论哪种方式,这对我来说都是一个新领域 . 能否请您建议一些文件或示例代码,我可以从此开始 .

另外请提及可能有助于开发mac设备驱动程序的论坛或社区 .

谢谢大家的帮助 . :)

2 回答

  • 2

    MacOS X已经有HID设备的驱动程序 . 因此,您不需要为它开发特殊的驱动程序/内核扩展 .

    您可以使用跨平台的开源库hidapi与HID设备进行通信 .

  • 1

    这个问题的另一个答案当然适用于一堆不同的用例,我建议尽可能沿着这条路走下去 . 但是,肯定会有一些情况需要深入研究kext . 特别是,如果HID设备需要充当系统键盘或指点设备,但是内置的HID堆栈没有按照您的需要进行拾取,则可能需要(或想要)开发内核 - 太空司机 . (你也可以选择从用户空间向窗口系统注入事件,所以如果有疑问的话,我会首先用你的用例做原型 . )

    你还没有给我们足够详细的关于你想要做什么,或设备的性质,以确切地说什么方法可能是最好的 .

    有关示例代码,请查看Apple自己的开源代码 . (IOHIDFamily,IOUSBFamily等)在网上搜索你正在使用的类也会在Github等上发现一些第三方OSS代码 .

    Stack Overflow和相关的Apple开发人员邮件列表(Darwin-drivers,Darwin-kernel或Usb,取决于问题),也许开发人员论坛(我发现他们很难跟踪/监控)可能是最好的社区之类的事情 .

相关问题