基于CC2530温湿度采集系统课程设计报告(4)

2019-09-02 17:29

GUI_PutString5_7(25,6,\显示 OURS-CC2530 GUI_PutString5_7(10,22,\GUI_PutString5_7(10,35,\GUI_PutString5_7(10,48,\LCM_Refresh(); while(1) {

th_read(&tempera,&humidity); //读取温度和湿度 sprintf(s, (char*)\((INT16)((int)tempera % 10))); //将温度结果转换为字符串

GUI_PutString5_7(48,22,(char *)s); //显示结果 LCM_Refresh();

sprintf(s,(char*)\

((INT16)((int)humidity % 10))); //将湿度结果转换为字符串 GUI_PutString5_7(48,35,(char *)s); //显示结果 LCM_Refresh();

3.4.1 AODV协议源代码分析

1、Void AODV::recv(Packet *p, Handler*)

//判断是否是aodv包,是则调用函数recvAODV(p) if(ch->ptype() == PT_AODV) { recvAODV(p); //本节点产生的数据包,添加IP头

if((ih->saddr() == index) && (ch->num_forwards() == 0)) Add the IP Header

//收到本节点发送的包,说明有路由环路,丢包

else if(ih->saddr() == index) drop(p, DROP_RTR_ROUTE_LOOP); //本节点是中间节点

else {//TTL是分组最多能转发的次数 if(--ih->ttl_ == 0) drop(p, DROP_RTR_TTL);

//收到的不是广播分组,解析分组

15

if ( (u_int32_t)ih->daddr() != IP_BROADCAST) rt_resolve(p); //转发 else forward((aodv_rt_entry*) 0, p, NO_DELAY); 2、void AODV::rt_resolve(Packet *p) { //查找是否有到目的节点的路由 rt = rtable.rt_lookup(ih->daddr());

//没有,则添加到该目的节点的路由,此时添加的路由是无效的 if(rt == 0) rt = rtable.rt_add(ih->daddr()); //有效路由,则根据路由表中信息转发分组

if(rt->rt_flags == RTF_UP) forward(rt, p, NO_DELAY);

//如果本节点是该分组的源节点,说明没有到目的节点的路,此时发送RREQ找路

else

if(ih->saddr()

==

index) rqueue.enque(p); sendRequest(rt->rt_dst);

//链路中断,在维护中

else if (rt->rt_flags == RTF_IN_REPAIR) rqueue.enque(p);

// 本节点转发数据分组,但是不知道该到目的节点的路,发送RERR说明链路中断

3、else sendError(rerr, false);

//添加到目的节点的路由,此时的路由不可用,是无效的 aodv_rt_entry *rt = rtable.rt_lookup(dst);

//不到发送RREQ的时间,注意文件开头的RREQ定时器,若没收到RREP,源节点需要定时发送RREQ

if (rt->rt_req_timeout > CURRENT_TIME) Packet::free((Packet *)p); //AODV中多次发送RREQ,多次发送RREQ后仍找不到路,则丢包

if (rt->rt_req_cnt > RREQ_RETRIES) rt->rt_req_timeout = CURRENT_TIME + MAX_RREQ_TIMEOUT; drop(buf_pkt, DROP_RTR_NO_ROUTE);

//余下部分是填充路由表以及RREQ分组的内容,不涉及实现的话不用了解,了解有一定难度,需要结合整个过程看

4、链路中断,需要发送RERR,通知所有受影响的节点,函数体关于填充RERR内容,不用细看void AODV::sendError(Packet *p, bool jitter) {//

5、周期发送Hello分组,以检测邻节点的连通性void AODV::sendHello()

16

{//

6、根据包类型调用不同函数void AODV::recvAODV(Packet *p) {// case AODVTYPE_RREQ recvRequest(p); case AODVTYPE_RREP: recvReply(p); case AODVTYPE_RERR: recvError(p); case AODVTYPE_HELLO: recvHello(p);

7、收到RREQvoid AODV::recvRequest(Packet *p) {//

// I'm the source - I recently heard this request.则丢弃该RREQ if(rq->rq_src == index) Packet::free(p);

if (id_lookup(rq->rq_src, rq->rq_bcast_id)) Packet::free(p); // * Cache the broadcast ID ,用于判断是否已收到过该RREQ id_insert(rq->rq_src, rq->rq_bcast_id); //查找是否有到源节点的路由,有则更新,无则添加a

//* Find out whether any buffered packet can benefit from the * reverse route.缓存中是否有到源节点的数据分组,有,则建立好路由后开始发送数据

//查找是否有到目的节点的有效路由,有则向源节点回复RREP,没有则继续转发该RREQ,注意转发前需要更新RREQ中部分内容

8、void AODV::sendReply(nsaddr_t ipdst, u_int32_t hop_count, nsaddr_t rpdst, u_int32_t rpseq, u_int32_t lifetime, double timestamp) {

//填充RREP内容

9、void AODV::recvReply(Packet *p) {

//查找是否有到目的节点的路由,没有则建立,否则更新

//如果是RREP的目的节点,即RREQ的源节点则建立到目的节点的路;否则根据路由表中到源节点的路由(此路由在发送RREQ过程中已建立)转发该RREP

10、收到RERR,查看有哪些路径受到中断链路的影响,更新RERR内容,并向受影响的节点发送该RERRvoid AODV::recvError(Packet *p) {

17

总结

在本次嵌入式系统开发技术课程设计中,主要目的是设计一个基于CC2530的温湿度数据采集系统。该系统是一个采用CC2530无线单片机进行温湿度的数据采集,并且结合Zigbee协议架构进行编程的设计,主要是用C51实现基于CC2530的温湿度数据采集系统模块的设计,并在IAR集成环境开发环境中进行基于Zigbee架构的编程,节点模块的调试,最后,实现无线传感网络的构建。

值得一说的是在这为期二周的嵌入式系统开发技术课程设计中我们收获了不少。我们不仅学习了如何使用CC2530读取温湿度传感器SHT10的温湿度数据,而且了解了如何通过CC2530内部的ADC得到光照传感器的数据。甚至也了解了一些无线传感器的知识。总之,我觉得本次训练让我了解了课本上不曾提到的知识。因此,这次课程设计训练对将来从事这一方面工作的同学尤为重要,这等于让我们提前对这方面的知识有了进一步的认识。当然,在这次训练过程中也遇到了很多实际问题,不过在老师的进一步讲解之后,我们逐步认识和理解了其中的关键,而且又对所学的理论知识有了升华。

同时本次训练,也在一定方面加深了我对所学过的各种理论的认识和理解,并在一定程度上掌握并会运用。更为难得的是,在这次训练过程中,屡屡碰见一些问题,在解决这些问题的过程中,不断加强了我对嵌入式系统的理解。对于一些自己不清楚,不明白但平时又很难发现的知识点有了一次全面的巩固与复习。在大学阶段,理论的学习和实践是密不可分的。离开了实践的理论如同空中阁楼。与此同时,理论是需要实践来不来不断完的。理论与实践就如同鱼与水,是相互依存的。同时,在与同学共同解决一些问题的过程中,提高了团队协作精神。

18

参考文献

[1]赵宏、曹洁.Linux系统指南.成都:西南交通大学出版社,2008.

[2]张晓林,崔迎炜 .嵌入式系统设计与实现.北京:北京航空航天大学出版社,2006.

[3]陈文智. 嵌入式系统开发原理与实践.北京:清华大学出版社 ,2005. [4]王宜怀、刘晓升.嵌入式技术基础与实践.北京:清华大学出版社,2007. [5]刘洪涛、孙天泽.嵌入式技术与设计.北京:人民邮电出版社,2009. [6]陈渝.嵌入式系统原理及应用开发.北京:机械工业出版社,2002. [7]张石. 嵌入式系统技术教程.北京:人民邮电出版社,2009.

19

致谢

通过二周的嵌入式系统开发技术课程设计,我们真的学习到了很多东西,不仅仅是嵌入式系统方面的理论知识,还有许多技能。如如何找一些有用的相关材料,如何删选有价值的部分等等。当然,对于理论知识如此欠缺的我们来说,初次接触综合性如此强的课程设计会遇到许许多多问题,这时候就少不了老师的细心指导和认真讲解。一直以来老师都是我们的指路人,孜孜不倦的发光发热,在这里我想首先向我们敬爱的老师道声谢,老师辛苦了!还要谢谢帮助我的同学们,愿我们一起进步,一起更努力!

20


基于CC2530温湿度采集系统课程设计报告(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:平面解析几何(8.3圆锥曲线)(教师版)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: