Mac OS X 用のプログラムを構築して、DSLR カメラをリモート コントロールしたいと考えています。私が持っているカメラにはWiFiアダプターが付いているので、WiFi経由で制御したいです。C については十分に理解しており、Objective C / Xcode の基本的な中間知識はありますが、WiFi の経験はありませんが、カメラへの接続とカメラとコンピューター間の通信にはどのフレームワークを使用すればよいですか? ありがとう!
1 に答える
PTP over IP (PTP/IP) について言及している場合、私が理解している限り、これはカメラとの間でメディアを転送するためにのみ使用され (どのようなリモート コントロール機能が可能かはわかりません)、基本的には TCP/ IP 接続。TCP 接続を確立する必要があります。NSBum が示唆したように、これには NSInputStream と NSOutputStream が必要になるだけでなく、コンピューターと通信する Camera などのストリーム イベントを処理するための NSStreamDelegate としてのクラスも必要です。
実際のプロトコルについては、ダウンロードした SDK で処理する必要があります。開始に役立つドキュメントがここにない場合は、gPhoto PTP/IP ドキュメントを参照してください。
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 プロトコル リファレンス(左側のサイドバーにもストリーム プログラミング ガイドへのリンクがあります)