主窗体获取子窗体的数值

本文所描述的是一个modbus读从站的数值实时更新到主窗体中,在主窗体中实时检测子窗体反馈回来的数据当它为false的时候添加报警输出

在主窗体中

//公开一个静态的字典用来接收数值
public static Dictionary<string, bool> StatusDictionary { get; set; }public void UpdateStatusDictionary(Dictionary<string, bool> updatedDictionary)
{StatusDictionary = updatedDictionary;bool dictionaryUpdated = false;int alarmId = 10708;foreach (KeyValuePair<string, bool> pair in StatusDictionary){//进行字典值判断为false就打印报警if (!pair.Value){string key = pair.Key;instance.frmMessage.SetAlarm(alarmId++, key);}// Check if dictionary has been updatedif (!dictionaryUpdated && !pair.Value != updatedDictionary[pair.Key]){dictionaryUpdated = true;}}if (dictionaryUpdated){foreach (KeyValuePair<string, bool> pair in updatedDictionary){if (!pair.Value){string key = pair.Key;instance.frmMessage.SetAlarm(alarmId++, key);}}}
}

下面是子窗体的代码实例

private void checkBox4_CheckedChanged_1(object sender, EventArgs e)
{if (this.checkBox4.Checked && ckModbusPortOpen.Checked){timer1.Start();}if(!checkBox4.Checked){timer1.Stop();}
}
//主窗体的名称
MainFrm childFrmRun = new MainFrm();
private void ModBus7000NMsg()
{try{bool[] data = master.ReadInputs(1, 1, 2);// 读取机组打胶、机组不能工作状态bool 机组打胶中 = (data[0]);bool 机组不能工作 = (data[1]);bool[] data1 = master.ReadInputs(1, 8, 7);bool 阀体状态 = data1[0];bool 胶筒预热中 = (data1[1]);bool 喷嘴预热中 = (data1[2]);bool 撞针已达保养次数 = (data1[3]);bool 喷嘴已达保养次数 = (data1[4]);bool 陶瓷已达保养次数 = (data1[5]);bool 自动排胶中 = (data1[6]);bool[] data2 = master.ReadInputs(1, 16, 6);bool 系统故障01 = data2[0];bool 散热器温度过高 = (data2[1]);bool 散热器温度传感器故障 = (data2[2]);bool 系统故障02 = (data2[3]);bool 系统故障03 = (data2[4]);bool 阀体存储故障 = (data2[5]);bool[] data3 = master.ReadInputs(1, 23, 5);bool 主板存储故障 = data3[0];bool 胶筒温度传感器故障 = (data3[1]);bool 胶筒电加热故障 = (data3[2]);bool 喷嘴温度传感器故障 = (data3[3]);bool 喷嘴电加热故障 = (data3[4]);// 使用 Dictionary 存储布尔值及其对应的名称statusDictionary = new Dictionary<string, bool>(){{"机组打胶中", 机组打胶中},{"机组不能工作", 机组不能工作},{"阀体状态", 阀体状态},{"胶筒预热中", 胶筒预热中},{"喷嘴预热中", 喷嘴预热中},{"撞针已达保养次数", 撞针已达保养次数},{"喷嘴已达保养次数", 喷嘴已达保养次数},{"陶瓷已达保养次数", 陶瓷已达保养次数},{"自动排胶中", 自动排胶中},{"系统故障01", 系统故障01},{"散热器温度过高", 散热器温度过高},{"散热器温度传感器故障", 散热器温度传感器故障},{"系统故障02", 系统故障02},{"系统故障03", 系统故障03},{"阀体存储故障", 阀体存储故障},{"主板存储故障", 主板存储故障},{"胶筒温度传感器故障", 胶筒温度传感器故障},{"胶筒电加热故障", 胶筒电加热故障},{"喷嘴温度传感器故障", 喷嘴温度传感器故障},{"喷嘴电加热故障", 喷嘴电加热故障}};//childFrmRun.UpdateStatusDictionary(statusDictionary);// 使用 BeginInvoke 在主线程中更新UIBeginInvoke(new Action(() =>{// 读取数组中的数据foreach (var pair in statusDictionary){// 将名称和对应的布尔值输出到 textBox3this.textBox3.AppendText($"{pair.Key}: {pair.Value}" + Environment.NewLine);}StatusDict.OpenPort = true;}));}catch (Exception ex){MessageBox.Show("读取失败:" + ex.Message);return;}}private async void timer1_Tick(object sender, EventArgs e){try{await Task.Run(() =>{ModBus7000NMsg();if(ChildFrmRun.StatusDictionary == null){childFrmRun.UpdateStatusDictionary(statusDictionary);}if (ChildFrmRun.StatusDictionary.SequenceEqual(statusDictionary)){return;}else{ModBus7000NMsg();childFrmRun.UpdateStatusDictionary(statusDictionary);}});}catch (Exception ex){MessageBox.Show("错误信息:"+ex.Message);return;}}

子窗体通过timer事件重复读取从站中传递过来的值

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

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

相关文章

翻译: Gen AI生成式人工智能学习资源路线图一

Introduction 介绍 本文档旨在作为学习现代人工智能系统背后的关键概念的手册。考虑到人工智能最近的发展速度&#xff0c;确实没有一个好的教科书式的资源来快速了解 LLMs 或其他生成模型的最新和最伟大的创新&#xff0c;但互联网上有大量关于这些主题的优秀解释资源&#x…

WireGuard网络架构及配置详解

WireGuard网络架构及配置详解 一.点对点二.中心网关,实现nat穿透弊端:流量全部经过中心网关,带宽上限受限于中心网关 三.借助registry实现双向nat穿透需要借助registry实现 udp打洞, 待二开 一.点对点 yum install epel-release elrepo-release -y yum install yum-plugin-elr…

QT——事件

一、什么是事件 在QT中,事件(Event)是指由特定对象发生的动作或状态变化,通常用于响应用户的操作。事件可以是鼠标点击、键盘输入、窗口移动等用户操作,也可以是系统发出的信号,比如定时器超时、网络数据到达等。在QT中,可以通过连接信号与槽(Signals and Slots)的方…

蒂姆·库克解释Apple Intelligence和与ChatGPT合作的区别|TodayAI

在2024年全球开发者大会&#xff08;WWDC 2024&#xff09;上&#xff0c;苹果公司首席执行官蒂姆库克&#xff08;Tim Cook&#xff09;隆重介绍了公司的最新人工智能&#xff08;AI&#xff09;计划——Apple Intelligence&#xff0c;并宣布了与OpenAI的ChatGPT的合作。虽然…

知识图谱存在的挑战---数据相关和算法相关

文章目录 数据相关算法相关 数据相关 数据是知识图谱的基石,知识图谱的数据来源主要有两种&#xff1a;自有数据&#xff08;自身采集 或拥有等&#xff09;和外源数据。自有数据由建设者因特定的业务需求而采集获取或经过特定加工处理形成且被自己所拥有的数据&#xff1b;外源…

kotlin 协程之初识挂起函数

什么是挂起函数 官方文档 在 Kotlin 协程:从基础概念到开发实践 文章中,提到 kotlin协程 是一个可挂起计算的实例,可以在一个线程中挂起并在另一个线程中恢复继续执行,这期间不会阻塞线程。 这种挂起和恢复的能力就是通过挂起函数来实现的。 在使用示例中,我们用到了 w…

定时器0电机控制PWM输出

/*立式不锈钢波纹管机控制板2021 2 26 pcb PAST******/ #include <REG52.H> #include <intrins.H> #define uint unsigned int #define uchar unsigned char #define …

vue使用

if (this.$isPGY) {typeof window.tabCreateFn "function" && window.tabCreateFn("对账单 - 新增", "/vues/account/add", "")} else {this.$router.push({ name: "AccountAdd" })}

JVM性能优化案例:优化垃圾回收器的年轻代和老年代占比

JVM性能优化案例&#xff1a;优化垃圾回收器的年轻代和老年代占比 我们有一款在线交易系统&#xff0c;要求低延迟和高吞吐量。系统运行在Ubuntu服务器上&#xff0c;使用OpenJDK 11&#xff0c;并启用了G1垃圾回收器。以下是系统的基本配置和GC日志信息&#xff1a; 操作系统…

vscode react我常用的开发插件汇总

console-log – 此插件用于快捷键生成console,当然你也可以在其他模板中自定义快捷生成内容CodeGeeX – 一个内嵌在vscode插件列中的AI工具,让我们可以直接获取AI信息而不必麻烦的到其他AI软件或平台搜索Git History – 此插件用于在vscode中提供一个查询当前选中tab页签的组件…

CID引流电商下的3C产品选品策略深度解析

​摘要&#xff1a;随着电商行业的迅猛发展和消费者需求的日益多样化&#xff0c;CID引流电商作为一种新兴的电商模式&#xff0c;逐渐受到了广泛关注。在这一模式下&#xff0c;3C产品作为高客单价、高技术含量的代表品类&#xff0c;其选品策略的制定显得尤为重要。本文将从多…

新建pdb 打不开 ORA-65104 ORA-25153

select * from pdb_plug_in_violations&#xff1b; 有个waring service_name 冲突&#xff0c;应该是不影响的 -------------------------------------service 冲突解决------------------- Select message, action from DB_PLUG_IN_VIOLATIONS and get the result: MESSAG…

angular编程规范

目录 文章目录 **一、单一职责****1. 单一法则**2. 简单函数 **二、命名****1. 总体命名指导原则****2. 使用点和横杠来分隔文件名****3. 符号名与文件名****4. 服务名****5. 指令选择器****6. 为组件添加自定义前缀****7. 为指令添加自定义前缀****8. 管道名****9. 单元测试文…

北京Web前端大会:探索未来技术的无限可能

北京Web前端大会&#xff1a;探索未来技术的无限可能 在科技日新月异的今天&#xff0c;Web前端技术作为互联网发展的核心驱动力之一&#xff0c;正以前所未有的速度不断演进。北京Web前端大会作为行业内的一次盛会&#xff0c;汇聚了众多前端领域的专家和精英&#xff0c;共同…

KEYSIGHT N1000A与KEYSIGHT 86100D 区别?

N1000A与86100D设计理念和应用领域 N1000A&#xff1a;N1000A是一款宽带宽示波器主机&#xff0c;主要用于高速数字设计的精确测量&#xff0c;从50 Mb/s到超过80 Gb/s。它适用于光收发机设计和生产测试、ASIC/FPGA/IC设计和表征、串行总线设计、电缆和印刷电路板&#xff08;P…

如何使您的IT资产审计变得轻而易举?

无论您在审核准备方面处于哪个阶段&#xff0c;强大的资产管理策略都至关重要。现在&#xff0c;不可否认的是最初的障碍——精确追踪每一台设备、软件许可证和外围设备可能会让人感到不知所措。 然而&#xff0c;好消息是有简化流程可以帮助您将资产管理从一项令人望而却步的…

Elasticsearch 第二期:倒排索引,分析,映射

前言 正像前面所说&#xff0c;ES真正强大之处在于可以从无规律的数据中找出有意义的信息——从“大数据”到“大信息”。这也是Elasticsearch一开始就将自己定位为搜索引擎&#xff0c;而不是数据存储的一个原因。因此用这一篇文字记录ES搜索的过程。 关于ES搜索计划分两篇或…

0613# 3 八股

拷贝初始化和直接初始化 string str1("I am a string");//语句1 直接初始化 string str2(str1);//语句2 直接初始化,str1是已经存在的对象,直接调用拷贝构造函数对str2进行初始化 string str3 = "I am a string";//语句3 拷贝初始化,先为字符串”I am …

Python私教张大鹏 Vue3整合AntDesignVue之Checkbox 多选框

何时使用 在一组可选项中进行多项选择时&#xff1b; 单独使用可以表示两种状态之间的切换&#xff0c;和 switch 类似。区别在于切换 switch 会直接触发状态改变&#xff0c;而 checkbox 一般用于状态标记&#xff0c;需要和提交操作配合。 案例&#xff1a;多选框组件 核心…

微信小程序游戏与APP游戏:比较与对比

随着移动互联网的迅猛发展&#xff0c;游戏作为一个重要的应用领域&#xff0c;不仅在娱乐消遣中扮演着重要角色&#xff0c;也在商业上展现出巨大的潜力。在游戏开发和发布的选择上&#xff0c;开发者需要考虑多种因素&#xff0c;其中微信小程序游戏和独立APP游戏是两种常见的…