C# Modbus设备信息加载的实现方式(1)

Modbus设备信息加载的实现方式有很多种,这里讨论一种实现,思路比代码重要,具体类大家可以按自己的要求构建。

Load窗体事件中:

GlobalProperties.Device = LoadDevice(GroupPath, DevicePath, VariablePath);

具体的实现为, 这样所有的设备,参数

        /// <summary>/// 添加设备信息/// </summary>/// <param name="groupPath"></param>/// <param name="devicePath"></param>/// <param name="variablePath"></param>/// <returns></returns>private Device LoadDevice(string groupPath, string devicePath, string variablePath){if (!File.Exists(groupPath)){GlobalProperties.AddLog(1, "通信组文件不存在");return null;}List<Group> GpList = LoadGroup(groupPath, variablePath);if (GpList != null && GpList.Count > 0){try{return new Device(){IPAddress = IniHelper.ReadDefult("设备参数", "IP地址", "", devicePath),Port = Convert.ToInt32(IniHelper.ReadDefult("设备参数", "端口号", "502", devicePath)),CurrentRecipe = IniHelper.ReadDefult("配方参数", "当前配方", "", devicePath),GroupList = GpList,};}catch (Exception ex){GlobalProperties.AddLog(1, "通信组加载失败:" + ex.Message);return null;}}else{return null;}}

通信组及通信变量解析:

/// <summary>
/// 通信组及通信变量解析
/// </summary>
/// <param name="groupPath"></param>
/// <param name="variablePath"></param>
/// <returns></returns>
private List<Group> LoadGroup(string groupPath, string variablePath)
{//判断文件是否存在if (!File.Exists(groupPath)){GlobalProperties.AddLog(1, "通信组文件不存在");return null;}if (!File.Exists(variablePath)){GlobalProperties.AddLog(1, "通信变量文件不存在");return null;}//解析通信组List<Group> GpList = null;try{GpList = MiniExcel.Query<Group>(groupPath).ToList();}catch (Exception ex){GlobalProperties.AddLog(1, "通信组加载失败:" + ex.Message);return null;}//解析变量组,把variable添加到每个group中List<Variable> VarList = null;try{VarList = MiniExcel.Query<Variable>(variablePath).ToList();}catch (Exception ex){GlobalProperties.AddLog(1, "通信变量加载失败:" + ex.Message);return null;}if (VarList != null && GpList != null){foreach (var group in GpList){group.VarList = VarList.FindAll(c => c.GroupName == group.GroupName).ToList();}return GpList;}else{return null;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/37552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是指令微调(LLM)

经过大规模数据预训练后的语言模型已经具备较强的模型能力&#xff0c;能够编码丰富的世界知识&#xff0c;但是由于预训练任务形式所限&#xff0c;这些模型更擅长于文本补全&#xff0c;并不适合直接解决具体的任务。 指令微调是相对“预训练”来讲的&#xff0c;预训练的时…

SpringBoot3基础用法

技术和工具「!喜新厌旧」 一、背景 最近在一个轻量级的服务中&#xff0c;尝试了最新的技术和工具选型&#xff1b; 即SpringBoot3&#xff0c;JDK17&#xff0c;IDEA2023&#xff0c;Navicat16&#xff0c;虽然新的技术和工具都更加强大和高效&#xff0c;但是适应采坑的过程…

vue2 项目,一个方法还原data里所有的属性

在 Vue 2 中&#xff0c;如果你想要还原 data 对象里所有的属性到它们初始状态&#xff0c;可以利用 $options.data 方法来重新分配初始数据。以下是一种常见做法&#xff1a; methods: {resetData() {// 使用 $options.data 创建一个新的数据对象&#xff0c;这将会是组件初始…

简明system

参数详解 Unit模块 [Unit] 部分 Description&#xff1a;简短描述 Documentation&#xff1a;文档地址 Requires&#xff1a;当前 Unit 依赖的其他 Unit&#xff0c;如果它们没有运行&#xff0c;当前 Unit 会启动失败 Wants&#xff1a;与当前 Unit 配合的其他 Unit&#xf…

企业网络安全必知的三大访问控制模型

在当今信息化社会中&#xff0c;信息系统的安全性成为了组织和个人关注的焦点。随着信息技术的不断发展和应用&#xff0c;信息系统的复杂性和规模不断扩大&#xff0c;系统中存储和处理的信息量也日益增长。 一、引言 在当今信息化社会中&#xff0c;信息系统的安全性成为了组…

深入解析QPS和TPS:理解与优化系统性能

目录 QPS是什么&#xff1f; QPS的定义QPS的计算QPS的应用场景 TPS是什么&#xff1f; TPS的定义TPS的计算TPS的应用场景 QPS和TPS的区别如何提高QPS和TPS 系统架构优化数据库优化代码优化缓存机制负载均衡 QPS和TPS的监控与测试 监控工具测试工具测试方法 案例分析 高QPS系统…

【知识点篇]《计算机组成原理》之计算机系统概述

1.1 计算机发展历程 世界上第一台电子数字计算机 1946年&#xff0c;ENIAC(Electronic Numerical Integrator And Computer)在美国宾夕法尼亚大学研制成功。性能低&#xff0c;耗费巨大&#xff0c;但却是科学史上的一次划时代的创新&#xff0c;奠定了电子计算机的基础&#x…

