毕业设计(7)

2019-06-17 09:25

∥判断报头4.bit是否符合协议,如果符合则认为是完整的数据包

if((reTemp[3】’=.b’)&&(reTemp[2】-=’1’)&&(reTemp[1】-=’a’)&& (reTemp【O】==’0’))

第五章基于s3c4480x的ARM驱动层程序实现

( Uan-Select(O);//选择UARTO,以下数据通过蓝牙发送 for(jin=counter.jin>O;jin~)

Uan.SendByte(reTemp【counter-jin】);//发送缓存的数据到接收端PDA

Uart_Select(1);

//蜂鸣器控制

rTCoN &=~0xf0000;∥停止计时器3,关闭其所有属性。 rTCFG0 &=~0xf阳O; ∥设定计时器3预分频

rTCFGl &=~OxfDOO: ∥计时器3工作在MCU主频的1/16频率 rTCFGl l=Ox3000;

rTCNTB3 =GetCpuClock()/(2100木16);//设定蜂鸣器呜叫频率

rTCMPB3 =rTCNTB3>>1;//设计蜂鸣器工作占空比

rTCON I_0Xd0000; ∥开启计时器3声音开始

Delay(5000); ∥设定蜂鸣器呜叫延迟

rTCON &=~0x10000: //关闭计时器3

countre=0;∥重新读数据

retlJIn:

)

)

else //读到报尾标志但报尾不符合协议,重新读 countre=0:

5.4本章小结

本章对于红外激光通信系统的驱动程序设计进行了详细介绍,由于本系统数 据流比较单一,因此开发时没有将操作系统移植到ARM核上,主要工作集中在 熟悉S3C44BOX的各个端口寄存器,并将其正确的初始化以及编写相应的中断服 务程序。整个驱动程序设计力求简洁,有助于提高系统的实时性并减小ARM核 的功耗。

45

第六章红外激光通信系统应用层程序设计与实现

第六章红外激光通信系统应用层程序设计与实现

虽然面向连接的TCP协议具有提供自动处理分组丢失和交付失序问题的能 力,这样程序能够更加关注于应用层的设计。然而,由于测试系统中硬件环境的 限制,包括室内AP和PDA无线模块功率较低,以及周围无线信号干扰源较多 等因素,造成网络信号不稳定,甚至会出现暂时中断现象。因此,最终放弃了 TCP而选择UDP作为系统的传输层协议。UDP是一种面向非连接的,不可靠的 通讯协议,相对于TCP来说,虽然可靠性不及,但传输效率较高,并且没有建 立连接过程的开销。

6.1基于UDP的自定义通信协议总体设计

为了使用UDP实现可靠的数据传输,本文在应用层自定义了一套针对于本 系统应用的协议,协议内容见表6.1。 表6.1基于uDP的自定义协议格式

为了使该协议能够尽可能的保证数据的完整性,本文在自定义的协议中加入 如下机制,用以增强协议的可靠性:

第六章红外激光通信系统应用层程序设计与实现

1.数据检验机制

在自定义的数据包中加上了包头和包尾,每接收到一个数据包都会对包头和 包尾内容进行校验,并且对于包内的数据也加入校验机制,即发送端一次发送的 数据包包含三个有效数据字段,当检测到两个或以上的字段相同,则认为该数据 报是正确有效的,提取出其中一段,转入上层处理。这样可以在一定程度上保证 数据的正确性。 2.超时重传机制

发送方每发出一个数据包,都会设定一个定时器并进入等待状态,等待接收 方对该数据包的应答包(即ACK)。如果发送方在定时器超时之前接收到了ACK, 那么说明该数据包发送成功,此时发送方会取消刚才设置的定时器。相反,如果 定时器在接收到AcK之前超时,此时,发送方认为该数据包丢失,并重新发送 丢失的数据包,并且将继续这样做直到收到目的方的回应。

6.2 PDA端,Server端应用程序具体实现

整个应用层的软件开发基于Select I/O模型[33】。为了方便使用,本文将

winSock API函数封装到了CuDP—CE类中,用于控制所有的uDP操作。

CUDP CE类图如图6.1所示。

CUDP CE

∞m c++Reve常Enginee悖d)

I黪m—-onudpErTor:oNuDPERRoR

缀≥rrLOnudpRecv:ONuDPREcV 1l衫rrLonudpsend:oNuDPsEND

戮m—onsendReco州:oNsENDREcoRD

翳参m—uDPsocket:socKET

l囊≯1rLRemoteAddr:struct sockaddr-jn ;移m ExitlhreadE、ent:HANDLE

§矜m._po、^,ne^~nd:cwnd+ g彩sendBuf:char。 荔参ackBuf:char。 藏r徊ckedType:char I绂筘tate:jnc 廖箩cuDP_-cE()

l塑k>_CuDP—JcE()

》open()

嚣努close()

夔蟹sendData()

沪ResendBufi()

矜Reset()

澄<>RecvTh悖ad() 净ParsePackage() 毋HandlePackage()

凌pos()

图6.1 CuDP CE类图

47

第六章红外激光通信系统应用层程序设计与实现

由于使用UDP协议的通信双方是对等的,因此,PDA和Server使用的都是

CUDP CE类。所不同的是,在SerVer端维护了一个链表结构,链表中存放着所

有与PDA通信的CUDP CE类的对象。

CUDP CE类提供了Open方法用于打开UDP服务,同时Open方法参数里

指定了UDP本地端口、UDP远程IP地址和UDP远程端口。执行Open方法, 系统创建一个单独的线程RecvThread,在RecvThread线程中通过select事件模 型来检测UDP事件,这里主要包括数据到达事件和UDP发生错误事件。 Close方法用于关闭已打开的UDP服务。 SendData方法用于向远程发送数据。

ReSendBuf方法用于在超时后向远程重发缓冲区中的数据。 ParsePackage方法用于将接收到的数据包进行包头和包尾校验。

HandlePackage方法用于处理在ParsePackage方法中校验合格的数据。即根 据数据包的类型,按照协议内容进行相应处理。

CUDP CE类中还定义了四个回调函数接口:UDP发送数据事件、UDP接

收数据事件、UDP发生错误事件和uDP返回测试结果事件。 定义UDP传输数据包结构为:

为了更形象的说明该协议的工作过程,本文利用图表的形式说明了在该协议 在实际应用中的工作过程,具体内容见图6.2

首先,参与测试的PDA会向serVer发送申请加入测试系统的消息,并等待 serVer对此消息的ACK包,若在此之前定时器超时则重发申请信息。 当SerVer收到所有PDA的申请加入信息后,发送开始信息。

PDA接收到消息后开始红外激光通信系统的通信,每个PDA负责记录各自 的通信信息,在整个通信过程中PDA与Server之间不进行数据交互。 任何一个PDA都可以通过向SerVer发送结束信息来终止本次通信。SerVer 接收到结束信息后会将该信息转发给系统中的所有PDA,并在收到所有其他 PDA的ACK后,再ACK发起结束信息的PDA。

所有的PDA都在测试结束后将自身记录的结果返回给SerVer,由SerVer做最

48

第六章红外激光通信系统应用层程序设计与实现

终统计。通信过程结束

PDAl

; serv盯| PDA2

‰_∞#__∞___m__懒自w__m__M《%-%%___∞___*钿____%___·#_#__酬

r ACK ACK—‘——~● i

i 耳掐渭撞耳始诵信

F=_~-P—赢/’

i ACK

|

| 。鉴k—/

6.3本章小结

图6.2自定义UDP协议工作过程流图

本章主要介绍红外激光通信系统应用层程序的设计与实现过程,本文提出的 基于UDP的自定义协议是一种折衷的方案,在室外环境无线射频干扰很强烈, 系统中的移动设备如AP,PDA的功率相对较小的情况下。uDP协议可以节省通 过三次握手建立的连接的时间开销,提高系统的实时性。另外由于开发时间的需 要,选择了实现起来相对容易的UDP协议,这一点也被列在下一步的工作之中。

49

第七章红外激光通信系统性能测试

第七章红外激光通信系统性能测试

7 1红外通信测试

在本节测试中,主要测试两部分,一是红外调制电路生成的波形是否符合设 计要求,二是测试红外激光接收模块是胥可以正确的接收数据。 首先,利用示波器测试红外调制模块输山波形,将示波嚣接GND,探针l 测试T2集电极,探针2测试Tx线。当有按键按下时,得到图7·J的输出波形:

---..........................。——————一

1j】H1

图7.】红外调制模块调制波输出波形

波形图中,上半部分是探针l的输出波形,即经红外调制模块调制的38kHz 调制波,下半部分为探针2的输出波形,即由ARM系统输出到红外调制模块, 未经调制的2 4kH2信号。通过观察发现,未调制信号的高电平部分.调制波为 低电平,即没有信号输出,反之,在未调制信号的低电平部分,调制波输出高频 脉冲信号,经L文4 2 1小节测试,脉冲频率为38kHz。凼此,可以得出结论, 红外调制模块工作正常,其实际工作状态符合设计要求,即信号低电平有效,调

第七章红外激光遥信系统性能测试

制频率38k}Iz。

在确定了红外调制模块输出的正确性后,下一步工作是确认红外解调模块是 否可以正确地接收数据,由于通过波形图不容易确认,本文通过计算机中的超级 终端,将接收模块通过自制的串口转换设备连接到笔记本,用以确认数据的正确 性。

在测试中,发送端输H{0a】b69h69俩9曲laO.接收端通过超级终端接收到的

数据如图7—2所示·

}\Ⅻs4*‘

‘=二} t

