2012-12-09 28 views
5

Mac OS X用のプログラムを作成して、私のDSLRカメラをリモートコントロールしたいと考えています。私が持っているカメラはWiFiアダプタを持っていますので、私はコントロールがWiFi上で行われることを望みます。私はObjective C/Xcodeの基本的な中間知識であるCについて十分に理解していますが、カメラへの接続やカメラとコンピュータ間の通信にはどのフレームワークを使用する必要がありますか?ありがとう!Mac OS Xアプリリモートカメラコントロールwifi

+1

それはによって提供される出版された通信プロトコルがあるのか​​どうかに少し依存して(また、左側のサイドバー上でストリームプログラミングガイドへのリンクです)カメラメーカー...そこにはありますか?その仕様は何ですか? – FluffulousChimp

+0

通信プロトコルでPTPを使用し、製造元のWebサイトからSDKをダウンロードしました。 SDKは私のモデル用に作られたものではありませんでしたが、私は他のモデル用のSDKを見てきました。だから私は彼らを出発点として使うことができるかどうか疑問に思っていた。ありがとう! – user1888762

+0

容疑者には、別のデバイス間接続層もあります。おそらく 'NSInputStream'と' NSOutputStream'のペアで動作するでしょう。ネットワーク上のデバイス発見は解決する必要があります...多くの質問が残っています。 – FluffulousChimp

答えて

1

PTP over IP(PTP/IP)について言えば、わかっている限り、これはカメラとの間でメディアをやりとりするためにのみ使用されます(リモコン機能が可能かどうかはわかりません)。基本的にはTCP/IP接続です。 TCP接続を確立する必要があります。 NSBumは、これはNSInputStreamとNSOutputStreamを必要とすると同時に、カメラとコンピュータとの通信などのストリームイベントを処理するNSStreamDelegateとしてクラスを持つことを示唆していました。実際のプロトコルについては、これはあなたがダウンロードしたSDKによって処理されなければならない

、それはここではない場合、あなたが始めるのに役立つかもしれないいくつかのドキュメントです:gPhoto PTP/IP Documentation

そしてNSInputStreamとNSOutputStreamを表示するためにいくつかのコード:

// This would either be part of a Class init method or called at some point after 
CFReadStreamRef readStream; 
    CFWriteStreamRef writeStream; 
    CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"192.168.1.2", 1234, &readStream, &writeStream); 
    inputStream = (__bridge NSInputStream *)readStream; 
    outputStream = (__bridge NSOutputStream *)writeStream; 

[inputStream setDelegate:self]; 
[outputStream setDelegate:self]; 

[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 

[inputStream open]; 
[outputStream open]; 

そして、一般的な例としてOutputStreamに書き込むために:

// data is of class NSData, the following writes the data bytes to the outputStream 
[outputStream write:[data bytes] maxLength:[data length]]; 

あなたNSStreamDelegateも必要になりますこのメソッドの実装を提供します

- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent 

ドキュメント:NSStreamDelegate Protocol Reference