串口数据包处理

上传人:s****a 文档编号:169726315 上传时间:2022-11-17 格式:DOCX 页数:7 大小:16.60KB
收藏 版权申诉 举报 下载
串口数据包处理_第1页
第1页 / 共7页
串口数据包处理_第2页
第2页 / 共7页
串口数据包处理_第3页
第3页 / 共7页
资源描述:

《串口数据包处理》由会员分享,可在线阅读,更多相关《串口数据包处理(7页珍藏版)》请在装配图网上搜索。

1、如何在串口通讯程序中处理数据包摘要Zigbee技术是随着工业自动化对于无线通信和数据传输的需求而产生的,Zigbee网 络省电、可靠、成本低、容量大、安全,可广泛应用于各种自动控制领域。Zigbee的由来:在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在 许多缺陷。对工业,家庭自动化控制和遥测遥控领域而言,蓝牙技术显得太复杂,功耗大, 距离近,组网规模太小等,而工业自动化对无线通信的需求越来越强烈。正因此,经过人们 长期努力,Zigbee协议在2003年中通过后,于2004正式问世了。Zigbee是什么:Zigbee是一个由可多到65000个无线数传模块组成的一个无线数传网络平

2、 台,十分类似现有的移动通信的CDMA网或GSM网,每一个Zigbee网络数传模块类似移动网 络的一个基站,在整个网络范围内,它们之间可以进行相互通信;每个网络节点间的距离可 以从标准的75米,到扩展后的几百米,甚至几公里;另外整个Zigbee网络还可以与现有的 其它的各种网络连接。例如,你可以通过互联网在北京监控云南某地的一个Zigbee控制网 络。不同的是,Zigbee网络主要是为自动化控制数据传输而建立,而移动通信网主要是为语音 通信而建立;每个移动基站价值一般都在百万元人民币以上,而每个Zigbee基站却不到 1000元人民币;每个Zigbee网络节点不仅本身可以与监控对对象,例如传感

3、器连接直接进 行数据采集和监控,它还可以自动中转别的网络节点传过来的数据资料;除此之外,每一个 Zigbee网络节点(FFD)还可在自己信号覆盖的范围内,和多个不承担网络信息中转任务的 孤立的子节点(RFD)无线连接。每个Zigbee网络节点(FFD和RFD)可以可支持多到31个的传感器和受控设备,每一个传 感器和受控设备终可以有8种不同的接口方式。可以采集和传输数字量和模拟量。Zigbee技术的应用领域:Zigbee技术的目标就是针对工业,家庭自动化,遥测遥控,汽车 自动化、农业自动化和医疗护理等,例如灯光自动化控制,传感器的无线数据采集和监控, 油田,电力,矿山和物流管理等应用领域。另外它

4、还可以对局部区域内移动目标例如城市中 的车辆进行定位。(成都西谷曙光数字技术公司的专利技术)。通常,符合如下条件之一的应用,就可以考虑采用Zigbee技术做无线传输:1. 需要数据采集或监控的网点多;2. 要求传输的数据量不大,而要求设备成本低;3. 要求数据传输可性高,安全性高;4. 设备体积很小,不便放置较大的充电电池或者电源模块;5. 电池供电;6. 地形复杂,监测点多,需要较大的网络覆盖;7. 现有移动网络的覆盖盲区;8. 使用现存移动网络进行低数据量传输的遥测遥控系统。9. 使用GPS效果差,或成本太高的局部区域移动目标的定位应用。Zigbee技术的特点:省电:两节五号电池支持长达6

5、个月到2年左右的使用时间可靠:采用了碰撞避免机制,同时为需要固定带宽的通信业务预留了专用时隙,避 免了发送数据时的竞争和冲突;节点模块之间具有自动动态组网的功能,信息在整个Zigbee 网络中通过自动路由的方式进行传输,从而保证了信息传输的可靠性。时延短:针对时延敏感的应用做了优化,通信时延和从休眠状态激活的时延都非常 短。网络容量大:可支持达65000个节点。安全:ZigBee提供了数据完整性检查和鉴权功能,加密算法采用通用的AES-128。 高保密性:64位出厂编号和支持AES-128加密Zigbee的发展前景:Zigbee技术和RFID技术在2004年就被列为当今世界发展最快,市场前景最

