佳能单反SDK 步骤
EdsInitializeSDK();
EdsGetCameraList(&eclr);//获取相机列表
EdsGetChildCount(eclr, &camCount); //获取相机数量
edsError = EdsGetChildAtIndex(eclr, 0, &camera); //获取相机句柄,存储在camera里
EdsSetCameraStateEventHandler(camera, kEdsStateEvent_All, handleSateEvent, NULL); //设置处理相机“状态”事件的函数
EdsSetObjectEventHandler(camera, kEdsObjectEvent_All, handleObjectEvent, NULL); //设置处理相机 事件的函数
EdsOpenSession(camera); //打开相机会话
EdsGetDeviceInfo(camera, &outDeviceInfo); //获取相机设备信息 outDeviceInfo
EdsSetPropertyData(camera, kEdsPropID_SaveTo, 0, sizeof(EdsUInt32), &saveTo); //设置相机照片存储路径
EdsCapacity capacity = { 0x7FFFFFFF, 0x1000, 1 };
EdsSetCapacity(camera, capacity); //设置相机属性
EdsSendCommand(camera, kEdsCameraCommand_TakePicture, 0); //发送拍照指令
EdsCloseSession(camera);//关闭相机会话 和Open对应
EdsTerminateSDK 释放SDK 一般最后做
EdsRetain(object);//增加现有对象的引用计数器
事件捕获:
kEdsStateEvent_CaptureError
kEdsStateEvent_JobStatusChanged
一些常见错误:
疑难:
state event 错误: OX311不知道是啥 出现这个stat的时候, take picture 一般是0X81 0X311是和相机失去连接了,需要重新拔插数据线?
EdsError 错误 : EDS_ERR_DEVICE_BUSY 0X81发生在 EdsSetPropertyData 估计是哪里没有释放造成的?
回调函数无法调用解决: ---- 好像下面方法也无法解决 麻蛋。。
If you're using the EDSDK on Windows, you have to have a Windows message loop in your main thread, otherwise callbacks won't happen. (This is because the EDSDK uses the obsolete COM STA threading model instead of real threads.)
while(GetMessage(&msg, NULL, NULL, NULL))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
bool bPhotoTaken = false;
main()
{
// Initialize EDSDK, start session with camera, change SaveTo property
// register ObjectEventHandler
// send kEdsCameraCommand_TakePicture
while((bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
{
if(bRet == -1 || bPhotoTaken)
{
break;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
// Cleanup EDSDK
}
handlePropertyEvent :
0X101 kEdsPropertyEvent_PropertyChanged - 这个参数说明参数发生了改变
0X102 kEdsPropertyEvent_PropertyChanged - 这个参数说明参数发生了改变
err = EdsDownloadEvfImage(theCamera, evfImage); 这里偶尔会出现 bug : EDS_ERR_OBJECT_NOTREADY ; 如果要获取流的话 就要不断去查询才可以,查询到object准备好了 就获取里面的数据。
佳能单反SDK 步骤的更多相关文章
- 佳能mp288拆解步骤--绝对原创
http://itbbs.pconline.com.cn/office/50663206.html 佳能mp288拆解步骤--绝对原创 gotobug Lv1太平洋舰队新兵 楼主 2013-10-13 ...
- Eclipse配置Lifery SDK步骤与错误解决。
第一步.我们先去官网下载我们要用的东西 1.Eclipse 2.SDK 3.Tomcat 这是官网下载地址-->https://www.liferay.com/zh/downloads 下面是图 ...
- 阿里云移动推送 ios项目添加SDK步骤
添加阿里云Pods仓库和各产品SDK Pod依赖,配置步骤如下: 1. CocoaPods集成添加阿里云Pods仓库,Podfile添加: source 'https://github.com/ali ...
- 阿里云移动推送 安卓项目添加SDK步骤
Gradle的Emas服务插件会加载您下载的 aliyun-emas-services.json 文件.请修改工程的build.gradle使用该插件.配置步骤如下: 1. 修改项目级目录下build ...
- iOS开发之App间账号共享与SDK封装
上篇博客<iOS逆向工程之KeyChain与Snoop-it>中已经提到了,App间的数据共享可以使用KeyChian来实现.本篇博客就实战一下呢.开门见山,本篇博客会封装一个登录用的SD ...
- android开发环境 eclipse + android sdk配置笔记
本开发环境为:eclipse + android sdk,步骤说明的顺序,没有特别要求,看个人爱好了 步骤说明: 1.安装eclipse 2.配置jdk 3.安装android sdk 4.安装ADT ...
- Unity 集成联通SDK
我相信Unity程序员都会遇到加入SDK的问题,我相信如果你不会android编程,我相信你的CPU当场计算过快而爆炸! 这里也写笔记希望能帮助大家 如果有讲错的地方,希望大家能回复并且提供答案! ...
- 01.ubuntu14.04安装HI3518EV200 SDK的过程
转载,侵删 1.海思SDK安装编译 Hi3518EV200_SDK是基于Hi3518EV200_DMEB的软件开发包,包含了在Linux相关应用开发时使用的各种工具及其源代码,是用户开发中最基本的软件 ...
- 转载 -- iOS中SDK的简单封装与使用
一.功能总述 在博客开始的第一部分,我们先来看一下我们最终要实现的效果.下图中所表述的就是我们今天博客中要做的事情,下方的App One和App Two都植入了我们将要封装的LoginSDK, 两个A ...
随机推荐
- POJ 1789 -- Truck History(Prim)
POJ 1789 -- Truck History Prim求分母的最小.即求最小生成树 #include<iostream> #include<cstring> #incl ...
- Scala语法01 - 基础语法
- 数学建模python matlab 编程(指派问题)
指派授课问题 现有A.B.C.D四门课程,需由甲.乙.丙.丁四人讲授,并且规定: 每人只讲且必须讲1门课:每门课必须且只需1人讲. 四人分别讲每门课的费用示于表中: 课 费用 人 A B C D 甲 ...
- 1.ini读写操作
一.使用 TIniFile implementationvar ini:tinifile; path:string; {ini文件路径} section,key:string;{表示 ...
- MySQL性能的五大配置参数(内存参数)
内存参数: 存储引擎/共享日志缓冲区,缓冲区池 innodb_buffer_pool_sizeinnodb_additional_mem_pool_sizeinnodb_log_buffer_size ...
- React Native面试题记录
一.ES6中增加了那些新的功能? 1> for-of循环: 使用 for-of 的时候,循环的是数组内部的元素且不会出现 for-in 中将附加属性也遍历的情况,其次,循环变量的类型和其在数组中 ...
- Android 单元测试学习计划
网上查了一下Android单元测试相关的知识点,总结了一个学习步骤: 1. 什么是单元测试2. 单元测试正反面: 2.1. 重要性 2.2. 缺陷 2.3. 策略3. 单元测试的基础知识: 3.1. ...
- springboot-自定义异常处理器
@Order(-1000) public class LocalExceptionResolver implements HandlerExceptionResolver { @Override pu ...
- ClosureTable
1. 查询所有子节点 SELECT `chidren_id` FROM `xi_category4_closure` WHERE `parent_id` = 0 AND `distance` > ...
- windows 3种方式运行exe文件
1.双击文件运行 2.打开cmd,cd 到要运行的文件目录下,输入文件名或者文件名.exe 3.将文件目录配置到系统环境变量,按windws+R输入文件名或者文件名.exe