返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >基于C#实现一个温湿度监测小工具
  • 674
分享到

基于C#实现一个温湿度监测小工具

C#温湿度监测工具C#监测工具C#监测 2023-01-12 09:01:23 674人浏览 八月长安
摘要

目录概述安装插件包修改界面,增加曲线显示修改代码增加曲线初始化增加曲线刷新修改load函数,增加曲线初始化修改定时器函数,增加曲线实时刷新测试概述 这一章节,我们主要实现的功能是为软

概述

这一章节,我们主要实现的功能是为软件增加实时显示曲线。

winform在4.x版本的时候,还有charts组建,到了5.0时代,没有了原生的charts组件

我这边选择第三方曲线包。ScottPlot

安装插件包

比较简单,已经提了很多次了。工具,nuget包管理。搜索scottplot,之后点击安装

注意安装的是scottplot.winform

修改界面,增加曲线显示

在表格下方,增加一个曲线。在工具栏中搜索plot

如果没有搜索到,可以重新启动一下vs修改完毕的界面如图

修改代码

增加曲线初始化

具体的曲线配置我们可以参考scottplot的demo,这里我直接给出code

本次窗口比较小,因此我禁止了x轴的显示

        /// <summary>
        /// 初始化曲线
        /// </summary>
        private void InitPlot()
        {
            //line
            fORMsPlot1.Plot.Style(Style.Seaborn);
            formsPlot1.Plot.Title("数据曲线");
            //不显示x轴
            formsPlot1.Plot.XAxis.Ticks(false);
            formsPlot1.Plot.XAxis.Line(false);
            formsPlot1.Plot.YAxis2.Line(false);
            formsPlot1.Plot.XAxis2.Line(false);
        }

增加曲线刷新

scottplot的刷新目前没有找到合适的办法

使用了比较笨的办法,就是先clear然后重新赋值

有什么好的办法,欢迎交流

        /// <summary>
        /// 刷新曲线
        /// </summary>
        private void RefreshLine(DataTable ThisData)
        {
            try
            {
                if (ThisData.Rows.Count < 1)
                    return;
                //清空
                formsPlot1.Plot.Clear();
                //温度
                string[] data = ThisData.AsEnumerable().Select(d => d.Field<string>("温度")).ToArray();
                double[] ys = Array.ConvertAll<string, double>(data, s => double.Parse(s));
                //湿度
                string[] data2 = ThisData.AsEnumerable().Select(d => d.Field<string>("湿度")).ToArray();
                double[] ys2 = Array.ConvertAll<string, double>(data2, s => double.Parse(s));
                formsPlot1.Plot.AddSignal(ys);
                formsPlot1.Plot.AddSignal(ys2);
                formsPlot1.Refresh();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + ex.StackTrace);
                MyLogger._.Error(ex.Message + "\r\n" + ex.StackTrace);
            }
        }

修改load函数,增加曲线初始化

        /// <summary>
        /// 界面加载函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            MyLogger._.Debug("程序启动");
            //扫描串口
            string[] comlist = ComPort.V_ScanPort();
            if (comlist.Length < 1)
            {
                MessageBox.Show("没有扫描到串口,请检查硬件连接");
                return;
            }
            else 
            {
                foreach (string name in comlist)
                {
                    this.comboBox1.Items.Add(name);
                }
                //默认
                this.comboBox1.Text = comlist[0];
            }
            //波特率初始化
            this.comboBox2.Items.Add("4800");
            this.comboBox2.Items.Add("9600");
            this.comboBox2.Items.Add("115200");
            //默认
            this.comboBox2.Text = "9600";
            //默认地址
            this.textBox1.Text = "01";
            //默认背景色
            this.button1.BackColor = Color.LightGreen;
            //初始化数据
            InitDataTable();
            InitDataGrid();
            InitPlot();
        }

修改定时器函数,增加曲线实时刷新

 /// <summary>
        /// 定时器回调
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (Runport.IsOpen)
            {
                //获取地址
                byte addr = byte.Parse(this.textBox1.Text);
                string ret = THSensor.ReadTHDataFromSensor(Runport, addr);
                if (!string.IsNullOrEmpty(ret))
                {
                    string temp = ret.Split('&')[0];
                    string humi = ret.Split('&')[1];
                    //入库操作
                    DB_Serapi.SaveTHData(temp, humi);
                    //刷新列表
                    string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    if (DataBuffer != null)
                    {
                        Index++;
                        DataRow row = DataBuffer.NewRow();
                        row["ID"] = Index.ToString();
                        row["时间"] = time;
                        row["温度"] = temp;
                        row["湿度"] = humi;
                        DataBuffer.Rows.Add(row);
                    }
                    //刷新曲线
                    RefreshLine(DataBuffer);
                }
                else
                {
                    MessageBox.Show("无数据,请检查配置参数");
                }
            }
        }

测试

到目前为止,我们做的功能都是基于一个固定不变的小窗口驱完成。

后续,我们为了给工具增加历史数据查询,报警设置等基本的功能。需要对界面进行重新的布局和设计。

下一节,我们将主要修改布局,是窗体可以自适应分辨率。

到此这篇关于基于C#实现一个温湿度监测小工具的文章就介绍到这了,更多相关C#温湿度监测工具内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 基于C#实现一个温湿度监测小工具

