【TI首届低功耗设计大赛】智能环境监控系统(三) 协议
[复制链接]
从用ZigBee协调器广播模式发送命令,在应用层发送的一帧数据首部加识别符。用的节点定时传送数据上去,实现控制与监控。。点对点,未实现路由中转,遗憾呐
自动模式调节环境,根据光敏调节点灯开关,湿度调节雾化器,电机等。。
简单的上位机与主控之间的通信协议上位机和主控是以串口作为媒介来进行信息交互的通讯。 通信协议:目标命令,数据域。 1.主控 to PC 的通信信息格式: A data //节点1信息,1、2位温度,3、4位湿度,5、6、7、8位烟雾浓度,最后位电器状态 B data //节点2信息,1、2位温度,3、4位湿度,5、6、7、8位烟雾浓度,最后位电器状态 C data //节点3信息,1、2位温度,3、4位湿度,5、6、7、8位烟雾浓度,最后位电器状态 D data //节点4信息,1、2位温度,3、4位湿度,5、6、7、8位烟雾浓度,最后位电器状态 2. PC to 主控的通信信息格式 1 l 0 //表示关闭灯1 1 l 1 //表示打开灯1 2 l 0 //表示关闭灯2 2 l 1 //表示打开灯2 3 l 0 //表示关闭水泵 3 l 1 //表示打开水泵 4 l 0 //表示关闭雾化器 4 l 1 //表示打开雾化器 Q 1 1 //切换到手动模式 Q 1 0 //切换到自动模式
这是采集到的实时温度曲线:
采用chart控件,当时着实麻烦了一番,X轴不会让他跟着时间跑,后来用了一种笨办法:
DateTime time = DateTime.Now; string str = time.ToString("HH:mm:ss"); times[dots - 1] = str; int lenth1 = 0; int wendu1 = 20; lenth1 = txGet.Text.Length; if (lenth1 == 2) { wendu1 = 10 * (txGet.Text[0] - '0') + txGet.Text[1] - '0'; wendu1s[dots-1] = wendu1; } if (lenth1 == 1) { wendu1 = txGet.Text[0] - '0'; } int lenth2 = 0; int wendu2 = 20; lenth2 = wen2.Text.Length; if (lenth2 == 2) { wendu2 = 10 * (wen2.Text[0] - '0') + wen2.Text[1] - '0'; wendu2s[dots - 1] = wendu2;
} if (lenth2 == 1) { wendu2 = wen2.Text[0] - '0'; } this.chart1.Series[0].Points.DataBindXY(times, wendu1s); this.chart1.Series[1].Points.DataBindXY(times, wendu2s); for (int i = 0; i < dots -1 ; i++) { wendu1s = wendu1s[i + 1]; } for (int i = 0; i < dots - 1; i++) { wendu2s = wendu2s[i + 1]; } for (int i = 0; i < dots - 1; i++) { times = times[i + 1]; }
其中:“ this.chart1.Series[0].Points.DataBindXY(times, wendu1s);”为关键 times与wendu1s为数组,绑定显示一次数据,更新一次,不知怎样改进才好,有什么好办法么诸位。。
|