上位机环境监控系统

目录

摘要

引言

一、上位机程序开发

二、下面是一些具体功能实现的代码

三、运行效果

四、总结


摘要


温度监控是许多领域中必不可少的任务,而上位机是监控系统中重要的一环。本文介绍了如何利用C#编写一个温度监控系统上位机,实时显示温湿度和光照数据的方法。 

环境监控系统上位机实时显示数据是一个重要的功能,它可以让用户随时了解室内的各种数据,帮助他们更好地管理和控制温室环境

温室农业作为一种现代化的农业模式,为农作物的生长提供了一个理想的环境。然而,随着温室规模的扩大和技术的不断进步,温室管理也面临着越来越多的挑战。为了提高温室农业的效率和产量,我们设计了这个温室监控系统上位机,旨在为农民和温室管理者提供一个全面而实时的数据显示和管理工具。

该系统基于先进的传感器技术和物联网技术,能够实时监测温室内的各项关键参数,包括温度、湿度、光照强度、土壤湿度等。通过上位机,用户可以直观地查看这些数据,并对温室环境进行实时调整和优化,以确保作物的健康生长。

除了实时数据显示外,该系统还提供了一系列功能和特点。首先,用户可以通过上位机设定温室内的目标数值,系统将根据这些目标数值进行自动调节。其次,系统还支持远程监控和控制,用户可以通过手机或电脑随时随地监控温室环境,并进行必要的调整。此外,系统还具备数据存储和分析功能,用户可以通过历史数据分析温室环境的变化趋势,以及作物生长的相关因素。

我们相信,这个温室监控系统上位机将成为温室管理的得力助手,帮助农民和温室管理者实现温室农业的高效生产。请继续阅读,了解更多关于该系统的详细信息和操作指南。

引言

随着科技的不断进步,温度监控系统已经成为各行各业中必不可少的一项任务。而上位机作为温度监控系统中的核心控制中心,负责接收、处理和显示传感器采集的温度数据。本文将介绍如何利用C#编写一个实时显示温度数据的上位机。


一、上位机程序开发

用C#语言编写一个上位机应用程序,实现与下位机进行串行口通信,实现温室监控系统功能。上位机参考设计如图所示。

上位机详细说明功能如下:

通过串口方式与下位机通信,通信协议自定
     •   上位机可以实时显示下位机采集到的温度,湿度和光照值。
     •    上位机可以开启或关闭下位机风扇,灯光。
     •    将采集到的数据进行历史记录i
     •    将采集到的数据上传至数据库

 报警功能:

     •    上位机可以开启或关闭下位机风扇,灯光。        

二、下面是一些具体功能实现的代码

通过下列一列一串代码来实现单片机与上位机之间的通信:

  • private void Form1_Load(object sender, EventArgs e):Form1的加载事件处理程序。
  • serialPort = new SerialPort();:创建一个SerialPort对象。
  • serialPort.DataReceived += MySerialPortReceive;:将MySerialPortReceive方法注册为serialPort对象的DataReceived事件处理程序。
  • string[] ports = SerialPort.GetPortNames();:获取可用的串口名称,存储在ports数组中。
  • foreach (string port in ports):遍历ports数组中的每个串口名称。
  • uiComboBox1.Items.Add(port);:将每个串口名称添加到uiComboBox1控件的选项列表中。
        private void Form1_Load(object sender, EventArgs e)
        {
            

            serialPort = new SerialPort();
            //serialPort.BaudRate = 115200;
            serialPort.DataReceived += MySerialPortReceive;
            //this.uiComboBox1.SelectedIndex = 0;


            // 扫描可用的串口
            string[] ports = SerialPort.GetPortNames();
            foreach (string port in ports)
            {
                uiComboBox1.Items.Add(port);
            }
        }

