产品描述

有无图像没图像 是否黑屏黑屏,白屏,花屏 是否亮灯亮红灯 是否开机不开机 故障设备找不到相机

下面是其中对于不同的工作要求,加载相机对象和卸载相机对象是通用的。而要使用其他模块,如事件对象时,相应的改为加载事件对象和卸载事件对象,以及使用事件对象完成相关任务即可。编程时一定要对整个流程做好规划,特别是硬件编程时一定留意内存泄露,前面分配的资源一定要在后面释放。
下面是五个大流程的详细解析,需要的地方已经加以说明,并注解了需要用到的函数
加载相机对象:
卸载相机对象:
加载数据流抓取对象:
卸载数据流抓取对象:
单帧或连续抓图过程:
按照以上介绍的流程即可实现实时图像采集:
很多人问我要源代码,翻了以前的程序文件夹找到了这个程序,演示了利用Pylon SDK进行相机采集的过程,使用MIL完成界面显示,采集部分封装成了类,可以直接重用。测试相机为Basler相机。注意Pylon仅完成Raw Data的采集,使用MIL的MbufPut完成图像数据的重组,然后MIL自动显示。
天津CCD工业相机维修
Pylon 以实时图像采集讲解PylonC SDK使用流程
一般的对于提供硬件编程来说,硬件生产厂家都会提供好SDK使用的手册和实例。手册中一般包括安装和配置流程,一些基本概念的介绍,SDK每个函数使用,SDK使用流程和实例(有些硬件实例直接写在手册中,有些会以单文件存在,还有的两者皆有)。对于上位机软件开发人员来说拿到一个硬件上位机编程任务。
先应该阅读了解其SDK概念,再按照其介绍的SDK开发流程阅读其提供的实例,修改相应的实例为自己所用,有不懂的函数查询一下其用法即可。有些开发人员习惯性的去记其API,这是费时费力的做法,并不推荐。下面主要以实时图像采集讲解Basler相机的PylonC SDK的使用流程。
天津CCD工业相机维修
一、工业相机编程模型和流程
不同的工业相机提供不同的编程接口(SDK),尽管不同接口不同相机间编程接口各不相同,他们实际的API结构和编程模型很相似,了解了这些再对工业相机编程就很简单了。
DMA技术:
DMA是一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为"DMA控制器"的控制下进行的。CPU除了在数据传输开始和结束时做一点处理外,在传输过程中CPU可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处于并行操作。因此,使整个计算机系统的效率大大提高。
对于工业相机来说,当CMOS或CCD芯片曝光然后将数据转到相机缓存后,这时候DMA会负责将缓存中数据保存到硬盘上位置,正好满足相机高速大数据的传输。一般都会使用DMA来完成实时的数据采集和保存。
多数时候,DMA控制器存在各种接口的图像采集卡中,包括1394/GigE/USB/Camera Link等,这些采集卡有自己的时间控制单元完成和相机曝光的同步,并控制DMA的存取行为。
天津CCD工业相机维修
这里使用三个队列完成采集和处理同步。
DMA队列:
当CMOS或CCD芯片曝光然后将数据转到相机缓存后,这时候DMA会负责将缓存中数据写入到“DMA队列”头Buffer中。
准备队列:
一旦“DMA队列”头Buffer被填充完成,会被加到“准备队列”尾后,这时候会发送中断通知用户程序:当前又有一帧数据采集完成,您看着处理吧。
处理队列:
当用户接收到中断会自动跳转到中断函数中,使用GetFrame拿取“准备队列”头Buffer,然后加到当前用户程序“处理队列”尾,用户程序从“处理队列”头拿取Buffer处理完成后使用PutFrame将Buffer再添加到原始的“DMA队列”尾。
http://jaso.cn.b2b168.com

产品推荐