相机两种连续采集方式

第一种:回调机制

第一步,注册回调函数(头文件需要声明好)

// 注册采集回调函数emStatus = GXRegisterCaptureCallback(m_hDevice, this, OnFrameCallbackFun);GX_VERIFY(emStatus);

第二步,发送连续采集命令

 // 发开始采集命令emStatus = GXSendCommand(m_hDevice, GX_COMMAND_ACQUISITION_START);GX_VERIFY(emStatus);

第三步,编写回调函数(在这里面就可以获取RAW资源进行处理,这里只是为了计算曝光时间就没有处理)

//---------------------------------------------------------------------------------
/**
\brief   采集回调函数
\param   pFrame   回调参数\return  void
*/
//----------------------------------------------------------------------------------
void __stdcall CGxCameraEventsDlg::OnFrameCallbackFun(GX_FRAME_CALLBACK_PARAM *pFrame)
{CGxCameraEventsDlg *pDlg = (CGxCameraEventsDlg*)(pFrame->pUserParam);double dElapsedtime = 0;char   chTemp[8]    = "ms";// 结束计时dElapsedtime = pDlg->m_objImageTime.Stop();pDlg->PrintInfotoWnd(MsgComposer("开始发送软触发命令到成功收到图像历时:%0.2f %s", dElapsedtime, chTemp));pDlg->m_bIsTrigValid = true;
}

发送软触发命令:

void CGxCameraEventsDlg::OnSendSoftCommand()
{// TODO: Add your control notification handler code here// 如果当触发回调正在执行的过程中,再次点击触发按键后,此次点击会被屏蔽掉if (!m_bIsTrigValid){return;}else{m_bIsTrigValid = false;}SYSTEMTIME system;CString    strTime = "";GX_STATUS  emStatus = GX_STATUS_SUCCESS;// 开始发送软触发命令的时间(此代码若放到两个计时开始之前,导致打印时间大于进入回调时间,出现问题)GetLocalTime(&system);strTime.Format("%02dh:%02dm:%02ds:%03dms ", system.wHour, system.wMinute, system.wSecond, system.wMilliseconds);PrintInfotoWnd(MsgComposer("\r\n开始发送软触发命令的时间点:" + strTime));// 到收到图像历时时间:计时开始m_objImageTime.Start();// 到曝光结束事件历时时间:计时开始m_objShutterTime.Start();// 发送软触发命令emStatus = GXSendCommand(m_hDevice,GX_COMMAND_TRIGGER_SOFTWARE);if(emStatus != GX_STATUS_SUCCESS){ShowErrorString(emStatus); m_bIsTrigValid = true;return;}
}

如果是回调函数机制,GXSendCommand(m_hDevice,GX_COMMAND_TRIGGER_SOFTWARE);发送采集之后同样是进入回调函数。

回调函数方法连续采集和发送软触发采集相关推荐

  1. GXGetImage方式连续采集和发送软触发采集

    相机两种连续采集方式 第一种:回调机制 第一步,不用注册回调函数,直接GXSendCommand(m_hDevice,GX_COMMAND_ACQUISITION_START)发送开采命令 //--- ...

  2. Linux C 函数指针应用---回调函数

    (这里引用了知乎上一些知友的回答,感觉不错,有助于理解,这里引用作为借鉴,如有冒犯,烦请告知) 我们先来回顾一下函数指针,函数指针是专门用来存放函数地址的指针,函数地址是一个函数的入口地址,函数名代表 ...

  3. 如何理解android的函数,通过Android源码理解回调函数

    概述 我们先看一下维基百科对回调函数的定义: 在计算机程序设计中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过函数参数传递到其它代 ...

  4. RTX5 | 消息队列04 - (实战技巧)串口中断回调函数ISR同步线程

    文章目录 一.前言 二.实验目的 三.API 3.2.osMessageQueueGet 四.代码 4.1.main.h 4.2.stm32f1xx.it.c 4.3.main.c 五.Event R ...

  5. Linux C 函数指针应用---回调函数

    (这里引用了知乎上一些知友的回答,感觉不错,有助于理解,这里引用作为借鉴,如有冒犯,烦请告知) 我们先来回顾一下函数指针,函数指针是专门用来存放函数地址的指针,函数地址是一个函数的入口地址,函数名代表 ...

  6. 基于c++和asio的网络编程框架asio2教程基础篇:2、各个回调函数的触发顺序和执行流程

    基于c++和asio的网络编程框架asio2教程基础篇:2.各个回调函数的触发顺序和执行流程 以tcp举例: tcp服务端流程: #include <asio2/asio2.hpp>int ...

  7. C语言之回调函数(非常重要)附带回调函数版本实现整型的加减乘除四则运算

    对于回调函数!想必大家的第一想法,想必就是函数吧!其实这个也是笔者的第一想法,毕竟之前没有见过回调函数,所以就不怎么知道细节!默认为直接调用函数,就是回调函数,但等学会了回调函数,其实就不是这样想了! ...

  8. mysql timespec重定义_MySQL:半同步(二)主库端回调函数

    源码版本5.7.29 主库端的回调函数比较多,比较复杂 一.回调函数:repl_semi_binlog_dump_start 调用线程:dump线程 #0 repl_semi_binlog_dump_ ...

  9. C-Lodop回调函数的触发

    高版本的火狐和谷歌不再支持np插件之后,Lodop公司推出了C-Lodop,解决了这些浏览器不能用Lodop插件方式打印的问题,相比较Lodop插件,C-Lodop由于是以服务的形式出现,返回值不能直 ...

最新文章

  1. 当前linux环境做出镜像,把当前ubuntu系统做成镜像
  2. 机器人~TCP/IP通信
  3. 致研究者:2018 AI 研究趋势
  4. Linux 之 Kickstart
  5. android视频闪退,安卓 app 视频闪退问题
  6. 全排列函数、组合函数
  7. HTML标签的书写和嵌套规范
  8. 两个按钮间设置空格(间距)
  9. linux Enterprise5 添加删除程序无法正常使用 解决
  10. AI能让全球车厂每年多赚2150亿美元 | 麦肯锡报告
  11. 图解MySQL的各种 JOIN,看完不懂来找我!
  12. 关于ubuntu下无线网卡经常连不上网络的问题
  13. ICMP数据包结构(转)
  14. PHP字符串转换函数
  15. 从快感到成就感:多巴胺vs内啡肽
  16. 力扣刷题 DAY_64 回溯
  17. java获取usb设备的相关信息
  18. Airflow Python工作流引擎的重要概念介绍
  19. java obd_obd-java-api-master 读取ELM 327 OBD数据的 API Develop 247万源代码下载- www.pudn.com...
  20. U3D-常用的插件整理

热门文章

  1. 如何安装altium designer 10
  2. Hibernate中的实体映射
  3. VS2010单元测试入门实践教程
  4. 推荐给c++学习者的经典
  5. 解决老版本eclipse无法完全替换主题的问题
  6. Flink从Kafka 0.8中读取多个Topic时的问题
  7. 跨网文件摆渡如何满足不同安全要求?
  8. 【OI】WERTYU UVa 10082
  9. 在eclipse使用map reduce编写word count程序生成jar包并在虚拟机运行的步骤
  10. WEB学习-CSS盒模型