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,一经查实,立即删除!

相关文章

ConcurrentHashMap第1讲——哪些地方做了并发控制

我们知道在多线程环境下,HashMap在初始化桶数组、put桶、插入链表以及树化等阶段都有线程安全问题,在jdk1.5之前我们通常用HashTable或Collections.synchronizedMap包装过的HashMap来保证线程安全,不过它们在执行任何操作时都需要锁住整个has…

UNIX中sigaction和sigevent有啥区别

sigaction和sigevent在UNIX和类UNIX系统(如Linux)的信号处理机制中扮演着不同的角色。 sigaction 功能: sigaction是一个用于查询或设置信号处理方式的函数。它允许进程为特定的信号指定一个信号处理函数,以及设置信号处理时的其…

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

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

kubernetes--Istio(四)

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

【React】创建React项目:使用 create-react-app 创建 React 应用

在本文中,我们将介绍如何使用 create-react-app 创建一个名为 react-basic 的 React 应用。以下步骤将帮助你快速搭建一个新的 React 项目。 1. 确保已安装 Node.js 和 npm 在开始之前,确保你的系统上已经安装了 Node.js 和 npm(Node 包管理…

Burp安全扫描Web应用

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

在 Electron 中,主进程和渲染进程之间有多种通信方式

在 Electron 中,主进程和渲染进程之间有多种通信方式。以下列出了其中几种: 1. ipcMain 和 ipcRenderer:使用主进程和渲染进程之间的 Electron 网络协议 (ipc) 模块来发送事件和消息。这是一种双向通信的方式,可以实现消息的传递…

opencv—常用函数学习_“干货“_11

目录 二九、图像累加 将输入图像累加到累加图像中 (accumulate) 将输入图像加权累加到累加图像中 (accumulateWeighted) 将输入图像的平方累加到累加图像中 (accumulateSquare) 将两个输入图像的乘积累加到累加图像中 (accumulateProduct) 解释 三十、随机数与添加噪声 …

【Access、Trunk和Hybrid】

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

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

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

leetcode-49. 字母异位词分组

题目描述 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate", "n…

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

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

【python】网络通信socket

一、什么是socket socket网络通信是一种基于TCP/IP协议的通信方式,通过套接字(Socket)实现不同主机间的通信。它基于客户端-服务器架构,客户端和服务器通过Socket进行连接、通信和数据交换。在网络中,进程之间如何通信…

防火墙之双机热备篇

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

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…