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://xiahunao.cn/news/3247413.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫(二)——爬虫的伪装

前言 本文是爬虫系列的第二篇文章,主要讲解关于爬虫的简单伪装,以及如何爬取B站的视频。建议先看完上一篇文章,再来看这一篇文章。要注意的是,本文介绍的方法只能爬取免费视频,会员视频是无法爬取的哦。 爬虫的伪装 …

【Arduino IDE】安装及开发环境、ESP32库

一、Arduino IDE下载 二、Arduino IDE安装 三、ESP32库 四、Arduino-ESP32库配置 五、新建ESP32-S3N15R8工程文件 乐鑫官网 Arduino官方下载地址 Arduino官方社区 Arduino中文社区 一、Arduino IDE下载 ESP-IDF、MicroPython和Arduino是三种不同的开发框架,各自适…

基于Web的特产美食销售系统的设计与实现

💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

SpringBoot框架学习笔记(二):容器功能相关注解详解

1 Spring 注入组件的注解 Component、Controller、 Service、Repository这些在 Spring 中的传统注解仍然有效,通过这些注解可以给容器注入组件 2 Configuration 2.1 应用实例 需求说明: 演示在 SpringBoot, 如何通过Configuration 创建配置类来注入组件 回顾…

客户端与服务器通讯详解(3):如何选择合适的通讯方式

上篇文章中,我们讲解了客户端与服务器通讯详解(2):12种常见通讯方式,重点讲解了http、websocket和RESTful API三种,本文我们继续讲解如何依据场景选择最合适的通讯方式。欢迎友友们点赞评论。 一、客户端服…

微软研究人员为电子表格应用开发了专用人工智能LLM

微软的 Copilot 生成式人工智能助手现已成为该公司许多软件应用程序的一部分。其中包括 Excel 电子表格应用程序,用户可以在其中输入文本提示来帮助处理某些选项。微软的一组研究人员一直在研究一种新的人工智能大型语言模型,这种模型是专门为 Excel、Go…

PDF文件无法编辑?3步快速移除PDF编辑限制

正常来说,我们通过编辑器打开pdf文件后,就可以进行编辑了。如果遇到了打开pdf却不能编辑的情况,那有可能是因为密码或是扫描件的原因。小编整理了一些pdf文件无法编辑,以及pdf文件无法编辑时我们要如何处理的方法。下面就随小编一起来…

JDK新特性(Lambda表达式,Stream流)

Lambda表达式: Lambda 表达式背后的思想是函数式编程(Functional Programming)思想。在传统的面向对象编程中,程序主要由对象和对象之间的交互(方法调用)构成;而在函数式编程中,重点…

Vscode中Github copilot插件无法使用(出现感叹号)解决方案

1、击扩展或ctrl shift x ​​​​​​​ 2、搜索查询或翻找到Github compilot 3、点击插件并再左侧点击登录github 点击Sign up for a ... 4、跳转至github登录页,输入令牌完成登陆后返回VScode 5、插件可以正常使用

Android Framework学习笔记(4)----Zygote进程

Zygote的启动流程 Init进程启动后,会加载并执行init.rc文件。该.rc文件中,就包含启动Zygote进程的Action。详见“RC文件解析”章节。 根据Zygote对应的RC文件,可知Zygote进程是由/system/bin/app_process程序来创建的。 app_process大致处…

好用的AI搜索引擎

1. 360AI 搜索 访问 360AI 搜索: https://www.huntagi.com/sites/1706642948656.html 360AI 搜索介绍: 360AI 搜索,新一代智能答案引擎,值得信赖的智能搜索伙伴,为复杂搜索提供专业支持,解锁更相关、更全面的答案。AI…

pyspark使用 graphframes创建图的方法

1、安装graphframes的步骤 1.1 查看 spark 和 scala版本 在终端输入: spark-shell --version 查看spark 和scala版本 1.2 在maven库中下载对应版本的graphframes https://mvnrepository.com/artifact/graphframes/graphframes 我这里需要的是spark 2.4 scala 2.…

古建筑白蚁监测预警系统解决方案

一、概述 白蚁是世界五大害虫之一,俗称“无牙老虎”,能够破坏房屋建筑、园林绿地、农作物等,特别是木结构和砖木结构的古建筑。白蚁的啃食行为会对古建筑造成严重的损坏,严重时甚至会导致建筑倒塌,严重威胁古建筑的安全…

人工智能导论-专家系统

专家系统 概述 本章主要介绍专家系统的概念、原理,创建过程,并补充知识发现与数据挖掘内容 **重点:**专家系统的工作原理和体系结构,知识获取的过程和模式 **难点:**如何设计和创建专家系统 AI第2次高峰(60年代) - 费根鲍姆 …

TCP与UDP网络编程

网络通信协议 java.net 包中提供了两种常见的网络协议的支持: UDP:用户数据报协议(User Datagram Protocol)TCP:传输控制协议(Transmission Control Protocol) TCP协议与UDP协议 TCP协议 TCP协议进行通信的两个应用进程:客户端、服务端 …

昇思25天学习打卡营第16天 | Vision Transformer图像分类

昇思25天学习打卡营第16天 | Vision Transformer图像分类 文章目录 昇思25天学习打卡营第16天 | Vision Transformer图像分类Vision Transform(ViT)模型TransformerAttention模块Encoder模块 ViT模型输入 模型构建Multi-Head Attention模块Encoder模块Pa…

BiLSTM 实现股票多变量时间序列预测(PyTorch版)

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对…

三、GPIO口

我们在刚接触C语言时,写的第一个程序必定是hello world,其他的编程语言也是这样类似的代码是告诉我们进入了编程的世界,在单片机中也不例外,不过我们的传统就是点亮第一个LED灯,点亮电阻,电容的兄弟&#x…

【Java项目笔记】01项目介绍

一、技术框架 1.后端服务 Spring Boot为主体框架 Spring MVC为Web框架 MyBatis、MyBatis Plus为持久层框架,负责数据库的读写 阿里云短信服务 2.存储服务 MySql redis缓存数据 MinIO为对象存储,存储非结构化数据(图片、视频、音频&a…

防溺水预警系统引领水域安全新篇章

一、系统概述 随着人们对水域活动的需求增加,溺水事故频发,给人们的生命安全带来了严重威胁。然而,如今,一项创新科技正在以强大的功能和无限的潜力引领着水域安全的新篇章。智能防溺水预警系统,作为一种集成了智能感知…