Python api接口 异步

Python API接口异步编程简介 在现代的软件开发中&#xff0c;大多数应用都需要通过API接口与其他系统进行交互。Python是一种非常流行的编程语言&#xff0c;因此许多开发者选择使用Python来构建他们的API接口。在一些情况下&#xff0c;API接口需要进行异步编程&#xff0c;以…

stm32学习笔记---ADC模数转换器(理论部分)

目录 ADC简介 什么叫逐次逼近型&#xff1f; STM32 ADC框图 模数转换器外围线路 ADC基本结构图 输入通道 规则组的四种转换模式 第一种&#xff1a;单次转换非扫描模式 第二种&#xff1a;连续转换&#xff0c;非扫描模式 第三种&#xff1a;单次转换&#xff0c;扫描…

如何利用React和Python构建强大的网络爬虫应用

如何利用React和Python构建强大的网络爬虫应用 引言&#xff1a; 网络爬虫是一种自动化程序&#xff0c;用于通过互联网抓取网页数据。随着互联网的不断发展和数据的爆炸式增长&#xff0c;网络爬虫越来越受欢迎。本文将介绍如何利用React和Python这两种流行的技术&#xff0c…

5个大气的wordpress付费主题

Sesko赛斯科wordpress外贸主题 适合用于重型机械设备公司建外贸官方网站的橙红色wordpress外贸主题。 https://www.jianzhanpress.com/?p5886 Polar钋啦wordpress外贸主题 制造业wordpress网站模板&#xff0c;适合生产制造企业官方网站使用的wordpress外贸主题。 https:/…

Flask-Session使用Redis

Flask-Session使用Redis 一、介绍 在Flask中&#xff0c;session数据默认是以加密的cookie形式存储在用户的浏览器中的。但是&#xff0c;真正的session数据应该存储在服务器端。Django框架会将session数据存储在数据库的djangosession表中&#xff0c;而Flask则可以通过第三…

临时文件上传系统Plik

什么是 Plik &#xff1f; Plik 是一个基于 Go 语言的可扩展且用户友好的临时文件上传系统&#xff08;类似于 Wetransfer&#xff09;。 软件主要特点&#xff1a; 强大的命令行客户端易于使用的 Web 用户界面多个数据后端&#xff1a;文件、OpenStack Swift、S3、Google Clo…

用pycharm进行python爬虫的步骤

使用 pycharm 进行 python 爬虫的步骤&#xff1a;下载并安装 pycharm。创建一个新项目。安装 requests 和 beautifulsoup 库。编写爬虫脚本&#xff0c;包括获取页面内容、解析 html 和提取数据的代码。运行爬虫脚本。保存和处理提取到的数据。 用 PyCharm 进行 Python 爬虫的…

golang template模板嵌套语法 为何不能使用变量 底层源码解析

我们都知道在golang的模板语法中&#xff0c;我们可以使用template关键字嵌套其他模块&#xff0c; 如&#xff1a; {{template "模板文件名" .}} 然而&#xff0c;这里的 “模板文件名” 是不能使用变量的&#xff01; 注意这里最后的的 . 这个实际上是templa…

vue3 学习记录

文章目录 props组合式组件 使用<script setup \>组合式组件 没有使用 <script setup\>选项式组件 this emits组合式组件 使用<script setup \>组合式组件 没有使用 <script setup\>选项式组件 this v-model 组件数据绑定单个model多个model实现 model …

轻量级模型,重量级性能,TinyLlama、LiteLlama小模型火起来了

小身板&#xff0c;大能量。 当大家都在研究大模型&#xff08;LLM&#xff09;参数规模达到百亿甚至千亿级别的同时&#xff0c;小巧且兼具高性能的小模型开始受到研究者的关注。 小模型在边缘设备上有着广泛的应用&#xff0c;如智能手机、物联网设备和嵌入式系统&#xff0…

java用pdf.js在线预览pdf文件(jeecg框架)

最近在jeecg框架的后台要做一个pdf在线预览的页面功能&#xff0c;可是每次点预览都是下载&#xff0c;所以就要解决这个问题&#xff0c;现在解决了&#xff0c;记录一下&#xff0c;防止后面踩坑。 先放代码&#xff1a; 下面是点“预览”按钮的点击事件&#xff0c;代码放…

【Mac】iTerm for mac(终端工具)软件介绍及安装教程

软件介绍 iTerm 是 macOS 上一个非常受欢迎的终端仿真器&#xff0c;提供了比默认的 Terminal 应用更多的功能和定制选项。它是一款开源软件&#xff0c;主要用于命令行界面的操作和开发者工具。 主要特点和功能&#xff1a; 分页和标签&#xff1a; iTerm 允许用户在单个窗…

师出名门,全靠师兄师姐罩着

前言 2024年的高考刚结束,考生又到了做选择的时候了。选择大于努力,方向错了&#xff0c;白费劲。 耳熟能详的名校 名校意味着? 卓越的教育资源&#xff1a;包括顶尖的师资队伍&#xff0c;他们在学术研究和教学方面经验丰富、造诣深厚。同时&#xff0c;拥有先进的教学设施、…