6、广阔的十大最 新技术中的两个。关于这方面的报道,你只需在百度,或GOOGLE搜索栏中键入Zigbee, 你就会看到大量的有关报道。总之,今后若干年,都将是Zigbee技术飞速发展的时期。Zigbee技术在我国的应用情况:尽管,国内不少人已经开始关注Zigbee这们新技术,而且也有不少单位开始涉足Zigbee 技术的开发工作,然而,由于Zigbee本身是一种新的系统集成技术,应用软件的开发必须 和网络传输,射频技术和底层软硬件控制技术结合在一起。因而深入理解这个来自国外的新 技术,再组织一个在这几个方面都有丰富经验的配套的队伍,本身就不是一件容易的事情, 因而,到目前为止,国内目前除了成都西谷曙

7、光数字技术有限公司,真正将Zigbee技术开 发成产品,并成功地用于解决几个领域的实际生产问题而外,尚未见到其它报道。Zigbee和现有移动网(GPRS,CDMA-1X)的比较:1. 无网络使用费:使用移动网需要长期支付网络使用费,而且是按节点终端的数量计算的, 而Zigbee没有这笔费用;2. 设备投入低:使用移动网需要购买移动终端设备,每个终端的价格在人民币1000元上 下,而使用Zigbee网络,不仅Zigbee网络节点模块(相当于基站)费用每只人民币不到 1000元,而且,主要使用的网络子节点(相当于手机)的价格还要低得多;3. 通信更可靠:由于现有移动网主要是为手机通信而设计的,尽管

8、CDMA-1X和GPRS可以 进行数据通信,但实践发现,不仅通信数率比设计速率低很多,而且数据通信的可靠信也存 在一定的问题。而Zigbee网络则是专门为控制数据的传输而设计的,因而控制数据的传输 具有相当的保证。4. 高度的灵活性和低成本:首先,通过使用覆盖距离不同,功能不同的Zigbee网络节点, 以及其它非Zigbee系统的低成本的无线收发模块,建立起一个Zigbee局部自动化控制网,(这个网络可以是星型,树状,网状及其共同组成的复合网结构)再通过互联网或移动网与 远端的计算机相连,从而实现低成本,高效率的工业自动化遥测遥控;5. 比起现有的移动网来,尽管Zigbee仅仅只是一个局域网,

9、覆盖区域有限,但它却可以 与现有的移动网,互联网和其它通信网络相连接,将许多Zigbee局域网相互连成为一个整 体。有效的解决移动网的盲区覆盖问题:我们知道,现有移动网络在许多地方存在盲区,特 别是铁路,公路,油田,矿山等野外,更是如此。而增加一个移动基站或直放站的费用是相 当可观的,此时使用Zigbee网络进行盲区覆盖不仅经济有效,而且往往是现在唯一可行手 段。Zigbee与现有数传电台的比较:在串口通讯程序中,经常要收到数据包,常有网友问及如何从这些数据包中提取需要的数据, 如何处理校验等,在这篇文章里我举两个例子予以说明,程序说明为VC+6.0。关于串口编 程建立程序的细节,请参阅我主页

10、上的其它文章。同时,此文也适于其它通讯程序中艰数据 报文的处理。首先,应该指出的是,所有这些处理均在串口事件处理函数oncommunication()中进行。 每当串口缓冲区中有一个或一个以上字符时触发串口通讯事件,该事件就驱动(调用)串口 事件通讯处理函数oncommunication(),在这里就可以对接收到的数据进行处理,提取需要 的数据。举两个例子,一个是较为简单的位数据格式的处理,另一个是NMEA无线通讯格式的处理, 最后回答一位网友提出的问题,大家也可以探讨一下。1问题:一个数据包,其串头为一个字符,字符值为7EH (16进制),其后紧跟一字符E,然 后是数据串,串尾也为字符值为7

11、EH的一个字符:即Exxxxxx.如何处理这些数据? 我们仍以串口调试助手源程序及其详细编程过程之一中的OnComm()处理为例: void CSCommTestDlg:OnComm()/ TODO: Add your control notification handler code hereVARIANT variant_inp;COleSafeArray safearray_inp;LONG len,k;BYTE rxdata2048; /设置 BYTE 数组 An 8-bit integerthat is not signed.CString strtemp;if(m_ctrlComm

12、.GetCommEvent() =2) /事件值为2表示接收缓冲区内有字符 /以下你可以根据自己的通信协议加入处理代码varia nt_ inp二m_c tr lComm.Ge tlnput(); /读缓冲区 safearray_inp=variant_inp; /VARIANT 型变量转换为 ColeSafeArray 型变量 len=safearray_inp.Ge tOneDimSize(); /得到有效数据长度for(k=0;klen;k+)safearray_inp.GetElement (&k,rxdata+k);/转换为 BYTE 型数组 for(k=0;klen;k+) /将数

