news 2026/4/15 5:29:29

VisionPro二开之系统参数设置模块

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VisionPro二开之系统参数设置模块

VisionPro二开之系统参数设置模块

一 系统参数类

/// <summary>/// 系统参数/// </summary>publicclassAppParameter{/// <summary>/// 相机序列号/// </summary>[Category("系统参数"),Description("相机序列号")]publicstringCameraSeriesNum{get;set;}=string.Empty;/// <summary>/// 曝光时间/// </summary>[Category("系统参数"),Description("曝光时间")]publicdoubleExposureTime{get;set;}=200;/// <summary>/// 服务端IP/// </summary>[Category("系统参数"),Description("服务端IP")]publicstringIp{get;set;}="127.0.0.1";/// <summary>/// 服务端端口/// </summary>[Category("系统参数"),Description("服务端端口")]publicintPort{get;set;}=8080;}

二 XMLHelper

usingSystem;usingSystem.Collections.Generic;usingSystem.Globalization;usingSystem.IO.Compression;usingSystem.IO;usingSystem.Linq;usingSystem.Runtime.Serialization.Formatters.Binary;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Xml.Serialization;usingSystem.Xml;namespaceHelper{publicclassXMLHelper{publicstaticXmlNodeCreate(stringnodeName){vardoc=newXmlDocument();XmlNodenode=doc.CreateElement(nodeName);returnnode;}publicstaticXmlAttributeCreateAttribute(XmlNodenode,stringattributeName,stringvalue){try{XmlDocumentdoc=node.OwnerDocument;XmlAttributeattr=doc.CreateAttribute(attributeName);attr.Value=value;node.Attributes.SetNamedItem(attr);returnattr;}catch(Exceptionerr){stringdesc=err.Message;returnnull;}}publicstaticXmlNodeObjectToXML(objectconfig){varxnd=newXmlDocument();if(config!=null){//we need the type to serializeTypet=config.GetType();varser=newXmlSerializer(t);//will hold the xmlusing(varwriter=newStringWriter(CultureInfo.InvariantCulture)){ser.Serialize(writer,config);xnd.LoadXml(writer.ToString());writer.Close();}}returnxnd.DocumentElement;}publicstaticobjectXMLToObject(XmlNodenode,TypeobjectType){objectconvertedObject=null;if(node!=null){using(varreader=newStringReader(node.OuterXml)){varser=newXmlSerializer(objectType);convertedObject=ser.Deserialize(reader);reader.Close();}}returnconvertedObject;}}publicclassXmlSerializerHelper{/// <summary>/// 读取XML文件/// </summary>/// <param name="XmlFilePath"></param>/// <param name="type"></param>/// <returns></returns>publicstaticobjectReadXML(stringXmlFilePath,Typetype){if(!File.Exists(XmlFilePath)){thrownewException($"File{XmlFilePath}not Exists");}using(varfs=newFileStream(XmlFilePath,FileMode.Open)){returnnewXmlSerializer(type).Deserialize(fs);}}/// <summary>/// 序列化XML文件/// </summary>/// <param name="data"></param>/// <param name="file"></param>/// <param name="type"></param>/// <returns></returns>publicstaticboolWriteXML(objectdata,stringfile,Typetype){// 判断对应文件夹是否存在,不存在则创建if(!Directory.Exists(Path.GetDirectoryName(file))){Directory.CreateDirectory(Path.GetDirectoryName(file));}using(varfs=newFileStream(file,FileMode.Create)){newXmlSerializer(type).Serialize(fs,data);}returntrue;}publicstaticstringXMLSerialize<T>(Tentity){varbuffer=newStringBuilder();varserializer=newXmlSerializer(typeof(T));using(TextWriterwriter=newStringWriter(buffer)){serializer.Serialize(writer,entity);}returnbuffer.ToString();}publicstaticstringByteToString(byte[]data){returnEncoding.Default.GetString(data);}publicstaticbyte[]StringToByte(stringvalue){returnEncoding.Default.GetBytes(value);}publicstaticTDeXMLSerialize<T>(stringxmlString){TcloneObject=default(T);varbuffer=newStringBuilder();buffer.Append(xmlString);varserializer=newXmlSerializer(typeof(T));using(TextReaderreader=newStringReader(buffer.ToString())){Objectobj=serializer.Deserialize(reader);cloneObject=(T)obj;}returncloneObject;}/// <summary>/// 把对象序列化为字符串/// </summary>/// <param name="pObj"></param>/// <returns></returns>publicstaticbyte[]SerializeObject(objectpObj){if(pObj==null)returnnull;var_memory=newMemoryStream();varformatter=newBinaryFormatter();formatter.Serialize(_memory,pObj);_memory.Position=0;varread=newbyte[_memory.Length];_memory.Read(read,0,read.Length);_memory.Close();returnCompress(read);}/// <summary>/// 把字节反序列化成相应的对象/// </summary>/// <param name="pBytes">字节流</param>/// <returns>object</returns>publicstaticobjectDeserializeObject(byte[]pBytes){object_newOjb=null;if(pBytes==null)return_newOjb;var_memory=newMemoryStream(Decompress(pBytes));_memory.Position=0;varformatter=newBinaryFormatter();_newOjb=formatter.Deserialize(_memory);_memory.Close();return_newOjb;}/// <summary>/// Write byte[] to file/// </summary>publicstaticvoidWriteByteToFile(byte[]dataSource,stringfilePath){varfs=newFileStream(filePath,FileMode.Create);//将byte数组写入文件中fs.Write(dataSource,0,dataSource.Length);fs.Close();}/// <summary>/// Read byte from file/// </summary>/// <param name="filePath"></param>/// <returns></returns>publicstaticbyte[]ReadByteFromFile(stringfilePath){varfs=newFileStream(filePath,FileMode.Open);//获取文件大小longsize=fs.Length;vararray=newbyte[size];//将文件读到byte数组中fs.Read(array,0,array.Length);fs.Close();returnarray;}/// <summary>/// Write object to file/// </summary>publicstaticvoidWriteObjectToFile(objectdataSource,stringfilePath){varfs=newFileStream(filePath,FileMode.Create);byte[]arraysource=SerializeObject(dataSource);//将byte数组写入文件中fs.Write(arraysource,0,arraysource.Length);fs.Close();}/// <summary>/// Read object from file/// </summary>/// <param name="filePath"></param>/// <returns></returns>publicstaticobjectReadObjectFromFile(stringfilePath){varfs=newFileStream(filePath,FileMode.Open);//获取文件大小longsize=fs.Length;vararray=newbyte[size];//将文件读到byte数组中fs.Read(array,0,array.Length);fs.Close();returnDeserializeObject(array);}/// <summary>/// 字符串压缩/// </summary>/// <param name="strSource"></param>/// <returns></returns>publicstaticbyte[]Compress(byte[]data){try{varms=newMemoryStream();varzip=newGZipStream(ms,CompressionMode.Compress,true);zip.Write(data,0,data.Length);zip.Close();varbuffer=newbyte[ms.Length];ms.Position=0;ms.Read(buffer,0,buffer.Length);ms.Close();returnbuffer;}catch(Exceptione){thrownewException(e.Message);}}/// <summary>/// 字符串解压缩/// </summary>/// <param name="strSource"></param>/// <returns></returns>publicstaticbyte[]Decompress(byte[]data){try{varms=newMemoryStream(data);varzip=newGZipStream(ms,CompressionMode.Decompress,true);varmsreader=newMemoryStream();varbuffer=newbyte[0x1000];while(true){intreader=zip.Read(buffer,0,buffer.Length);if(reader<=0){break;}msreader.Write(buffer,0,reader);}zip.Close();ms.Close();msreader.Position=0;buffer=msreader.ToArray();msreader.Close();returnbuffer;}catch(Exceptione){thrownewException(e.Message);}}/// <summary>/// string 压缩/// </summary>/// <param name="str"></param>/// <returns></returns>publicstaticstringCompressString(stringstr){stringcompressString="";byte[]compressBeforeByte=Encoding.GetEncoding("UTF-8").GetBytes(str);byte[]compressAfterByte=Compress(compressBeforeByte);//compressString = Encoding.GetEncoding("UTF-8").GetString(compressAfterByte);compressString=Convert.ToBase64String(compressAfterByte);returncompressString;}/// <summary>/// string 解压缩/// </summary>/// <param name="str"></param>/// <returns></returns>publicstaticstringDecompressString(stringstr){stringcompressString="";//byte[] compressBeforeByte = Encoding.GetEncoding("UTF-8").GetBytes(str);byte[]compressBeforeByte=Convert.FromBase64String(str);byte[]compressAfterByte=Decompress(compressBeforeByte);compressString=Encoding.GetEncoding("UTF-8").GetString(compressAfterByte);returncompressString;}}}

三 参数设置界面

四 加载显示参数

pgd_AppParas

// 加载系统参数if(File.Exists(@".\\AOI外观检测软件参数\\AppParameter.xml")){AppParameterappParameter=(AppParameter)XmlSerializerHelper.ReadXML(@".\\AOI外观检测软件参数\\AppParameter.xml",typeof(AppParameter));pgd_AppParas.SelectedObject=appParameter;}else{AppParameterappParameter=newAppParameter();pgd_AppParas.SelectedObject=appParameter;}

五 保存参数

/// <summary>/// 保存参数/// </summary>/// <param name="sender"></param>/// <param name="e"></param>privatevoidmaterialButton1_Click(objectsender,EventArgse){AppParameterappParameter=pgd_AppParas.SelectedObjectasAppParameter;// 保存参数XmlSerializerHelper.WriteXML(appParameter,@".\\AOI外观检测软件参数\\AppParameter.xml",typeof(AppParameter));MessageBox.Show("保存成功!");}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 16:34:00

Qwen2.5推理模型:多轮对话推理的动态新引擎

Qwen2.5推理模型&#xff1a;多轮对话推理的动态新引擎 【免费下载链接】Qwen2.5-32B-DialogueReason 项目地址: https://ai.gitcode.com/StepFun/Qwen2.5-32B-DialogueReason 导语&#xff1a;阿里达摩院推出Qwen2.5-32B-DialogueReason模型&#xff0c;以规则强化学习…

作者头像 李华
网站建设 2026/4/15 14:46:25

ResNet18应用实战:零售货架商品识别系统搭建

ResNet18应用实战&#xff1a;零售货架商品识别系统搭建 1. 引言&#xff1a;通用物体识别与ResNet-18的工程价值 在智能零售、自动化巡检和视觉监控等场景中&#xff0c;快速准确地识别图像中的物体类别是实现智能化决策的基础能力。传统方案依赖人工标注或规则匹配&#xf…

作者头像 李华
网站建设 2026/4/15 14:44:30

ResNet18实战测评:1000类识别精度与速度参数详解

ResNet18实战测评&#xff1a;1000类识别精度与速度参数详解 1. 引言&#xff1a;通用物体识别中的ResNet-18价值定位 在计算机视觉领域&#xff0c;图像分类是基础且关键的任务之一。随着深度学习的发展&#xff0c;ResNet&#xff08;残差网络&#xff09;系列模型因其出色…

作者头像 李华
网站建设 2026/3/25 22:37:54

LVGL教程实现温控面板的完整示例

手把手教你用 LVGL 实现一个现代温控面板&#xff1a;从零开始的嵌入式 UI 实战 你有没有想过&#xff0c;家里空调或地暖控制器那块“看起来挺高级”的触控屏&#xff0c;其实自己也能做出来&#xff1f; 别被市面上那些动辄几百块的 HMI 模块吓住。今天我们就用一块 STM32…

作者头像 李华
网站建设 2026/3/23 22:06:29

GLM-4-9B-Chat-1M:超百万上下文对话AI重磅登场

GLM-4-9B-Chat-1M&#xff1a;超百万上下文对话AI重磅登场 【免费下载链接】glm-4-9b-chat-1m-hf 项目地址: https://ai.gitcode.com/zai-org/glm-4-9b-chat-1m-hf 导语 智谱AI正式推出支持100万token上下文长度的GLM-4-9B-Chat-1M大语言模型&#xff0c;标志着中文大…

作者头像 李华
网站建设 2026/4/12 21:23:14

Buck电路图及其原理系统学习:稳态与瞬态响应

从零读懂Buck电路&#xff1a;稳态运行与瞬态响应的底层逻辑你有没有遇到过这样的情况&#xff1f;系统刚上电一切正常&#xff0c;可一旦CPU突然满载&#xff0c;电压“啪”地一下掉下去&#xff0c;芯片复位重启——问题查了三天&#xff0c;最后发现是电源没扛住负载阶跃。这…

作者头像 李华