iPad和Mac或PC之间的USB通信

12

我想写一个 iPhone/iPad 应用程序,可以通过 USB 连接与我编写的 Mac 或 PC 程序进行通信。请问有人知道我该如何操作吗?(我意识到可能需要越狱我的 iPad)


1
如果有可能的话,你肯定必须越狱:我知道你不能用正常的SDK来做这件事。 - Amy Worrall
一个想法是尝试使用串口(UART或/dev/tty.iap)。我不确定是否可以在没有任何额外硬件的情况下完成,但以下是一些相关链接:http://devdot.wikispaces.com/Iphone+Serial+Port+Tutorial http://hcgilje.wordpress.com/2010/02/15/iphone-serial-communication/ - adig
2个回答

7
通过 USB 进行套接字通信(USBMux)可能满足您的需求。当 iPad 或 iPhone 插入 Mac 时,会有一个设备描述符 /var/run/usbmuxd。您可以创建一个套接字并将其连接到 /var/run/usbmuxd,并发送/接收封装好的数据到 iOS 设备。数据应该被包装起来。
这里是theiphonewiki 的简要参考资料:http://theiphonewiki.com/wiki/index.php?title=Usbmux。我可以提供连接到 usbmuxd 的示例代码。
struct sockaddr_un endpoint;
size_t size;

_usbMuxSocket = socket(PF_LOCAL, SOCK_STREAM, 0);

endpoint.sun_family = AF_LOCAL;
strncpy(endpoint.sun_path, "/var/run/usbmuxd", 17);
size = (offsetof (struct sockaddr_un, sun_path)
        + strlen (endpoint.sun_path) + 1);

connect(_usbMuxSocket, (struct sockaddr *) &endpoint, size);

接下来,您需要“连接”到iPad上App侦听的端口。在上面列出的顺序事件部分中讨论了“连接”过程。准备工作完成后,您可以使用套接字发送和读取数据。


你为什么不能直接调用“open”函数并使用返回的文件描述符呢? - Dustin

-1

需要使用USB连接吗?

如果不需要,那么Robbie Hanson的GCDAsyncSocket非常适合连接各种苹果设备。我去年就用它将一堆iPad连接到运行在Mac mini上的单个应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接