首先吐槽一句,官方的demos写的真的不好,坑爹啊。对于小白来说,开发官方demos为我所用太难了。为什么呢?因为它Dalsa的DALSA.SaperaLT.SapClassBasic.dll中,不仅有采图的代码库,还有用于显示的UI库(它不是用Winform的PictureBox显示图片,而是用它自家的UI显示图片),demos把采图程序和UI库杂糅在一起,而且隐藏了少部分细节。
后来我在网上狂搜资料,搜到了两个大佬的两篇好文章:
dalsa 8k线阵网口相机c#开发
https://blog.csdn.net/baidu_30028771/article/details/64628784
DALSA相机SDK不完全教程
文章一的代码是一个完整的例子,是可以直接采到图的。文章二的代码缺少关键的GetCameraInfo()方法,是不能直接运行的,但是这篇文章的讲解更全面、深入,可以说两篇都是必备的啦。
我为什么要写这两篇文章呢?因为我想集合这两家之长,再加入一点自己的经验、代码,并且提供完整的源代码方便大家开发。很忏愧 ,只做了一点微小的贡献。
我的开发硬件、软件信息:
操作系统:windows 10、windows 7 64bit都有
线扫相机:Dalsa Linea Mono 4k 26 kHz GigE (LA-GM-04K08A)
IDE :Visual studio 2013
第一篇文章我直接运行代码报错了,是到了跟Dalsa相关的dll的语句时报错的。Win 10系统很扯淡,报错的提示一点都看不懂,我换Win 7的系统后,也报错,但是明确把错误原因找出来了。其实是Dalsa的dll中有低版本.Net Framework的代码,导致不兼容。解决的办法,网上一大推,核心就一句:在app.config的合适位置,加这句话useLegacyV2RuntimeActivationPolicy=”true”。
如果没有app.config文件,你就需要创建这个文件。
我的app.config文件内容如下:
<?xml version="1.0" encoding="utf-8"?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> </startup> </configuration>
现在你需要把我上文提到的两篇博客仔细看一下了。
……
看完了吗?看完了的话,接着往下看我的文章。
首先学习一下相机配置文件(.ccf)如何生成:
① 打开相机软件Sapera CamExpert,确保相机已经正常工作,然后自己改变到合适的参数;
② 点击软件左上角的File——Save As...,选择文件夹路径,修改文件名。
我的解决方案资源结构如下:
因为我是用Halcon显示图片,因此我添加了两个dll引用。除了app.config之外,我所有自己编写的代码全部在Form1.cs中。其实相当于我把全部源代码一字不漏全告诉你了。
我的Form1界面如下:
(点击Init初始化,会弹出该线阵相机的型号)
然后点击“snap”的话,它会连续采集15张图,并保存,如下:
Form1.cs的全部内容如下: