当前位置: 代码迷 >> 综合 >> C#使用SDK主动采集图像
  详细解决方案

C#使用SDK主动采集图像

热度:105   发布时间:2023-11-02 11:32:55.0

坑:使用C#主动采集图像接收返回的结构体的指针

平台:

软件:vs2015

硬件:某品牌的工业相机

主动采集的函数:

 CamAPI.gcGetImage(camid, DataBuffer, 500, Param);
        //获取一帧图像
        //nID in 为设备ID值,范围从1~32
        //pBuffer out 接收图像数据缓存,必须大于实际的图像缓存大小,最好再加1M字节以上,防止缓存溢出
        //TimeOut in 超时时间设置,以ms为单位
        //pParam out CBFUN_INFO结构体指针(gcParam.h),不使用可以设置为NULL
        //返回实际有效的图像数据大小,以字节为单位
        //如果调用gcRegImageCbFun()函数注册了回调函数,则该函数无效!
        //GCDEV_API u32 __cdecl gcGetImage(u8 nID, void * pBuffer, u32 TimeOut, void *pParam=NULL);

解决方案:

声明接收的类型,使用new对象,并且输入存放的内存数量。

 ushort[] Param = new ushort[1024];

通过使用debug查看返回的结构体的值,可以发现 数值已经返回;接下来就是简单的取值了。

意外状况:

我是开了一个线程去做主动采集图像的,但那时用的是死循环,所以我在主线程一旦使用 停止采集按钮,  threadplay.Join(),(此函数用于对开启线程的阻塞)整个界面便卡死,而且图像采集并没有停止,原因是因为死循环没有退出去。

知道问题所在就简单了,该成变量判断就行 while (bplay == true){};

整个问题的思路还是在于对程序要有熟练,此致记之。

 

  相关解决方案