2012-01-06 69 views
3

我正在Xcode 4中制作一个用于MAC的应用程序,目的是绘制ECG读数的图形。读数应该通过USB /串行接收。因此,我需要为可以读取和写入字符到USB端口的应用程序编写代码。使用IO套件与Xcode 4中的USB进行通信

我认为EBST办法做到这一点是通过使用IO Kit和POSIX ...

说实话,我已经在 开发者网站上发现由于IOKit的文档已经不错很难明白。

是否有任何有关使用IOKit与硬件设备通信并获取 信息的基本教程?

如果没有,那么关于 OSX架构的基本概念有基本教程吗?当他们开始谈论马赫任务和结果时,我完全失去了知觉。

在此先感谢

回答

3

如果您的设备基本上是插入标准的USB /串口适配器串行设备,你不应该需要下降到由于IOKit水平。找到串行端口的UNIX字符设备,并打开非缓冲文件I/O的设备。您可能需要遍历I/O套件注册表,纯粹是为了枚举端口,但您不应该将其用于实际的I/O。

为了让您开始使用,你需要创建一个匹配字典以:

IOServiceMatching(kIOSerialBSDServiceValue); 

,然后通过kIOCalloutDeviceKey属性来获取返回的设备的文件路径。

如果它不是标准的USB /串行适配器,则需要使用IOKit。不幸的是我不知道的比苹果的USB和驱动程序的主题的任何更好的网络资源,但也有书籍:

  • OS X and iOS Kernel Programming是专门针对(拟任)驱动程序的程序员。它包含两个USB章节,一个用于USB基础和内核空间驱动程序,另一个用于用户空间USB驱动程序。你应该希望能够与这些起床和运行。 (免责声明:我是这本书的技术评审之一,我没有得到支付给它做广告,但是,我没有得到特许权使用费)

  • Mac OS X Internals开始显示出它的年龄(这是目前OS X 10.4),并不是专门的驱动程序开发书。它确实给出了OS X及其内核许多部分的详细描述。如果我没有记错的话,在USB上不是很糟糕。

对于USB,您有2个选项:用户空间和kenel空间驱动程序。除非你有足够的理由在内核中完成它,否则我建议在用户空间中完成它。这些API是非常不同的,内核API是C++,用户空间是C.(不,我没有混淆这些)在查看文档时,请确保您正在查看2中正确的一个 - 它们都是称为I/O Kit!