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

【12】大恒相机SDK C#开发 ——多相机开发,枚举所有相机,并按配置文件中的相机顺序 将所有相机加入设备列表,以便于对每个指定的相机操作

文章目录

  • 1 实现步骤
  • 2 代码实现
  • 3 遇到的问题及解决

多相机开发,枚举所有相机,并按配置文件中的相机顺序 将所有相机加入设备列表,以便于对每个指定的相机操作;

1 实现步骤

步骤:

  • 枚举同一网络下所有相机;
  • 将所有相机的SN加入m_strAllSN数组;
  • 将所有相机按照config.ini中的SN顺序排序,加入相机参数状态列表;
    • 如果,找到与 config.ini中的SN编为m_sorted_strSN[j]对应的相机,就将该相机信息存入m_listCCamerInfo;
    • 如果,自动获取的相机列表中没有找到m_sorted_strSN[j],说明该相机不可以可用;
    • 为了,保持了相机的顺序不变——当第j个相机没有检测到时,在列表m_listCCamerInfo中第j个位置添加一个占位信息,确保第j+1个相机信息可以正确的存入列表m_listCCamerInfo中第j+1个位置,保持了相机的顺序不变。

2 代码实现

  private void __EnumDevice(){m_listIGXDeviceInfo.Clear();if (null != m_objIGXFactory){////枚举同一网段下的相机//m_objIGXFactory.UpdateDeviceList(200, m_listIGXDeviceInfo);////枚举同一网络下所有相机 有ALLm_objIGXFactory.UpdateAllDeviceList(200, m_listIGXDeviceInfo);}// 判断当前连接设备个数if (m_listIGXDeviceInfo.Count <= 0){MessageBox.Show("未检测到设备,请确保设备正常连接然后重启程序!");return;}m_RealCamNum = m_listIGXDeviceInfo.Count;m_cb_EnumDevice.Items.Clear();//将所有相机的SN加入m_strAllSN数组string[] m_strAllSN = new string[m_SetCamNum];       ///<序列号for (int i = 0, j = 0; i < m_RealCamNum; i++){m_strAllSN[i] = m_listIGXDeviceInfo[i].GetSN();}bool isFindThisCamera = false;int k = 0;//将所有相机按照config.ini中的SN顺序排序,加入相机参数状态列表for (int j = 0; j < m_SetCamNum; j++){//是否找到标志,每次进入先重置。isFindThisCamera = false;for (int i = 0; i < m_RealCamNum; i++){//找到与 config.ini中的SN编为m_sorted_strSN[j]对应的相机if (m_sorted_strSN[j] == m_strAllSN[i])//相机1{isFindThisCamera = true;k = i;//k保存 与m_sorted_strSN[j]对应的相机的下标break;}}//实例化相机参数信息对象——每个相机都要实例化一个对象,不可以在循环外面创建一个对象,每次循环改变赋值(这也那个最终m_listCCamerInfo中5个元素相同)CCamerInfo objCCamerInfo = new CCamerInfo();//如果,找到与 config.ini中的SN编为m_sorted_strSN[j]对应的相机,就将该相机信息存入m_listCCamerInfo;if (isFindThisCamera){objCCamerInfo.m_strDisplayName = m_listIGXDeviceInfo[k].GetDisplayName();   objCCamerInfo.m_emDeviceType = m_listIGXDeviceInfo[k].GetDeviceClass();objCCamerInfo.m_strSN = m_listIGXDeviceInfo[k].GetSN();objCCamerInfo.m_CamUserName_strSN = m_listIGXDeviceInfo[k].GetUserID() + objCCamerInfo.m_strSN;m_cb_EnumDevice.Items.Add(objCCamerInfo.m_CamUserName_strSN);//设备信息加入相机参数状态列表m_listCCamerInfo.Add(objCCamerInfo);}//如果,自动获取的相机列表中没有找到m_sorted_strSN[j],说明该相机不可以可用,//当第j个相机没有检测到时,在列表m_listCCamerInfo中第j个位置添加一个占位信息,确保第j+1个相机信息可以正确的存入列表m_listCCamerInfo中第j+1个位置,保持了相机的顺序不变。else{//将 objCCamerInfo 信息置为空,表示一个占位信息objCCamerInfo.m_strDisplayName = null;objCCamerInfo.m_strDeviceUserName = null;            objCCamerInfo.m_strSN = null;//设备信息加入相机参数状态列表m_listCCamerInfo.Add(objCCamerInfo);}if (j + 1 == m_SetCamNum)break;             }if (m_cb_EnumDevice.Items.Count > 0){m_cb_EnumDevice.SelectedIndex = 0;}//选择ComboBox中的设备for (int i = 0; i < m_SetCamNum; i++){if (m_cb_EnumDevice.Text == m_listCCamerInfo[i].m_CamUserName_strSN){m_nOperateID = i;//操作相机编号}}__UpdateUI_Btn_State(m_nOperateID);}

3 遇到的问题及解决

实例化相机参数信息对象——每个相机都要实例化一个对象,不可以在循环外面创建一个对象,每次循环改变赋值(这也那个最终m_listCCamerInfo中5个元素相同)

实例化相机参数信息对象——实例化放在for循环外面,CCamerInfo objCCamerInfo = new CCamerInfo();

(虽然每次进入for循环objCCamerInfo都被重新赋值,但它还是同一个对象,每次赋值之前存入列表的会跟着一起变)

在这里插入图片描述

在这里插入图片描述

实例化相机参数信息对象——实例化放在for循环内部,每个相机都要实例化一个对象objCCamerInfo ;
CCamerInfo objCCamerInfo = new CCamerInfo();
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/308221.html

相关文章:

  • 存储学习笔记
  • CSS选择器常用语法
  • day24作业
  • 《Linux自动化运维三例:磁盘告警、服务守护与网络检测》​
  • Mysql超详细安装配置教程(详细图文,保姆级)
  • 掩码语言模型(MLM)技术解析:理论基础、演进脉络与应用创新
  • 【Prompt集合】一个学习英文单词更好的提示词
  • 从姑苏区人工智能大模型基础设施招标|学习服务器、AI处理器、GPU
  • 数据结构 ArrayList与顺序表
  • 机器学习——互信息(超详细)
  • 【物联网】基于树莓派的物联网开发【19】——树莓派搭建MQTT客户端及MQTTX使用
  • Vision Transformer(ViT)模型实例化PyTorch逐行实现
  • 从 MySQL 迁移到 TiDB:使用 SQL-Replay 工具进行真实线上流量回放测试 SOP
  • SpringBoot3.x入门到精通系列:1.2 开发环境搭建
  • 25-vue-photo-preview的使用及使用过程中的问题解决方案
  • 实战教程 ---- Nginx结合Lua实现WAF拦截并可视化配置教程框架
  • 走进computed,了解computed的前世今生
  • 【云故事探索】NO.16:阿里云弹性计算加速精准学 AI 教育普惠落地
  • 谁在托举Agent?阿里云抢滩Agent Infra新赛道
  • 安装 docker compose v2版 笔记250731
  • 对接八大应用渠道
  • Tomcat,WebLogic等中间件漏洞实战解析
  • 大模型流式长链接场景下 k8s 优雅退出 JAVA
  • 用 MyBatis + MySQL 实现高效的批量 Upsert
  • 关于tresos Studio(EB)的MCAL配置之GtmCfg
  • 性能测试篇 :Jmeter监控服务器性能
  • Golang 语言的编程技巧之类型
  • 基础组件(六):网络缓冲区设计 和 定时器方案
  • TTS语音合成|GPT-SoVITS语音合成服务器部署,实现http访问
  • Vue3+Vite项目如何简单使用tsx