您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 实训ZigBee报告
ZigBee实训报告实训要求:(1)EB板按键能控制LED灯的亮灭;(2)C#软件开发界面控件能控制ZigBee板上LED灯的亮灭;(3)C#界面能通过图片实时显示ZigBee板上LED的亮灭情况;需求分析:这次实训做的是一个简单的智能家居控制灯,能实现PC机控制灯,并且实时查看灯的开与关状态,锻炼我们上位机对下位机的控制与下位机反馈信息到上位机的能力,要求能熟炼使用IAR软件进行ZigBee编程和使用MicrosoftVisualStudio进行C#界面的开发。知识点整理:(1)ZigBee按键控制LED灯程序的运用;(2)ZigBee接收串口发送来的数据识别并做处理;(3)ZigBee发送串口数据函数的调用;(4)C#串口部分如串口号,波特率,检验位的设定;(5)C#接收到串口数据并处理,C#发送串口数据;遇到的难题:(1)ZigBee使用到的串口中断和按键中断两个中断,经常使得功能不稳定;(2)C#串口接收到的数据可以调用显示但无法识别;(3)C#的接收后显示和发送出现线程经常出错,无法在一个元件实现实时LED灯状态;(4)程序整合的过程经常出现无法兼顾两个程序原来的功能。部分问题处理办法:下位机ZigBee:if(KEY1==1){Delay(25000);}注:按键的简单去抖if(KEY1==1){KeyTouchtimes++;}if(KeyTouchtimes==1){UartTX_Send_String(Txdata,r);RLED=0;KeyTouchtimes=2;}if(KeyTouchtimes==3){UartTX_Send_String(Txdata2,r);RLED=1;KeyTouchtimes=0;}注:按键每次按下KeyTouchtimes加1,当1状态时关LED灯并且发送Txdata数组到上位机同时自身跳转到状态2;当3状态时开LED灯并且发送Txdata2数组到上位机同时自身跳转到0;这样写可以保证每次按键按下时LED灯会取反并且每次状态改变时把状态通过数组发送到上位机。上位机C#整体效果图:·上位机显示灯状态图:privatevoidbutton2_Click(objectsender,EventArgse){mySerialPort.Write(A1#);pictureBox1.Image=pictureBox3.Image;}privatevoidbutton3_Click(objectsender,EventArgse){mySerialPort.Write(A0#);pictureBox1.Image=pictureBox2.Image;}当C#界面按下关灯按键时会发送A0#命令到ZigBee实现关灯命令同时把关灯图片付值到显示见面;当C#界面按下开灯按键时会发送A1#命令到ZigBee实现关灯命令同时把开灯图片付值到显示见面;ZigBee接收C#命令程序:1.if(RXTXflag==1)//接收状态2.{3.if(temp!=0)4.{5.if((temp!='#')&&(datanumber3))6.{//’#‘被定义为结束字符7.//最多能接收3个字符8.Recdata[datanumber++]=temp;9.}10.else11.{12.RXTXflag=3;//进入改变小灯的程序13.}14.if(datanumber==3)RXTXflag=3;15.temp=0;16.}17.}18.if(RXTXflag==3)19.{20.21.if(Recdata[0]=='A')22.{23.if(Recdata[1]=='0')24.{25.RLED=0;26.YLED=1;27.GLED=1;//A0#关所有LED28.}29.else30.{31.RLED=1;32.YLED=1;33.GLED=1;//A1#开所有LED34.}35.}注:每次收到数据是以#号结束字符的判断并识别到接收的数据为A0#时关RLED灯,识别到接收的数据为A1#时开RLED灯。C#接收来自EB板程序如下:PrivatevoidmySerialPort_DataReceived(objectsender,SerialDataReceivedEventArgse){SerialPortsp=(SerialPort)sender;stringtext=string.Empty;intsize=sp.BytesToRead;if(size%2==0)判断字节数是否是偶数{pictureBox1.Image=pictureBox2.Image;}else{pictureBox1.Image=pictureBox3.Image;}totalReceivedBytes+=size;this.Invoke(UpdateTextHandler,text);}当ZigBee按键按下时会发送Txdata数组或者Txdata2数组,均为一个字节,C#接受计算接收到的字节为奇偶判断此时是发送开灯命令还是关灯命令,并把开灯或者关灯图片附值到显示区。实训总结本次ZigBee实训任务让我重新学习了一次C#有关知识内容,实训过程中遇到很多问题,比如在CC2530单片机中如何去使用在一个中断响应两个不同事件,结果干扰很严重,能实现按键控制灯的亮灭和发送数据,就不能在实现C#界面发送数据给CC2530单片机,最后只能采用按键中断解决中断冲突问题,还有问题就是按下EB板按键时发送的数据不稳定,在这个问题上团队力量很重,最后经过我们三个的努力把这个问题也解决了,在老师指导下解决C#接收EB板的数据后C#界面的亮灯和灭灯图片的切换,其他问题都不是很大......每次实训我深刻地知道了,实践源于真知,而只有更好更牢固掌握知识,多想多问多查,学会自己上网找资料,才能在实践中有较大的收获,同时团队解决问题能力远比个人的强,巩固了专业知识,发现了许多不足,明白了专业重心所在,专业运用于何处。对于自己专业知识掌握不扎实,缺乏独立思考探索的意识等等缺点,我将在今后的学习与工作中不断加以改正,认真学好专业知识,以求真正地将理论运用于实践,用实践指导理论。
本文标题:实训ZigBee报告
链接地址:https://www.777doc.com/doc-2499850 .html