当前位置: 首页 > wzjs >正文

烟台网站推广哪家好深圳网站建设知名 乐云践新

烟台网站推广哪家好,深圳网站建设知名 乐云践新,网站怎么做图片转换,网站 空间 购买文章目录 环境配置接口层级启动相机读取相机数据 环境配置 新建项目右键【依赖项】-> 选择【bin】文件夹中的【bgapi2_genicam_dotnet.dll】文件当dll文件被添加到【依赖项\程序集】中之后,右键->【属性】,将其【复制本地】设为【True】 此动态链…

文章目录

    • 环境配置
    • 接口层级
    • 启动相机
    • 读取相机数据

环境配置

  1. 新建项目
  2. 右键【依赖项】-> 选择【bin】文件夹中的【bgapi2_genicam_dotnet.dll】文件
  3. 当dll文件被添加到【依赖项\程序集】中之后,右键->【属性】,将其【复制本地】设为【True】

此动态链接库自身也有很多依赖项,为了省事儿,可以将其同文件夹下的内容,全部复制粘贴到debug或release文件夹。

接口层级

Baumer相机提供了多个不同的system,每个system下分为多个API,每个API又对应多个设备。因此,在二次开发时,需要先遍历所有的system,再遍历system下的api,最后遍历api下的device,才能获取相应的设备。

一般来说,每个system对应一个.cti格式的文件,例如我所用的SDK中,探测到了【bgapi2_usb.cti_2.15.2】和【bgapi2_gige.cti_2.15.2】这两个system。通过下面的代码,可以获取这些System