本文链接: https://lsjlt.com/news/177457.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 基于C#实现一个温湿度监测小工具
    目录概述安装插件包修改界面,增加曲线显示修改代码增加曲线初始化增加曲线刷新修改load函数,增加曲线初始化修改定时器函数,增加曲线实时刷新测试概述 这一章节,我们主要实现的功能是为软...
    99+
    2023-01-12
    C#温湿度监测工具 C#监测工具 C#监测
  • 基于LoRa无线技术温湿度监测的解决方案是怎样的
    这期内容当中小编将会给大家带来有关基于LoRa无线技术温湿度监测的解决方案是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。       为了维护仓储物品的质量...
    99+
    2023-06-03
  • 基于C#实现一个简单的FTP操作工具
    目录实现功能开发环境实现代码实现效果实现功能 实现使用FTP上传、下载、重命名、刷新、删除功能 开发环境 开发工具: Visual Studio 2013 .NET Framewor...
    99+
    2024-04-02
  • 基于PyQT5制作一个敏感词检测工具
    设计思路:根据敏感词库文件筛选,查看输入的文本中是否包含敏感词汇。从而过滤出相关的敏感词。 导入应用相关的模块。 import os import logging import s...
    99+
    2024-04-02
  • 基于Python制作一个文件去重小工具
    目录前言实现步骤补充前言 常常在下载网络素材时有很多的重复文件乱七八糟的,于是想实现一个去重的操作。 主要实现思路就是遍历出某个文件夹包括其子文件夹下面的所有文件,最后,将所有文件...
    99+
    2024-04-02
  • 基于C#设计一个双色球选号工具
    目录窗体展示开始后展示结束摇色展示代码导入的命名空间初始化私有变量页面初始化开始按钮数字更新结束按钮结果显示窗体展示 开始后展示 结束摇色展示 代码 导入的命名空间 using...
    99+
    2024-04-02
  • 基于Python实现自动关机小工具
    上班族经常会遇到这样情况,着急下班结果将关机误点成重启,或者临近下班又通知开会,开完会已经迟了还要去给电脑关机。 今天使用PyQt5做了个自动关机的小工具,设置好关机时间然后直接提交...
    99+
    2024-04-02
  • 基于Python实现视频去重小工具
    同级目录下新建dup_video import json import os import shutil import cv2 import imagehash from PIL ...
    99+
    2023-03-24
    Python实现视频去重工具 Python视频去重 Python视频
  • 手把手教你如何基于C#制作一个网址检测工具
    目录前言实现流程1、创建项目2、页面设计3、功能实现 总结前言 此文主要基于C#制作一个网址检测工具。随着时间推移以及公司人员的变动,手头所负责的项目也越来越多,对网站运行...
    99+
    2023-02-16
    c# 网址检测工具 c# 网址检测
  • 基于Python自制一个文件解压缩小工具
    经常在办公的过程中会遇到各种各样的压缩文件处理,但是呢每个压缩软件支持的格式又是不同的。 没有可以一种可以同时多种格式的并且免费的文件解压缩工具,于是我使用python的PyQt5开...
    99+
    2023-02-06
    Python文件解压缩工具 Python文件解压缩
  • Golang 基于flag库实现一个简单命令行工具
    目录前言flag 库FlagSet需求拆解实现 weather flag天气数据打印获取源数据数据转换运行效果小结前言 Golang 标准库中的 flag 库提供了解析命令行选项的能...
    99+
    2024-04-02
  • JavaScript实现一个Promise队列小工具
    目录摘要思考实现总结摘要 在百度的解释中,队列是一种特殊的线性表,特殊之处在于它只允许在表的前端进行删除操作,而在表的后端进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插...
    99+
    2024-04-02
  • 用Python实现一个打字速度测试工具来测试你的手速
    目录一、程序解读二、文本内容的显示三、文本的输入检查四、结果计算和显示五、完整代码一、程序解读 本次程序中,我们使用的python库完全是python的内置库,其中界面的制作是利用t...
    99+
    2024-04-02
  • 基于C#怎么设计一个双色球选号工具
    这篇文章主要介绍了基于C#怎么设计一个双色球选号工具的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于C#怎么设计一个双色球选号工具文章都会有所收获,下面我们一起来看看吧。窗体展示开始后展示结束摇色展示代码导入...
    99+
    2023-06-29
  • 基于Python如何实现视频去重小工具
    这篇文章主要介绍“基于Python如何实现视频去重小工具”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于Python如何实现视频去重小工具”文章能帮助大家解决问题。同级目录下新建dup_video...
    99+
    2023-07-05
  • 基于QT制作一个简易的传输文件小工具
    最近因为一个事情很恼火,因为办公需要用到企业微信,但是企业微信只能在一个电脑上登陆,所以当别人发文件给你的时候,你只能一个电脑接收,创建共享文件夹也很麻烦,每次都需要去访问,很麻烦。...
    99+
    2024-04-02
  • 基于PyQt5实现一个串口接数据波形显示工具
    目录工具简述主程序代码Qt Designer设计UI界面程序运行效果工具简述 基于PyQt5开发UI界面使用QtDesigner设计,需要使用到serial模块(串口库)和pyqtg...
    99+
    2023-01-14
    PyQt5数据波形显示工具 PyQt5数据波形显示 PyQt5数据波形
  • C#基于UDP实现的P2P语音聊天工具
    今天就跟大家聊聊有关C#基于UDP实现的P2P语音聊天工具,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。主要是一个应用,使用udp传送语音和文本等信息。在这个系统中没有服务端和客户端...
    99+
    2023-06-17
  • 一个基于C#开发的Excel转Json工具使用教程
    目录前言项目简介技术架构项目结构主要功能使用方式1、命令模式2、界面模式总结前言 Json在程序开发中是非常常用的数据格式,对于程序员来说,阅读和编辑Json都没有什么问题,但其他人...
    99+
    2022-11-13
    c# excel转json c#转json c# json
  • 基于JS实现一个小型编译器
    目录前言ParseTransformTraversal(遍历)Visitors(访问)Code generate代码实现词法分析器(tokenizer)语法分析器(parser)遍历...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作