【问题标题】:OSX: Can I talk to a USB-to-serial device without using a USB-to-serial driver?OSX:我可以在不使用 USB 转串口驱动程序的情况下与 USB 转串口设备通信吗?
【发布时间】:2015-05-08 03:20:54
【问题描述】:

我有一段代码使用 POSIX API 来与一个本质上是 cp210x USB-to-serial 设备的设备通信。

代码确实有效,但我必须安装内核扩展才能实现。现在,我不想安装 kext。该设备的工程师为他们的设备使用了非标准的供应商 ID 和产品 ID,因此它的正确驱动程序不会注意到它会起作用。因此,我必须为 kext 编辑 Info.plist,或者制作我自己的“无代码”kext,但无论哪种方式,我都必须签署内核扩展,这似乎让人头疼(我记得那是巨大的考验只是为了获得正确的证书来签署一个应用程序!)

所以基本上,我能够让它工作,但只有在全局关闭 kext 签名检查之后,这不是我想做的事情。

现在,我有另一段代码,它使用 IOKit 来查询 USB 设备以查找与给定供应商 ID 和产品 ID 匹配的设备,并且可以显示有关它的一堆属性。

有没有什么方法可以使用 IOKit 打开到 USB 转串口设备的串行连接,而无需安装 kext? (也许这个芯片足够通用,在 OSX 中已经有合适的方法来实现它?USB 转串口并不是完全新技术。)

【问题讨论】:

    标签: macos usb iokit usbserial


    【解决方案1】:

    如果我理解正确,您想从用户空间向 Serial-over-USB 内核驱动程序添加 IOKit kext 个性?我不知道这样做的方法。

    据我所知,您的选择是:

    • 您一直在使用的无代码 kext。对于 Mavericks 和 Yosemite,您确实需要签署 kext。实际的签名很简单(使用 Xcode 很简单),但您需要从 Apple 获得正确的签名证书。 This is the form for it - 您需要成为付费的 Mac 开发者计划,并准备等待长达 6 周。

    • 完全从用户空间访问设备。 You can do this via IOKit directly,或者您可以使用开源包装库,例如 libusb那么您需要通过其 USB 协议实际驱动串口转 USB 设备。也许你可以为它找到一个现有的用户空间驱动程序;我还没有找过。但无论如何,您将无法通过 POSIX 接口访问设备,因为一切都将存在于您的用户空间进程中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-13
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-06
      相关资源
      最近更新 更多