C# 智慧大棚nmodbus4

窗体 :图表(chart):

下载第三方:

nmodbus4:可以实现串口直连,需要创建串口对象设置串口参数配置Serialport

如果需要把串口数据表通过tcp进行网口传递 需要创建tcpclient对象

ModbusSerialMaster master;
// 温度的数据源
// Collection 集合
DataPointCollection wenDuValues;
// 温度数据源
DataPointCollection shiDuValues;
// 氧气数据源
DataPointCollection yangQiValues;
public Form1()
{InitializeComponent();// 创建TCPClient对象TcpClient tcp = new TcpClient();tcp.Connect("192.168.107.5",8014); // 连接服务器// CreateRtu 创建rtu通信对象,// 方法有三个重载函数// 1 CreateRtu(tcpclient) 用的网口通信 HY-E504串口服务器// 2 CreateRtu(serialport) 用的串口直连 485转换器// 以后使用master进行读取指定地址数据即可master = ModbusSerialMaster.CreateRtu(tcp); //// 初始化数据源wenDuValues = chart1.Series[0].Points;shiDuValues = chart1.Series[1].Points; // 把图表湿度point默认值赋值给变量yangQiValues = chart1.Series[2].Points;}double 温度;
double 湿度;
double 氧气;
private void timer1_Tick(object sender, EventArgs e)
{// 获取温度 湿度 氧气数据string time = DateTime.Now.ToString("HH:mm:ss");// 判断复选框是否选中if (checkBox1.Checked) // 选中温度{// 取出温度数据// ReadHoldingRegisters 读取寄存器的数据// 参数1 设备地址 一般都是1// 参数2 寄存器地址 温度寄存器地址0003// 参数3  读取寄存器个数,读取一个温度数据个数就为1ushort[] values = master.ReadHoldingRegisters(1, 0x03, 1);// values 就是数据float value = values[0] / 10F;// values[0]就是温度数据// 图标添加xy轴;x轴是时间 y轴是温度值wenDuValues.AddXY(time, value);温度 = value; // 记录最后一个值}else // 未选中温度的时候{int index = wenDuValues.AddXY(time, 温度); // 返回值是集合末尾的索引值// 把当前点设置为透明DataPoint dp = wenDuValues[index];dp.Color = Color.Transparent; // 设置透明颜色//wenDuValues[温度];}// 处理湿度的if (checkBox2.Checked) // 选中湿度{// 读取湿度数据ushort[] data = master.ReadHoldingRegisters(1, 0x02, 1);float s = data[0] * 0.1F;shiDuValues.AddXY(time, s);// 添加xy轴湿度 = s;}else{// 未选择湿度int index = shiDuValues.AddXY(time, 湿度);DataPoint p = shiDuValues[index];p.Color = Color.Transparent;}// 处理湿氧气if (checkBox2.Checked) // 选中湿度{// 读取湿度数据ushort[] data = master.ReadHoldingRegisters(1, 0x0B, 1);float s = data[0] * 0.1F;yangQiValues.AddXY(time, s);// 添加xy轴氧气 = s;}else{// 未选择湿度int index = yangQiValues.AddXY(time, 氧气);DataPoint p = yangQiValues[index];p.Color = Color.Transparent;}}// 开始定时器 停止定时器
private void button2_Click(object sender, EventArgs e)
{if (timer1.Enabled) // 如果等于true 定时器可用{timer1.Stop(); // 关闭定时器}else // 默认情况定时器不可用{timer1.Start();// 开启定时器}
}// 设置事件间隔
private void button1_Click(object sender, EventArgs e)
{timer1.Interval = int.Parse(textBox1.Text);
}
}
}

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

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

相关文章

MyPostMan 迭代文档管理、自动化接口闭环测试工具(自动化测试篇)

MyPostMan 是一款类似 PostMan 的接口请求软件,按照 项目(微服务)、目录来管理我们的接口,基于迭代来管理我们的接口文档,文档可以导出和通过 url 实时分享,按照迭代编写自动化测试用例,在不同环…

kubernetes--Istio(四)

一、可观测性 Istio 为网格内所有的服务通信生成详细的遥测数据。这种遥测技术提供了服务行为的可观测性, 使运维人员能够排查故障、维护和优化应用程序,而不会给服务的开发人员带来任何额外的负担。 通过 Istio,运维人员可以全面了解到受监…

Burp安全扫描Web应用

一、浏览器设置代理 如下图所示,点击火狐浏览器的“扩展和主题”,搜索“代理”。 如下图所示,选择搜索到的第一个代理(选择任何一个都可以)。 如上图所示,第一个点击后,进入如下页面&#xff0…

【Access、Trunk和Hybrid】

概述 Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口;Trunk类型的端口可以允许多个VLAN通过,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口;Hybrid类型的端口可以允许多个VLAN通过&#xf…

自己编写一个谷歌浏览器插件, 模拟某音直播间自动发消息

闲来没事, 做个插件玩一玩,于是一顿学习。 按照浏览器插件规范,一顿代码编写, 搞了一个简单的插件。仅做学习。 可以实现在直播间自动发消息。 定时轮发。 实现原理: 利用谷歌popub.js 发送消息。 在content-script.…

