C#上位机-简易版温室监测

目录

前言

上位机

下位机

需要实现的功能

上位机代码部分

下位机代码

个人心得


前言

        本学期我的上位机课程已经结束了,那么这次分享一下期末考核所做的一个简易版温室监测。首先先给大家介绍一下什么是上位机以及下位机。

上位机

        上位机是指控制系统中通过人机接口与操作者进行交互的计算机。它般用于监控、控制和调试下机(如工业机器人自动化设备等)的运行和行为。上位机可以通过图形界面、命令行或者其他形式提供给操作者一些控制和操作选项,同时也能够接收和显示下位机的数据和反馈信息。上位机通常具备一定的计算能力,能够处理和分析从下位机传输来的数据,并作出相应的决策和控制命令。

下位机

        下位机是指控制系统中与上位机相对应的计算机或者部件。它负责执行上位机发送的控制命令,并将执行结果或者反馈信息传输给上位机。下位机通常是一些嵌入式设备或者控制器,其主要任务是实时控制和操作外部设备,例如机器人的关节控制器、传感器读取器或者执行器。下位机一般采用专用硬件和实时操作系统,以保证稳定和准确的控制执行。上位机通过与下位机的连接,可以对下位机进行配置和监控,实时获取相关数据、调整控制参数,并对下位机进行控制。这次做的温室监测,也是用到下位机,我这边用的是一个51单片机。

需要实现的功能

        本次的温室监测,需要实现的功能有:喷灌(利用一个直流电机转动来模拟)、通风(利用一个直流电机转动来模拟)、采光(点亮单片机上的LED灯来模拟)、显示温度、声光报警。

 以上就是我们C#上位机的界面布局.

上位机代码部分

        首先是串口数据的接收

 在串口的接收事件里面编写以下代码

Thread.Sleep(20);//每间隔20ms接收一次数据
            this.Invoke(new EventHandler(delegate
            {
                try
                {
                    if (serialPort1.BytesToRead > 0)//当串口缓存区中有数据时
                    {
                        //以字符串方式读取所有接收到的数据
                        string Str = serialPort1.ReadExisting();
                        //将接收到的所有0x00替换成\0显示在界面上,因为0x00是一个控制字符,不会在文本框中显示
                        Str = Str.Replace("\0", "\\0");
                        //把16进制字符串转换成整数以字符串输出
                        txtTemperature.Text = Str + "℃";//把温度显示在文本框中
                                                        //在信息框中追加接收的数据,其中包括接收时间和接收内容
                        AppendTextToInfoBox("[" + DateTime.Now.ToString("HH:mm:s") + "]" + "收" + "<-", txtReceive);
                        AppendTextToInfoBox(Str + "℃" + "\r\n", txtReceive);
                        temp = float.Parse(Str);//获取温度
                    }

                }
                catch (Exception ex)
                {
                    //在信息框中追加异常信息
                    AppendTextToInfoBox("[" + DateTime.Now.ToString("HH:mm:ss") + "]" + "收" + "< -", txtReceive);
                    AppendTextToInfoBox(ex.Message + "\r\n", txtRec

  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
网络通信是C#上位机开发中非常重要的一部分,下面是C#上位机开发教程中网络通信篇的一些内容: 1.使用Socket进行TCP通信 ```csharp // 服务器端 IPAddress ip = IPAddress.Parse("127.0.0.1"); int port = 8888; TcpListener listener = new TcpListener(ip, port); listener.Start(); Console.WriteLine("服务器已启动,等待客户端连接..."); TcpClient client = listener.AcceptTcpClient(); NetworkStream stream = client.GetStream(); byte[] data = new byte[1024]; int length = stream.Read(data, 0, data.Length); string message = Encoding.UTF8.GetString(data, 0, length); Console.WriteLine("接收到客户端消息:" + message); stream.Write(Encoding.UTF8.GetBytes("服务器已接收到消息"), 0, "服务器已接收到消息".Length); stream.Close(); client.Close(); listener.Stop(); // 客户端 IPAddress ip = IPAddress.Parse("127.0.0.1"); int port = 8888; TcpClient client = new TcpClient(); client.Connect(ip, port); NetworkStream stream = client.GetStream(); string message = "Hello, Server!"; byte[] data = Encoding.UTF8.GetBytes(message); stream.Write(data, 0, data.Length); data = new byte[1024]; int length = stream.Read(data, 0, data.Length); message = Encoding.UTF8.GetString(data, 0, length); Console.WriteLine("接收到服务器消息:" + message); stream.Close(); client.Close(); ``` 2.使用Socket进行UDP通信 ```csharp // 服务器端 IPAddress ip = IPAddress.Parse("127.0.0.1"); int port = 8888; UdpClient server = new UdpClient(port); IPEndPoint remote = new IPEndPoint(IPAddress.Any, 0); byte[] data = server.Receive(ref remote); string message = Encoding.UTF8.GetString(data, 0, data.Length); Console.WriteLine("接收到客户端消息:" + message); server.Send(Encoding.UTF8.GetBytes("服务器已接收到消息"), Encoding.UTF8.GetBytes("服务器已接收到消息").Length, remote); server.Close(); // 客户端 IPAddress ip = IPAddress.Parse("127.0.0.1"); int port = 8888; UdpClient client = new UdpClient(); IPEndPoint remote = new IPEndPoint(ip, port); string message = "Hello, Server!"; byte[] data = Encoding.UTF8.GetBytes(message); client.Send(data, data.Length, remote); data = client.Receive(ref remote); message = Encoding.UTF8.GetString(data, 0, data.Length); Console.WriteLine("接收到服务器消息:" + message); client.Close(); ``` 3.使用HttpWebRequest进行HTTP通信 ```csharp string url = "http://www.example.com"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader reader = new StreamReader(stream, Encoding.UTF8); string result = reader.ReadToEnd(); Console.WriteLine(result); reader.Close(); stream.Close(); response.Close(); ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值