还剩4页未读,继续阅读
文本内容:
实训报告ZigBee实训要求
(1)EB板按键能控制LED灯的亮灭;
(2)C#软件开发界面控件能控制ZigBee板上LED灯的亮灭;
(3)C#界面能通过图片实时显示ZigBee板上LED的亮灭情况;需求分析这次实训做的是一个简单的智能家居控制灯,能实现PC机控制灯,并且实时查看灯的开与关状态,锻炼我们上位机对下位机的控制与下位机反馈信息到上位机的能力,要求能熟炼使用IAR软件进行ZigBee编程和使用Microsoft VisualStudio进行C#界面的开发知识点整理
(1)ZigBee按键控制LED灯程序的运用;
(2)ZigBee接收串口发送来的数据识别并做处理;
(3)ZigBee发送串口数据函数的调用;
(4)C#串口部分如串口号,波特率,检验位的设定;
(5)C#接收到串口数据并处理,C#发送串口数据;遇到的难题
(1)ZigBee使用到的串口中断和按键中断两个中断,经常使得功能不稳定;
(2)C#串口接收到的数据可以调用显示但无法识别;
(3)C#的接收后显示和发送出现线程经常出错,无法在一个元件实现实时LED灯状态;
(4)程序整合的过程经常出现无法兼顾两个程序原来的功能部分问题处理办法•下位机ZigBee()if KEYl==l{()Delay25000;}注按键的简单去抖ifKEYl==lKeyTouchtimes++;ifKey Touchtimes==1UartTX_Send_StringTxdata,r;RLED=0;Key Touchtimes=2;ifKey Touchtimes==3UartTX_Send_StringTxdata2,r;RLED=1;KeyTouchtimes=0;注按键每次按下KeyTouchtimes加1,当1状态时关LED灯并且发送Txdata数组到上位机同时自身跳转到状态2;当3状态时开LED灯并且发送Txdata2数组到上位机同时自身跳转到0;这样写可以保证每次按键按下时LED灯会取反并且每次状态改变时把状态通过数组发送到上位机•上位机整体效果图:C#0I I上位机显示灯状态图:回区LNY文件F帮助H当前打开的运口COM4,波特至9600,奇偶校验2014/6/27孰五12:56:41,1已接收字三无校验None,数据位8,停止位1当前打开的送口COM4,波特率9600,奇国校验无校验None,■位8,停止位2014/6/27g五12:56:
53.1品口配置区已接收字〒当前可用房口号:设置淀□波特娄:设翳□奇«校验位:private voidbutton2_Clickobject sender,EventArgs emySerialPort.Write^Al#^;isssnpictureBoxl.Image=pictureBox
3.Image;开灯口停止位关闭选中局口关灯private voidbutton3_Clickobject sender,EventArgs e发送区mySerialPort.WriteAO#;pictureBoxl.Image=pictureBox
2.Image;当C#界面按下关灯按键时会发送AO#命令到ZigBcc实现关灯命令同时把关灯图片付值到显示见面;当C#界面按下开灯按键时会发送A1#命令到ZigBee实现关灯命令同时把开灯图片付值到显示见面;ZigBee接收C#命令程序〃接收状态
1.ifRXTXflag==
12.
3.if temp!=
04.
5.iftemp!=,#,datanumber
36.{为结束字符个字符
7.
8.Recdata[datanumber++]=temp;
9.
10.else
11.
12.RXTXflag=3;灯的程序
13.}
14.ifdatanumber==3RXTXflag=3;
15.temp=0;
16.}
17.
18.ifRXTXflag==
319.注每次收到数据是以#号结束字符的判断并识别到接收的数据〃#被定义为时关A0#灯,识别到接收的数据为时开灯RLED A1#RLED〃最多能接收3〃进入改变小
21.if Recdata
[0]==*Af
22.
23.ifRecdata[l]==f0,
24.
25.RLED=0;
26.YLED=1;
27.GLED=1;//AO#关所有LED
28.else
29.
30.RLED=1;
31.YLED=1;
32.GLED=1;开所
33.//Al#有LED
34.
35.C#接收来自EB板程序如下Private voidmySerialPortDataReceived objectsender,SerialDataReceivedEventArgs e{SerialPort sp=SerialPortsender;string text=string.Empty;int size=sp.BytesToRead;if size%2=0判断字节数是否是偶数pictureBoxl.Image=pictureBox
2.Image;elsepictureBoxl.Image=pictureBox
3.Image;totalReceivedBytes+=size;this.InvokeUpdateTextHandler,text;当ZigBee按键按下时会发送Txdata数组或者Txdata2数组,均为一个字节,C#接受计算接收到的字节为奇偶判断此时是发送开灯命令还是关灯命令,并把开灯或者关灯图片附值到显示区实训总结本次实训任务让我重新学习了一次有关知识内容,实训过程中遇到很多ZigBee C#问题,比如在单片机中如何去使用在一个中断响应两个不同事件,结果干CC2530扰很严重,能实现按键控制灯的亮灭和发送数据,就不能在实现界面发送数据C#给单片机,最后只能采用按键中断解决中断冲突问题,还有问题就是按下CC2530板按键时发送的数据不稳定,在这个问题上团队力量很重,最后经过我们三个EB的努力把这个问题也解决了,在老师指导下解决接收板的数据后界面的C#EB C#亮灯和灭灯图片的切换,其他问题都不是很大……每次实训我深刻地知道了,实践源于真知,而只有更好更牢固掌握知识,多想多问多查,学会自己上网找资料,才能在实践中有较大的收获,同时团队解决问题能力远比个人的强,巩固了专业知识,发现了许多不足,明白了专业重心所在,专业运用于何处对于自己专业知识掌握不扎实,缺乏独立思考探索的意识等等缺点,我将在今后的学习与工作中不断加以改正,认真学好专业知识,以求真正地将理论运用于实践,用实践指导理论。