2011-09-02 9 views
12

Chciałbym napisać aplikację na iPhone'a/iPada, która może komunikować się przez połączenie USB z komputerem Mac lub programem na komputerze PC (który również bym napisał). Czy ktoś wie, jak mógłbym to zrobić? (Zdaję sobie sprawę, że może muszę jailbreak mojego iPada)Komunikacja USB między iPadem a komputerem Mac lub PC

+1

Jeśli jest to w ogóle możliwe, zdecydowanie będziesz musiał rzucić jailbreak: wiem, że nie możesz tego zrobić przy użyciu zwykłego SDK. –

+0

Pomysł polegałby na próbie użycia portu szeregowego (UART lub /dev/tty.iap). Nie jestem pewien, czy możesz to zrobić bez dodatkowego sprzętu, ale oto kilka linków na ten temat: http://devdot.wikispaces.com/Iphone+Serial+Port+Tutorial http://hcgilje.wordpress.com/2010/02/15/iphone-serial-communication/ – adig

Odpowiedz

-1

Czy to musi być połączenie USB?

Jeśli nie, to GDATAsyncSocket Robbie Hanson jest doskonały do ​​podłączania wszelkiego rodzaju urządzeń Apple. Użyłem go w zeszłym roku, aby podłączyć kilka iPadów do jednej aplikacji uruchomionej na komputerze Mac mini.

5

Komunikacja gniazdem przez USB (USBMux) może zaspokoić Twoje potrzeby. Po podłączeniu iPada lub iPhone'a do komputera Mac, pojawi się opis urządzenia/var/run/usbmuxd. Możesz utworzyć gniazdo i podłączyć je do/var/run/usbmuxd i wysyłać/odbierać spakowane dane do/lub z urządzenia iOS. Dane powinny być opakowane. Jest to krótkie odniesienie z theiphonewiki http://theiphonewiki.com/wiki/index.php?title=Usbmux. Mogę podać przykładowy kod do połączenia z 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); 

Następnie należy "podłączyć" do portu, którego aplikacja słucha na iPadzie. Proces "connect" omówiony na powyższej liście stron wiki w sekcji Sequence of Events. Po zakończeniu przygotowań możesz użyć gniazda do wysyłania i odczytu danych.

+0

Czy istnieje powód, dla którego nie można po prostu zadzwonić "otwarte" i użyć wynikowego fd? – Dustin