Macos Mac-虚拟串行端口
我需要创建一个Cocoa应用程序,该应用程序将创建一个可供其他应用程序使用的虚拟串行端口,这意味着已在IO Kit注册表中注册 应用程序的要点:Macos Mac-虚拟串行端口,macos,serial-port,iokit,Macos,Serial Port,Iokit,我需要创建一个Cocoa应用程序,该应用程序将创建一个可供其他应用程序使用的虚拟串行端口,这意味着已在IO Kit注册表中注册 应用程序的要点: 创建虚拟串行端口(在/dev中列出并在IOKit注册表中注册) 启动到另一台计算机的tcp连接 将虚拟串行端口上接收到的所有内容代理到 网络,反之亦然 此应用程序将由与计算机上的串行端口通信的第三方应用程序使用,允许通过网络定位特定的串行设备。Cocoa和网络部分没有问题,我已经编写了几个通过网络聊天的应用程序。我的问题是串口 我已经使用socat
- 创建虚拟串行端口(在/dev中列出并在IOKit注册表中注册)
- 启动到另一台计算机的tcp连接
- 将虚拟串行端口上接收到的所有内容代理到 网络,反之亦然
有状态的首先,您是否已检查是否可以从网站借用解决方案?如果他们已设法将其虚拟串行端口完全集成到系统中,这一点并不明显 如果有一种方法可以在用户空间中实现,我不知道。用户空间iokitapi通常不允许创建类实例,更不用说创建新的设备驱动程序类了。也许您可以以其他方式说服Cocoa库找到它,尽管它没有在内核中注册 我不知道是否可以在内核中创建一个“虚拟”串行端口,然后从用户空间守护进程将tty移动到/dev中。也许这是一个选择 如果您必须在内核中完成所有操作: 虚拟驱动程序本身至少不应该太多工作,尽管它需要一些时间来跟上内核开发的速度。不幸的是,对于串行端口驱动程序来说,文档非常少-关键是对
IOSerialDriverSync
抽象类进行子类化。我所看到的唯一描述是Ole Henry Halvorsen的OSX和iOS内核编程书。它还有一个用于读写操作的示例片段。(披露:我是这本书的技术评论员之一;我没有收到任何推荐的奖励-在这种情况下,这是我所知道的唯一的文档)您可以在中找到完整串行端口驱动程序的源,AppleUSBCDCDMM
是实际代表串行端口节点的类
在内核中打开一个所谓的套接字是相对简单的,各个API是:;从用户空间使用普通BSD套接字send
/recv
API。(这在前面提到的书中也有描述)您的守护进程可以连接到该设备,您需要做的就是在套接字和虚拟串行端口设备之间推送数据。当然,您需要正确处理断开连接事件等
尽管如此,我认为对于有经验的C程序员(使用一些C++)来说,作为第一个内核项目,这是可以实现的
我希望这有帮助 好东西,乔丹。我确实看过你引用的那个应用程序,他们实际上是在将socat的编译可执行文件捆绑到他们的应用程序中,然后只是将参数传递给它执行。而且,它使用的那些串行端口也没有在IO Kit注册表中注册。我买了一本你提到的书,里面有很多信息。谢谢你的指点@有状态的你到底做了什么?嗨,tcv,对不起,没有。我转到了其他一些项目。不过我还是很想解决这个问题。