2824|0

6

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【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为数组,绑定显示一次数据,更新一次,不知怎样改进才好,有什么好办法么诸位。。

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表