通过这个代码我们和采集单片机上接入的温湿度传感器,从而获取温度和湿度

  1. 创建一个长度为20的字节数组data用于存储接收到的数据。
  2. 调用serialPort.Read方法从串口中读取数据,并返回实际读取到的字节数。
  3. 使用Encoding.ASCII.GetString方法将字节数组data转换为字符串。
  4. 判断接收到的字符串长度是否小于8,如果小于8则表示数据格式不完整,直接返回。
  5. 判断接收到的字符串是否符合特定的格式,格式为第一个字符为'T',第四个字符为'H',第七个字符为'L',如果不符合则直接返回。
  6. 如果字符串符合特定格式,则解析温度、湿度和光照的值。
  7. 如果温度大于32,则向串口发送一个字母'A'。
  8. 创建一个sensor对象,将解析出来的温度、湿度、光照和时间赋值给该对象的属性。
  9. 将sensor对象添加到数据库中。
  10. 使用Invoke方法将更新界面控件的操作放入UI线程中执行。
  11. 更新界面控件的值,并将温度、湿度和光照的值添加到图表中,如果图表中的值数量超过20,则移除最早的一个值。
  12. 调用chart1.Invalidate方法使图表刷新显示。
        private void MySerialPortReceive(object sender, SerialDataReceivedEventArgs e)
        {
            byte[] data = new byte[20]; // 假设最大长度为1
            int count = serialPort.Read(data, 0, 20);
            string receivedString = Encoding.ASCII.GetString(data, 0, count);

            if (receivedString.Length < 8) // 假设数据格式至少需要8个字符
            {
                return;
            }

            if (receivedString[0] == 'T' && receivedString[3] == 'H' && receivedString[6] == 'L')
            {
                // 解析温度、湿度和LED状态
                int temperature = int.Parse(receivedString.Substring(1, 2));
                int humidity = int.Parse(receivedString.Substring(4, 2));
                int illumination = int.Parse(receivedString.Substring(7, 2));

                if (temperature > 32)
                {
                    serialPort.Write("A");
                }

                //添加数据到数据库
                sensor sensor = new sensor();
                sensor.temp = temperature;
                sensor.hum = humidity;
                sensor.ill = illumination;
                sensor.time = DateTime.Now.ToLocalTime();
                textEntities6.sensors.Add(sensor);
                textEntities6.SaveChanges();
                

                // 更新界面控件
                this.Invoke(new Action(() =>
                {
                    this.uiTextBoxTemp.Text = temperature.ToString();
                    this.uiTextBoxHum.Text = humidity.ToString();
                    this.uiTextBoxill.Text = illumination.ToString();
                   
                    if (chart1.Series["温度"].Points.Count >= 20)
                    {
                        chart1.Series["温度"].Points.RemoveAt(0);
                    }
                    if (chart1.Series["湿度"].Points.Count >= 20)
                    {
                        chart1.Series["湿度"].Points.RemoveAt(0);
                    }
                    if (chart1.Series["光照"].Points.Count >= 20)
                    {
                        chart1.Series["光照"].Points.RemoveAt(0);
                    }



                    chart1.Series["温度"].Points.Add(temperature);
                    chart1.Series["湿度"].Points.Add(humidity);
                    chart1.Series["光照"].Points.Add(illumination);
                    chart1.Invalidate();
                }));
            }
        }

三、运行效果

可以看出我们采集到的温度为26度,湿度为38%RH,光照值为39lux

也能看见保存在数据库中历史的数据

四、总结

上位机环境检测系统是一种通过传感器获取环境数据,并将数据传输到上位机进行处理和显示的系统。该系统的主要功能是实时监测环境参数,并提供可视化的界面来显示数据和进行分析。

以下是上位机环境检测系统的一些主要特点和总结:

  1. 传感器:系统使用各种传感器来测量环境参数,例如温度、湿度、气压、光照等。传感器可以通过数字或模拟接口与上位机进行通信。
  2. 数据采集:系统通过传感器获取环境参数的原始数据,并将其转换为可理解的格式。这些数据可以是模拟信号或数字信号。
  3. 数据传输:系统将采集到的环境数据传输到上位机。传输方式可以是有线(例如串口、USB)或无线(例如Wi-Fi、蓝牙)。
  4. 数据处理和存储:上位机接收到环境数据后,进行处理和存储。数据处理可以包括数据解析、单位转换、数据校验等。处理后的数据可以存储到数据库或文件中,以便后续分析和查询。
  5. 数据显示和分析:系统通过可视化界面将环境数据显示给用户。这些数据可以以图表、表格或其他形式展示。用户可以通过界面进行数据分析、趋势分析和报警设置等。
  6. 远程监控:系统可以支持远程监控功能,用户可以通过互联网访问上位机,远程查看环境数据和控制系统。
  7. 报警和通知:系统可以根据预设的阈值进行数据监测,并在超过阈值时触发报警。报警可以通过声音、光或手机通知等方式进行。
  8. 可定制性:上位机环境检测系统通常具有一定的可定制性,可以根据用户需求进行配置和扩展。例如,用户可以添加更多的传感器,自定义数据处理算法或界面布局等。
总的来说,上位机环境检测系统提供了一种实时监测和分析环境参数的解决方案,可广泛应用于工业环境监测、室内空气质量监测、农业种植等领域。通过该系统,用户可以更好地了解和控制环境,从而提高工作效率和生活质量。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值