g2plot如何实现面积图和折线图的动态切换?

一开始的时候显示的是面积图: 当我点击折线图的时候,要变成折线图: 当我再点击面积图的时候,还要变回面积图: 要实现这个功能,得知道g2plot几个重要的API。 参考文档如下:https://g2plot…

防火墙之双机热备篇

为什么要在防火墙上配置双机热备技术呢? 相信大家都知道,为了提高可靠性,避免单点故障 肯定有聪明的小伙伴会想到那为什么不直接多配置两台防火墙,然后再将他们进行线路冗余,不就完成备份了吗? 答案是不…

JDK、JRE、JVM的区别java的基本数据类型

说一说JDK、JRE、JVM的区别在哪? JDK: Java Delopment kit是java工具包,包含了编译器javac,调试器(jdb)以及其他用于开发和调试java程序的工具。JDK是开发人员在开发java应用程序时候所需要的的基本工具。…

海外社媒矩阵为何会被关联?如何IP隔离?

在当今的数字时代,社交媒体已经成为人们日常生活中不可或缺的一部分。通过社交媒体,人们可以与朋友互动,分享生活,甚至进行业务推广和营销。然而,社交媒体账号关联问题逐渐受到广泛关注。社交媒体账号为何会关联&#…

问题清除指南|成功解决pipmatplotlib因为ConnectTimeoutError更新失败问题

前言:跑baseline需要升级matplotlib和pip,在此记录一个错误和一个「别致」的解决方案。 北京时间 14:00 左右,在终端环境中运行命令python -m pip install --upgrade pip,报错: 多次尝试,未果。 隔天上午 0…

Elasticsearch 企业级实战 01:Painless 脚本如何调试?

在企业级应用中,Elasticsearch 常常被用来处理复杂的数据查询和操作。 Painless 是 Elasticsearch 的内置脚本语言,虽然强大,但调试起来并不容易。 本文将详细介绍如何在实战中有效调试 Painless 脚本,以提高开发和运维效率。 本文…

2.javaWeb_请求和响应的处理(Request,Response)

2.请求和响应的处理 文章目录 2.请求和响应的处理一、动态资源和静态资源javax.servlet(包) 二、Servlet体系1.简介2.HttpServlet3.Servlet生命周期 三、Request对象1.ServletRequest1)ServletRequest主要功能有:2)ServletRequest类的常用方法: 2.HttpServletReques…

通过SchedulingConfigurer 接口完成动态定时任务

通过SchedulingConfigurer 接口完成动态定时任务 一.背景 在Spring中,除了使用Scheduled注解外,还可以通过实现SchedulingConfigurer接口来创建定时任务。它们之间的主要区别在于灵活性和动态性。Scheduled注解适用于固定周期的任务,一旦任…

生成式 AI 的未来,对话系统 (Chat)与自主代理 (Agent)相辅相成

目录 1. 概念解释生成式 AI对话系统 (Chat)自主代理 (Agent) 2. 代码示例对话系统示例 (使用 Python 和 NLTK 库)自主代理示例 (使用 Python 模拟简单的自主学习) 3. 逻辑性分析4. 通俗易懂的解释5. 与其他相似概念的对比6. 常见问题和解答7. 技术挑战与解决方案对话系统的技术…

内容安全(深度行为检测技术、IPS、AV、入侵检测方法)

1、深度行为检测技术 深度行为检测技术:是一种基于深度学习和机器学习的技术,它通过分析用户在网络中的行为模式,识别异常或潜在威胁行为,从而保护网络安全和内容安全 分类: 深度包检测技术(Deep Packet…

Kafka Producer发送消息流程之消息异步发送和同步发送

文章目录 1. 异步发送2. 同步发送 1. 异步发送 Kafka默认就是异步发送,在Main线程中的多条消息,没有严格的先后顺序,Sender发送后就继续下一条,异步接受结果。 public class KafkaProducerCallbackTest {public static void mai…

Unity Apple Vision Pro 开发(四):体积相机 Volume Camera

文章目录 📕教程说明📕教程内容概括📕体积相机作用📕创建体积相机📕添加体积相机配置文件📕体积相机配置文件参数📕体积相机的边界盒大小📕体积相机边界盒大小和应用边界盒大小的区别…

【GraphRAG】微软 graphrag 效果实测

GraphRAG 本文将基于以下来源,对Microsoft GraphRAG分析优缺点、以及示例实测分析。 1. Source 代码仓库: Welcome to GraphRAGhttps://microsoft.github.io/graphrag/ 微软文章1(2024.2.13):GraphRAG: Unlocking…

Hadoop3:MR程序的数据倾斜问题处理

一、数据倾斜 什么是数据倾斜? 学过Redis集群的都知道数据倾斜这个问题。 就是大量数据,分配不均匀的现象。 二、MR数据倾斜 1、怎么判断出现数据倾斜? 数据频率倾斜——某一个区域的数据量要远远大于其他区域。 数据大小倾斜——部分记…