∥判断报头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
》open()
嚣努close()
夔蟹sendData()
沪ResendBufi()
矜Reset()
澄<
凌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—: