我正在Xcode 4中为MAC申请,其目的是绘制心电图读数的图表。应该通过USB /串行接收读数。因此,我需要为可以读取和写入USB端口字符的应用程序编写代码。
我认为最简单的方法是使用IO Kit和POSIX ......
老实说,我在上面找到的IOKit上的文档 开发者网站很难理解。
是否有关于使用IOKit进行交谈和获取的基本教程 来自硬件设备的信息?
如果不这样做,是否有关于基本概念的基本教程 OSX架构?当他们开始谈论马赫任务和克恩时 结果,我完全迷失了。
提前致谢
答案 0 :(得分:3)
如果您的设备基本上只是插入标准USB /串行适配器的串行设备,则无需降至IOKit级别。找到串行端口的UNIX字符设备,并为无缓冲的文件I / O打开它。您可能希望仅仅为了枚举端口而遍历I / O工具包注册表,但实际的I / O不需要它。
为了让您开始使用它,您需要创建一个匹配的字典:
IOServiceMatching(kIOSerialBSDServiceValue);
然后通过kIOCalloutDeviceKey
属性获取返回设备的文件路径。
如果它不是标准USB /串行适配器,则需要使用IOKit。遗憾的是,我不知道任何比苹果更好的网络资源有关USB和驱动程序的主题,但有书籍:
OS X and iOS Kernel Programming专门针对(有抱负的)驱动程序员。它包含2个USB章节,一个用于USB基础和内核空间驱动程序,另一个用于用户空间USB驱动程序。你应该希望能够开始运行这些。 (免责声明:我是这本书的技术评论员之一;但我没有得到报酬,但我没有获得版税)
Mac OS X Internals开始显示它的年龄(它是OS X 10.4的最新版本),并不是专门的驱动程序开发书。它确实给出了OS X及其内核的许多部分的非常详细的描述。如果我没记错的话,USB上用的并不多。
对于USB,您有两个选项:用户空间和kenel空间驱动程序。除非您有充分的理由在内核中执行此操作,否则我建议您在用户空间中执行此操作。 API非常不同,内核API是C ++,用户空间是C.(不,我没有把它们混合起来)在查看文档时,确保你正在查看2中的正确之一 - 它们都是叫做I / O Kit!