5

Mac OS X 用のプログラムを構築して、DSLR カメラをリモート コントロールしたいと考えています。私が持っているカメラにはWiFiアダプターが付いているので、WiFi経由で制御したいです。C については十分に理解しており、Objective C / Xcode の基本的な中間知識はありますが、WiFi の経験はありませんが、カメラへの接続とカメラとコンピューター間の通信にはどのフレームワークを使用すればよいですか? ありがとう!

4

1 に答える 1

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 プロトコル リファレンス(左側のサイドバーにもストリーム プログラミング ガイドへのリンクがあります)

于 2013-02-27T14:24:19.210 に答える