上位机项目分享(上)

        这次上位机程序设计的专业课老师布置的期末实战作业,是类似与温室大棚监控的上位机程序,我将分为两篇文章来分享我的制作过程以及一些经验。

这是我程序的界面设计,整体是按照老师给的例图来布置。

三个功能键-开启通风、开启采光、开启喷灌在未打开串口前设置为不启用状态。

温度数值显示框默认设置为只读(不可编辑状态)。

先从退出按键开始,这个功能的实现使用了this.Close();  非常直接简单的一个方法。

串口的下拉框则是serial_comboBox.Items.AddRange(SerialPort.GetPortNames());来一次性添加存在的串口。

搜索串口功能,则是先将下拉框的内容清空,再次使用添加串口的命令。

开启串口使用这里调用了  串口控件名.Open() 、串口控件名.Close()  、、等等,开启前会逐步读打开默认不启用的三个功能控件,关闭则相反,再加个try\catch来抓异常。

串口接收部分则是将接收的数据转为字节形式。串口发送也是。

        const byte FFRAME_HEAD1 = 0xAA;
        const byte FFRAME_HEAD2 = 0x55;
        const byte FRAME_END = 0x0D;
        const byte FRAME_DIR_CMD = 0x01;
        const byte FRAME_DIR_REC = 0x81;
        const byte FRAME_DEVICE_LED = 0x01;
        const byte FRAME_DEVICE_FAN = 0x02;
        const byte FRAME_DEVICE_TEMP = 0x03;
        const byte FRAME_DEVICE_FAN2 = 0x04;
        const byte FRAME_DEVICE_TEMP_LIMIT_UP = 0x05;
        const byte FRAME_DEVICE_TEMP_LIMIT_DOWN = 0x06;
        const byte FRAME_DEVICE_TEMP_LIMIT_LIGHT = 0x07;
        const byte FRAME_DATA_NUM = 3;

这是相关的帧格式。

关于接收解析方面

就是依次判断是否等同于设置的帧。然后将数据存入。

下面时一个发送指令的程序

后续的命令都是基于此进行小改动。

上图是发送温度上限的命令,将温度上限数据拆分,发送给下位机。

 自动获取温度是定时器定时发送获取温度命令实现。

发送设置的温度上限前,定时器会判断输入框是否为空,空则会赋一个初值。

应用多线程,防止程序死等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值