c# 从0实现一个温湿度监测的小工具 (3)

1,648 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第5天,点击查看活动详情

之前的文章,我们已经实现的有: 1:硬件的连接和测试 2:工具类和温湿度变送器操作类 接下来,我们将如何制作一个简单的界面

打开我们之前创建的thsensor工程,双击form1.cs,进入编辑界面,如图:

image.png 点击窗口,在右侧的属性栏中,修改Text为温湿度变送器读写。 将窗口的属性size和maxsize,minsize都改为800*480分辨率

image.png 在右侧工具栏中,选中groupbox,拖入界面

image.png 拖动groupbox,调整为合适大小,并在属性中,修改选项backgroundcolor为蓝色,修改text为:温湿度变送器

image.png 工具栏拖入textbox,和一个lable,修改属性为 lablehumi,和textboxhumi ,并text修改为湿度值:(同理,做一个温度的lable和textbox)如图:

image.png

拖入一个按钮,名字为:buttonget,text为获取温湿度,如图:

image.png

到此,画面制作完毕。接下来是实现功能,点击按钮获取温湿度数据

我们在界面上,双击按钮,会自动调转到代码区,并由vs自动实现一个click的回调函数。如图:

image.png 在这里,我们将会实现一个获取温湿度的逻辑

我们回到界面设计器,点击窗口,在属性中,选择load,然后双击后买你的空白处,vs会自动生成一个load函数,如下图

image.png

image.png

声明一个全局的comport类,在load函数中,打开窗口,(当前我们打开一个固定的串口,后期将增加串口扫描功能,并选择打开串口)

        /// <summary>
        /// 界面加载函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            Runport = ComPort.V_OpenPort8N1("COM1",9600);
        }

在按钮点击事件中,调用读取函数

        /// <summary>
        /// 获取温湿度数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonget_Click(object sender, EventArgs e)
        {
            if (Runport.IsOpen)
            {
                string ret = THSensor.ReadTHDataFromSensor(Runport, 0x03);
                string temp = ret.Split('&')[0];
                string humi = ret.Split('&')[1];
                //赋值
                textboxhumi.Text = humi;
                textboxtemp.Text = temp;
            }
            else
            {
                MessageBox.Show("串口没有打开");
            }
        }

完整代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace THSensor
{
    public partial class Form1 : Form
    {
        /// <summary>
        /// 全局串口
        /// </summary>
        private SerialPort Runport;

        /// <summary>
        /// 构造
        /// </summary>
        public Form1()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 获取温湿度数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonget_Click(object sender, EventArgs e)
        {
            if (Runport.IsOpen)
            {
                string ret = THSensor.ReadTHDataFromSensor(Runport, 0x03);
                string temp = ret.Split('&')[0];
                string humi = ret.Split('&')[1];
                //赋值
                textboxhumi.Text = humi;
                textboxtemp.Text = temp;
            }
            else
            {
                MessageBox.Show("串口没有打开");
            }
        }
        /// <summary>
        /// 界面加载函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            Runport = ComPort.V_OpenPort8N1("COM1",9600);
        }
    }
}

运行,点击获取按钮,查看结果

image.png

之后,我们将优化这个工具,增加数据库数据存入和读取,表格显示实时数据,实时数据曲线显示,历史数据查询,报表导出等功能。欢迎交流