2011-09-02 47 views
12

我想写一个iPhone/iPad应用程序,它可以通过USB连接与Mac或PC程序(我也会写)进行通信。有谁知道我该怎么做呢? (我知道我可能必须越狱我的iPad)iPad和Mac或PC之间的USB通信

+1

如果可能的话,你一定要越狱:我知道你不能用普通的SDK来做到这一点。 –

+0

一个想法是尝试使用串行端口(UART或/dev/tty.iap)。我不确定你是否可以在没有任何附加硬件的情况下做到这一点,但这里有一些关于这个主题的链接:http://devdot.wikispaces.com/Iphone+Serial+Port+Tutorial http://hcgilje.wordpress.com/2010/02/15/iphone-serial-communication/ – adig

回答

-1

它是否必须是USB连接?

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

5

通过USB(USBMux)进行套接字通信可能会满足您的需求。当iPad或iPhone插入Mac时,会有设备说明/ var/run/usbmuxd。您可以创建套接字并将其连接到/ var/run/usbmuxd,并将打包的数据发送到iOS设备或从iOS设备接收。数据应该被包装。

以下是来自iphonewiki 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上侦听的端口。上面的事件顺序部分中的维基页面列表中讨论的“连接”过程。准备工作完成后,您可以使用套接字发送和读取数据。

+0

有没有一个原因,你不能只是打电话'打开',并​​使用结果fd? – Dustin