佳能单反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 ...
- Docker镜像搭建ubuntu下samba目录共享
第一种方法:(未使用) yum install docker // 下载镜像 docker pull dperson/samba // 启动镜像,具体看文档,但重要的配置是以下的注释 docker r ...
- MACBOOK 破解wifi密码
MACBOOK 破解wifi密码 Table of Contents 1. 安装homebrew 2. 安装aircrack-ng 3. 获取wifi网卡信息 4. 获取所有可识别的wifi信息 5. ...
- 基于MybatisUtil工具类,完成CURD操作
package loaderman; import java.io.IOException; import java.io.Reader; import java.sql.Connection; im ...
- Handle的特点
handler可以分发Message对象和Runnable对象到主线程中, 每个Handler实例,都会绑定到创建他的线程中(一般是位于主线程), 也就是说Handler对象初始化后,就默认与对它初始 ...
- Android启动页面的正确打开方式 (转载)
最近由于领导要求写一个手机APP,于是自学开始,不经意间想到使用过的手机APP在打开的时候都是会有一个启动页面,这是如何实现的呢?比较好奇,于是在网上搜到了以下这篇文章,经过个人实验的确可行,不过原文 ...
- C# WinForm设置窗口无边框、窗口可移动、窗口显示在屏幕中央、控件去边框
1)窗口去除边框 在组件属性中FormBorderStyle设为None 2)窗口随着鼠标移动而动 添加引用using System.Runtime.InteropServices; 在初始化控件{I ...
- dbgrideh 中的keylist,picklist的用法
dbgrideh procedure TForm1.FormCreate(Sender: TObject); begin DBGridEh1.DataSource:=DataSource1; Data ...
- linux定时脚本:删除linux/HDFS上过期文件
一.定时删除linux上定时的文件 显示20分钟前的文件 -exec ls -l {} \; 删除20分钟前的文件 -exec rm {} \; 显示20天前的文件 -exec ls -l {} \; ...
- Mac 安装Mysql 之 Sqlservice 区别
Mysql 一.下载mysql 官网“Community “ 下会看到“MySQL Community Server”下方有一个“download”点击. 在Mac OS上的MySQL的版本 ...