我想为Mac OS X构建一个程序来远程控制我的DSLR相机.我有的相机有一个WiFi适配器所以,我希望通过WiFi完成控制.我对C,Objective C/Xcode的基本中间知识有很好的理解,但没有使用WiFi的经验,我应该使用哪个框架来连接摄像机以及摄像机和计算机之间的通信?谢谢!
小智 1
如果您指的是 PTP over IP (PTP/IP),据我了解,这仅用于将媒体传输到摄像机或从摄像机传输媒体(不确定可以实现哪些远程控制功能),它基本上是 TCP/ IP 连接。您需要建立 TCP 连接。正如 NSBum 所建议的,这将需要 NSInputStream 和 NSOutputStream,以及一个 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];
Run Code Online (Sandbox Code Playgroud)
作为一般示例写入outputStream:
// data is of class NSData, the following writes the data bytes to the outputStream
[outputStream write:[data bytes] maxLength:[data length]];
Run Code Online (Sandbox Code Playgroud)
您的 NSStreamDelegate 还需要提供此方法的实现:
- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent
Run Code Online (Sandbox Code Playgroud)
文档:NSStreamDelegate 协议参考(左侧边栏上还有流编程指南的链接)
| 归档时间: |
|
| 查看次数: |
1194 次 |
| 最近记录: |