’。- ’ ‘‘

图7.2红外解调模块接收数据图

经过多次测试,得出结论红外解调模块可以正确的接收由发送端传送过来的 数据。整个红外通信模块符合设计要求,可以正常使用。

7 2系统整体测试

作为红外激光通信系统的应用之一,本文选择了真人实景游戏测试过程作为 对本系统整体功能验证的依据。

真人实景游戏是将本文中开发的ARM主板,红外调制模块,红外激光管等 整合到玩具枪中如图7.3所示,将红外解调模块等设各整合到迷彩服中,从而形 成T发送端和接收端。

∞㈨i㈣i∞㈨∞。∞㈨∞”㈣o。㈨

第七章红讣激光通信系统性能测试

图7-3真人实景游戏玩具枪内部结构阁

发送端发送本人的ID信息到接收端,以此代表接收端被ID所代表的发送端 所击中。由此可见,真人寅景游戏只是将本系统封装在玩具中,基本思想和本系 统完全一致,因此,真人实景游戏的测试过程完全可以代表本系统的测试过程, 现将真人实景游戏的测试过程详述如下;

游戏开始前,首先玩家3,9通过PDA申请游戏任务,服务器接收到该申请, 发送应苔信息并在发送开始游戏标志,玩家l 2游戏开始。在游戏过程中,当 方玩家接收到另一玩家发送过来的JD信息,代表被击中,蜂鸣器报警,在PDA 上显示发送方玩家的ID信息,当一方累计被击中l 0敬,蝣戏结束,在服务器上 显示统训信息,整个游戏实景测试过程如图7-4~罔7—6所示。

第七章红外檄光通信系统件能测试

图7.4玩家申请任务 图7.5玩家被击中,失败

第七章红外激光通信系统性能测试

而丽砸臣

i丽四

丽F—:


毕业设计(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:普通物理上

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

马上注册会员

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