using BGAPI2;public string getSystemList()
{string txtInfo = "";SystemList sysList;BGAPI2.System mSystem = null;try{sysList = SystemList.Instance;sysList.Refresh();txtInfo += $"5.1.2 Detected systems: {sysList.Count}\n";}catch (BGAPI2.Exceptions.IException ex){txtInfo += $"ErrorType: {ex.GetType()}\n " +$"ErrorException {ex.GetErrorDescription()}\n " +$"in function: {ex.GetFunctionName()}";return txtInfo;}foreach (KeyValuePair<string, BGAPI2.System> sys in sysList){txtInfo += $"the {sys.Key} will be opened!\n";mSystem = sys.Value;mSystem.Open();txtInfo += //$"\nSystem ID: {mSystem.Id}\n" +$"System Name: {mSystem.FileName}\n" +$"System Vendor: {mSystem.Vendor}\n" +$"System Version: {mSystem.Version}\n" +$"System Model: {mSystem.Model}\n";mSystem.Close();}return txtInfo;
}

其返回内容表示,探测到两个system,列表如下

System Namebgapi2_usb.ctibgapi2_gige.cti
System VendorBaumerBaumer
System Version2.15.22.15.2
System Modelbgapi2_usbbgapi2_gige

USB和GigE分别是Baumer GAPI支持的接口类型,分别使用USB和网口进行通信。

启动相机

相机的启动流程为

  1. 打开system
  2. 打开api
  3. 打开设备
  4. 打开设备的数据流
  5. 打开数据流对应的buffer

每个system中,提供了不同的API,每个API又适配不同类型的设备,所以想获得设备信息,需要先便利system,再遍历相应的API,最后对设备进行遍历,代码如下。


BGAPI2.System workSystem;
BGAPI2.Device workDevice;
BGAPI2.Interface workApi;
BGAPI2.DataStream workDS;
BGAPI2.BufferList workBL;public void startSystem()
{SystemList sysList;BGAPI2.System mSystem;sysList = SystemList.Instance;sysList.Refresh();foreach (KeyValuePair<string, BGAPI2.System> sys in sysList){if (sys.Key.Contains("gige")){workSystem = sys.Value;workSystem.Open();break;}}
}public void startAPI()
{string txtInfo = "";InterfaceList iList = workSystem.Interfaces;iList.Refresh(1);foreach (KeyValuePair<string, BGAPI2.Interface> ifc_pair in iList){workApi = ifc_pair.Value;workApi.Open();}
}public void startDevice()
{BGAPI2.DeviceList devLst = workApi.Devices;devLst.Refresh(1);foreach (KeyValuePair<string, BGAPI2.Device> dev_pair in devLst){workDevice = dev_pair.Value;workDevice.Open();break;}
}public void startDataStream()
{BGAPI2.DataStreamList dsList = workDevice.DataStreams;dsList.Refresh();foreach (KeyValuePair<string, BGAPI2.DataStream> ds_pair in dsList){workDS = ds_pair.Value;workDS.Open();break;}
}public void startBuffer()
{workBL = workDS.BufferList;BGAPI2.Buffer bf;long iDevicePayloadsize = (long)workDevice.RemoteNodeList["PayloadSize"].Value;IntPtr mUserBuffer = new IntPtr(0);ulong uPayloadSize = workDS.IsDefinedPayloadSize ? workDS.PayloadSize : (ulong)iDevicePayloadsize;List<IntPtr> LUserBuffer = new List<IntPtr>();for (int i = 0; i < 4; i++){mUserBuffer = Marshal.AllocHGlobal((int)uPayloadSize);LUserBuffer.Add(mUserBuffer);IntPtr pUserObj = new IntPtr(0); // NULL pointer, not usedbf = new BGAPI2.Buffer(mUserBuffer, uPayloadSize, pUserObj);workBL.Add(bf); // 1MB buffer size}foreach (KeyValuePair<string, BGAPI2.Buffer> buf_pair in workBL){buf_pair.Value.QueueBuffer();}workDS.StartAcquisition();  //开始采集数据流workDevice.RemoteNodeList["AcquisitionStart"].Execute(); //开始采集数据
}

读取相机数据

在开启数据采集之后,接下来就是把数据装载到buffer中,如果想要读取这些buffer数据,可将其进一步存储为BGAPI2中的Image格式,示例如下

BGAPI2.Image imgWork = null;
public string fillBuffer()
{string info = "";ImageProcessor imgPro = new ImageProcessor(); //创建图像处理器对象BGAPI2.Buffer bfFilled = null;bfFilled = workDS.GetFilledBuffer(1000);if (bfFilled == null)info += "Error: Buffer Timeout after 1000 ms\n";else{info += $"图像{bfFilled.FrameID}的内存地址为{(ulong)bfFilled.MemPtr}";imgWork = imgPro.CreateImage((uint)bfFilled.Width,(uint)bfFilled.Height,(string)bfFilled.PixelFormat,bfFilled.MemPtr,(ulong)bfFilled.MemSize); //创建图像对象bfFilled.QueueBuffer(); //将缓冲区重新放回队列中,等待下一次使用}return info;
}

文章转载自:

http://P85Tvqym.xbnkm.cn
http://wXr7YB0j.xbnkm.cn
http://AoYtkelg.xbnkm.cn
http://owO5UWzN.xbnkm.cn
http://BfdTGcAR.xbnkm.cn
http://6cjZQ4en.xbnkm.cn
http://TCPlBSNM.xbnkm.cn
http://2rPcAAzH.xbnkm.cn
http://jkV0U1ho.xbnkm.cn
http://1CVhJJXT.xbnkm.cn
http://3vjxzdOB.xbnkm.cn
http://jzDxZfOZ.xbnkm.cn
http://AmaAvczY.xbnkm.cn
http://w3l8PikX.xbnkm.cn
http://vSntFU4H.xbnkm.cn
http://E7aXu0qb.xbnkm.cn
http://kiwnFNkb.xbnkm.cn
http://pHt1lWD4.xbnkm.cn
http://GLek31X0.xbnkm.cn
http://xl6tSrMO.xbnkm.cn
http://O9dYAo7y.xbnkm.cn
http://UJQPWgqZ.xbnkm.cn
http://ZrB2nchI.xbnkm.cn
http://zfjWQTUs.xbnkm.cn
http://hpNPwJ21.xbnkm.cn
http://9ZMU48jF.xbnkm.cn
http://Jt2gXB4q.xbnkm.cn
http://zBuIroVj.xbnkm.cn
http://g1ExXrB8.xbnkm.cn
http://IguBCbCf.xbnkm.cn
http://www.dtcms.com/wzjs/716968.html

相关文章:

  • 视频网站超链接怎么做在线安装wordpress
  • 现在网站都是拿什么软件做的中学网站asp模板
  • 加入网站帮忙做网站session WordPress
  • 长春网站建设价格绵竹移动网站建设
  • 郴州网站开发公司vi设计百科
  • 手机建站系统网站建设智能优化
  • 专业网站定制价格便宜重庆本地网站论坛有哪些
  • 网站栏目建设调研北京王府井图片
  • 国内企业网站欣赏外贸网站源码怎么建
  • 微信微网站开发报价单网站开发的
  • 行业网站有哪些平台公司品牌网站建设价格低
  • 可爱风格网站crm管理系统软件哪个好
  • 石家庄网站维护宁波医院通网站建设
  • 爱站攻略怎么自己做网址
  • 企业网站建设的具体需求哪里能找到免费网站
  • 专业网站设计公司哪里有joomla 做的网站
  • 邢台住房和城乡建设部网站常用的网站开发语言有哪些
  • 网站可以做多少优化关键词新华路街道网站建设
  • 唐山乾正建设工程材料检测公司网站天津做优化的网站有多少家
  • 兰州北山生态建设局网站市场营销考研可以考哪些专业
  • 白银网站建设熊掌号公司网站域名查询
  • 微网站 手机网站百度上做网站需要钱吗
  • 代做设计网站网站开发的常用软件
  • 个人网站开发制作教程济南网站建设外包公司排名
  • 网站开发总结性报告个人主页网站设计代码
  • 简述网站建设的具体步骤漂亮logo图片
  • 网站 建设 标准方案前端网页设计流程
  • 网站表单怎么做wordpress文章浏览次数统计代码
  • 综合商城网站建设网站优化的主要任务
  • 营销型网站设计的内容php网站建设思路