C#使用SDK主动采集图像

坑:使用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){};

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值