13、组转换为Cstring型变量BYTE bt=*(char*)(rxda ta+k); /字符型strtemp.Format(%c,bt); /将字符送入临时变量strtemp存放m_s trRXDa ta+=s trt emp; /加入接收编辑框对应字符串,在这儿,编辑框不是必须的,可做 相应处理char ch=(char)bt;辻(ch=E)/在此处设置一个可以接收数据的全局标志,说明接收到数据前的E标志了,下一步可 以读数据了,同时将m_strRXData清空flag=2;m_s tr RXDa ta.Emp ty(); /下一次接收的便为有用的数据if(ch=0x7e)flag=1; /

14、下面可以提取数据了if(flag=1) /标志为 1,./提取数据flag=0; /提取完后,置标志为0/Upda teDa ta(FALSE); /更新编辑框内容 2 NMEA无线通讯格式的处理2.1 NMEA-0183报文格式字符串(ASCII字符)格式如下: $XXXX,XX,XX,XX, 卡 hhCRLF $:串头XXXX:串头XX:数据字段,字母或数字XX:数据字段,字母或数字XX:数据字段,字母或数字 ,:逗号 *:星号,串尾hh: $与*之间所有字符代码的校验和,(注意:校验和h为半Byte校验,*后第1个h表 示高4位校验和,第2个h表示低4位校验和。得到校验值后,再转换成AS

15、CII字符。) : 0DH,回车控制符: 0AH,换行控制符2.2校验处理由于数据是动态接收,所以数据的处理也是动态进行,尽管有时会收到几个字符才触发一个 串口事件,但字符的接收是一个一个接收的,因此就可以在程序中先判断串头$是否到达, 若串头到达,就可以开始计算校验,直至串尾*到达,这时*号后面的两个字符就是校验码, 收到这两个校验字符,就可以与自己计算的校验值比较,若不正确,就报错,并继续处理下 面的数据,若正确,则处理接收的字符,提取需要的数据。2.3程序CString m_strReceived;CString m_strChecksum;int flag;char ch为每次收到的字

16、符 m_strReceived += (char)ch; switch(ch)casechecksum=O; /开始计算 Checksumflag=O;break;case * :flag=2;c2二checksum & OxOf; c1=(checksum 4) & OxOf); 辻(c1 10) c1+= O; else c1 += A 10; 辻(c2 10) c2+= O; else c2 += A 10; break;case CR:break;case LF:m_s tr Receivedpo rtT .Emp ty();break;default:辻(flag0)m_strChe

17、cksum += ch;if(flag=1)strCheck=strCheck+cl+c2;if(strCheck!二m_strChecksum)m_s tr Received.Emp ty();elsestrlnstruction=m_strReceivedportT.Left(6); 辻(s trins true tion二=$QGOKU) /如果串头正确 char *t emp=(char*)(LPCTSTR)m_s tr Received);/转换 int speed=(atoi(temp+7);/ 提取 int 型数据 char splevel=*(temp+25); /提取 cha

18、r 型数据m_s tr Checksum.Emp ty();flag-;elsechecksum二checksumch;break;3网友的问题另外,我回答了一位网友的问题,大家也可以探讨一下:问题如下3:我用你的串口程序收来的十六进制数据是这个样的:00 10 10 C0 00 F0 F0 AB AC AD我现在要将高四位取出来,也就是011C0FFAAA(这点我不会,但我用Left实现了,可得到的是字符,不是我要的数值)我只要011C0FF.我要把011C0FF进行如下的处理011转化成十进制C不变0FF也变成十进制后显示,成17 C 255答:右移得到011C0FF后,可将其放在一个字符

19、型变量CString m_strReceive中:然后将其转换:char *temp=(char*)(LPCTSTR)m_strReceive;char tbuf6; /temporary viabletbuf0= templ; tbuf1= temp2; tbuf2= temp3; tbuf3=0; /011 最后为 0 表示 结束int data1=atoi(tbuf);char chdata2二二temp4; /Ctbuf0=temp5; tbufl=temp6; tbuf2二temp7; tbuf3=0;int data3=atoi(tbuf); /0FF以上datal,chdata2,data3即为你要的数据

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!