【技术实现步骤摘要】
一种SLIP协议数据的处理方法
[0001]本专利技术属于软件领域,具体涉及一种SLIP协议数据的处理方法。
技术介绍
[0002]在某型系统中,各设备之间的通讯方式采用UART串行数据通讯。由于UART通讯方式的校验和检错能力有限,为保证每一包原始数据顺利可靠地从一个设备传输到另一个设备,设备之间在此基础上采用简单可靠的SLIP协议进行通讯。为此需要在软件方面实现SLIP协议数据的接收与解析。SLIP是一个简单的面向字符的协议。在每个用户信息帧的首尾各加一个特殊的标志字节END,封装成为SLIP帧,如图1所示。标识字节END的编码为(0xC0)。
[0003]在发送的数据帧时,SLIP协议将进行转义工作:帧中0xC0字节换成0xDB,0xDC;帧中0xDB字节换成0xDB,0xDD。在接收数据帧时,SLIP协议对帧中的数据做相反的转义工作,即将0xDB,0xDC换成0xC0,将0xDB,0xDD换成0xDB。
[0004]然而,现有技术中接收数据帧时由于存在多种异常情况,接收鲁棒性不高。
专利技术内 ...
【技术保护点】
【技术特征摘要】
1.一种SLIP协议数据的处理方法,其特征在于,该方法包括如下步骤:S21、从硬件FIFO接收缓存里读取硬件已收到的缓存字节个数,并将数据临时保存到软件缓存A中,当连续时间T没有接收到数据时,清空软件缓存B已接收数据;S22、在缓存A从第一个字节开始逐个寻找0xC0字节,在找到的第1个0xC0字节不是第一个字节时,舍弃0xC0字节前的字节;当有两个连续0xC0字节时,判定为1个0xC0字节;S23、找到0xC0字节后,开始寻找下一个0xC0字节,并设定最多寻找M个字节,当超过M长度且还未找到0xC0时,软件退回未找到0xC0状态,重新找第一个0xC0字节;寻找下一个0xC0的同时,软件将每个字节复制到软件缓存B中;S24、当找到第2个0xC0字节时,将第1步保存的软件缓存A剩余未解析的字节搬移到缓存开头,重新计算软件缓存A字节个数,供下一次执行第S22步使用;至此软件缓存B已经保存一个完整的SLIP帧;S25、将软件缓存B中的字节按SLIP协议的要求进行转化,即将0xDB和0xDC相邻字节转化为0xC0,将0xDB和0xDD相邻字节转化为0xDB,并将转化后的字节全部存放在软件缓存C中;S26、软件缓存C中保存数据即为成功解析的原始数据;根据第S24步重新计算软件缓存A字节个数返回执行第S22步,如此在第S22步至第S26步循环执行,直到软件缓存A字节个数为0,即本次从硬件FIFO缓存中读取的所有数据都被处理,退出本次接收操作;并在软件下一周期重新从第S21步执行。2.如权利要求1所述的SLIP协议数据的处理方法,其特征在于,所述SLIP帧的发送方法包括如下步骤:S11、将保存在无符号单字节数组里的原始数据逐个字节搬移到发送缓存数组里,在搬移的过程中,对每个字节进行判断,当不是0xC0和0xDB时原样搬移;当它为0xC0时,用0xDB和0x...
【专利技术属性】
技术研发人员:孙继平,
申请(专利权)人:天津津航计算技术研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。