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 步骤的更多相关文章

  1. 佳能mp288拆解步骤--绝对原创

    http://itbbs.pconline.com.cn/office/50663206.html 佳能mp288拆解步骤--绝对原创 gotobug Lv1太平洋舰队新兵 楼主 2013-10-13 ...

  2. Eclipse配置Lifery SDK步骤与错误解决。

    第一步.我们先去官网下载我们要用的东西 1.Eclipse 2.SDK 3.Tomcat 这是官网下载地址-->https://www.liferay.com/zh/downloads 下面是图 ...

  3. 阿里云移动推送 ios项目添加SDK步骤

    添加阿里云Pods仓库和各产品SDK Pod依赖,配置步骤如下: 1. CocoaPods集成添加阿里云Pods仓库,Podfile添加: source 'https://github.com/ali ...

  4. 阿里云移动推送 安卓项目添加SDK步骤

    Gradle的Emas服务插件会加载您下载的 aliyun-emas-services.json 文件.请修改工程的build.gradle使用该插件.配置步骤如下: 1. 修改项目级目录下build ...

  5. iOS开发之App间账号共享与SDK封装

    上篇博客<iOS逆向工程之KeyChain与Snoop-it>中已经提到了,App间的数据共享可以使用KeyChian来实现.本篇博客就实战一下呢.开门见山,本篇博客会封装一个登录用的SD ...

  6. android开发环境 eclipse + android sdk配置笔记

    本开发环境为:eclipse + android sdk,步骤说明的顺序,没有特别要求,看个人爱好了 步骤说明: 1.安装eclipse 2.配置jdk 3.安装android sdk 4.安装ADT ...

  7. Unity 集成联通SDK

    我相信Unity程序员都会遇到加入SDK的问题,我相信如果你不会android编程,我相信你的CPU当场计算过快而爆炸!  这里也写笔记希望能帮助大家 如果有讲错的地方,希望大家能回复并且提供答案!  ...

  8. 01.ubuntu14.04安装HI3518EV200 SDK的过程

    转载,侵删 1.海思SDK安装编译 Hi3518EV200_SDK是基于Hi3518EV200_DMEB的软件开发包,包含了在Linux相关应用开发时使用的各种工具及其源代码,是用户开发中最基本的软件 ...

  9. 转载 -- iOS中SDK的简单封装与使用

    一.功能总述 在博客开始的第一部分,我们先来看一下我们最终要实现的效果.下图中所表述的就是我们今天博客中要做的事情,下方的App One和App Two都植入了我们将要封装的LoginSDK, 两个A ...

随机推荐

  1. 复杂sql语句集锦

    本文主要讲一下笔者在工作中遇到的一些逻辑比较复杂的sql语句,下面是具体写法: SELECT IF ( LOCATE() , NULL, SUBSTRING( link, LOCATE() , IF ...

  2. mysql数据库引擎——MyISAM,InnoDB

    作为一个java web开发人员,对于mysql数据库掌握到具体比较这两类引擎的差异也蛮拼的,下面就介绍一下我在工作中积累的对这两类引擎的理解. MyISAM: 如果不更改mysql配置文件(my.i ...

  3. 【VMWare】虚拟机启动遇到黑屏,在命令行窗口输入netsh winsock reset并不管用 重新启动客户机就好了

    现象:虚拟机启动后是莫名其妙的黑屏,而且它上面安装的MySql也无法访问了. 处置:上网百度方案,看到大多数网文推荐:“以管理员身份打开cmd,输入netsh winsock reset,然后重启机器 ...

  4. linux centos6.5 环境下安装redis的过程

    过程还是挺折磨人的!谢谢许正同学一直耐心给我指导,虽然他也很忙.废话不多说: 首先,确保linux虚拟机联网: vm虚拟机>设置>Network Adapter 设置>网络配置设置成 ...

  5. Laravel中Session的使用

    以file为示例 1.Http request session方法$request->session()->put('key1','value1');echo $request->s ...

  6. backupAgent节点

    在<application>节点中有一个非常重要的属性,那就是backupAgent. 1.backupAgent简介 Androidd:backupAgent用来设置备份代理.对于大部分 ...

  7. java的JDBC驱动使用链接数据库

    1.    import java.sql.*; 2 .    导入所需要的数据库的jar包,如oracle/informix的 3. String sql = "select * from ...

  8. salt收集windows服务器日志时间

    定义收集时间区间: time.ps1 $a = get-date $b = $a.adddays(-) $c = $b.tostring('yyyy-MM-dd') $d = get-date -fo ...

  9. 文件夹的层级选择< OC实现 >

    类似文件夹的层级选择,可以搜索和创建新文件夹,点击路径标题可以返回对应层级. 界面有点丑,功能还是大概实现了的!! 代码有点多,还是附上地址吧,有兴趣的可以看看哟!!!    https://gith ...

  10. java中图片地址base64编码的相互转换

    public class Base64Url { /** * 将base64编码字符串转换为图片 * @param imgStr: base64编码字符串 * @param path: 图片路径-具体 ...