通过上位机可以直接观察到温室的各项实时参数和各个装置的工作状态,并且可以通过曲线图直观地分析该温室最近一段时间的环境变化。上位机可对终端中遮阳、风机等装置进行远程控制。管理员可以通过查询数据库来查看温室的历史环境参数。上位机将采集数据转发至移动终端,方便管理员能够随时随地查看温室内情况,同时,上位机可接受移动终端下达的指令并通过串口转发至底层终端。为了使主进程能够流畅的运行,不出现卡顿的情况,我使用线程池,为每一个模块执行的重要操作都分配一个线程,这样便可以保证程序不再运行过程中会出现无响应等异常情况。整个程序包括自动报警、串口通信、图表显示、数据存储、网络通信等主要模块。
主要的模块就三个:
1.串口通信的上传下达(与底层硬件)
2.网络通信(与APP)
3.数据的显示(图表、数据库、报表)
一个一个来看:
1.串口通信
上位机服务器与底层终端的通信采用串口来实现,由.NET Framework提供的操作串口的System.IO.Port.SerialPort类创建并初始化对象PortNameArr,调用GetPortNames()方法获取目标串口名称,并通过主窗体上的ComboBox控件配置波特率、数据位等主要参数,通过注册监听方式接收数据,关键代码如下:
if (pchReceive.PortState) //检查串口当前状态
{
pchReceive.ClosePort();
}
else
{
pchReceive.OpenPort(cb_portNameReceive.Text, int.Parse(cb_baudRate.Text),//打开控件内所选择的串口
int.Parse(cb_dat