本发明属于通信技术技术领域,具体涉及字节流通信的数据包分包方法。
背景技术:
在字节流通信中,目前的数据包分包方法存在高耗能的缺点,不利于资源节约。
技术实现要素:
为了解决上述问题,本发明提供一种字节流通信的数据包分包方法,所述步骤包括:区分包头;发送方打包;接收方解包。
优选地,所述区分包头方法包括:对帧间隔进行区分。
优选地,所述发送方打包方法包括:利用帧间隔字节的剩余bit和额外增加的字节的剩余bit来存放数据长度、校验码、载荷数据等字节中的标志位。
优选地,所述接收方的解包方式为:利用帧间隔字节标志位的唯一状态区别出一个数据包,利用存放标志位的字节来还原载荷及其他辅助数据。
优选地,所述发送方打包方法步骤包括:
缓冲区第9字节赋值为零,取6个字节载荷(待发数据)的bit7填入缓冲区第9字节的bit0~5;
计算源载荷数据6字节的异或校验,将校验码的bit7填入发送缓存的第9字节的bit6,置校验码bit7为0并填入缓存区第8字节;
将6个字节载荷的bit7置0然后依次填入缓冲区的第2~7字节;
根据需要生成包头然后发送。
优选地,所述接收方的解包方式步骤包括:
步骤1:当收到bit7为1的字节并且地址符合时认为是包头存入接收缓存;
步骤2:继续接收8个bit7为0的字节存入缓存,若后续字节存在bit7为1的情况视为通信出错回到步骤1;
步骤3:利用第9字节还原载荷以及校验码,校验第2~7字节,如果校验失败回到步骤1;校验成功,得到发送方的指令。
本发明的方法是可以连续或者间断发送的,没有时间限制;由于不需要严格的时序控制,可以节省cpu资源,例如定时器;由于不需要延时,也提高了带宽利用率。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实施方式对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。
本发明提供了一种字节流通信的数据包分包方法,所述步骤包括:
区分包头;发送方打包;接收方解包。
举例约定(不限于这种方式):定长数据包(9字节)。约定每个字节首位(bit7)为包头标志位,为1表示包头,其他数据的标志位为0.
包头
首字节为包头,其标志位为1;从机使能:bit0~3的值1~4分别代表驱动器1~4,0表示群发,5表示主机;从机回复使能:bit4~6的值表示允许对应的1~4号驱动器对这条命令进行回复,等于0时不允许任何从机回复(只有对应从机接收了该命令且从机回复使能等于该从机编号时才会回复)。
载荷数据
第2~7个字节为源载荷数据bit7置0后的数据。
校验
源载荷数据的依次按位异或的值且bit7置0。
前7字节的bit7
bit0为源载荷数据第一字节的bit7,依次……到bit6为源校验值的bit7。
具体地,所述区分包头方法包括:对帧间隔进行区分。
具体地,所述发送方打包方法包括:利用帧间隔字节的剩余bit和额外增加的字节的剩余bit来存放数据长度、校验码、载荷数据等字节中的标志位。
具体地,所述接收方的解包方式为:利用帧间隔字节标志位的唯一状态区别出一个数据包,利用存放标志位的字节来还原载荷及其他辅助数据。
具体地,所述发送方打包方法步骤包括:缓冲区第9字节赋值为零,取6个字节载荷(待发数据)的bit7填入缓冲区第9字节的bit0~5;计算源载荷数据6字节的异或校验,将校验码的bit7填入发送缓存的第9字节的bit6,置校验码bit7为0并填入缓存区第8字节;
将6个字节载荷的bit7置0然后依次填入缓冲区的第2~7字节;
根据需要生成包头然后发送。
具体地,所述接收方的解包方式步骤包括:
步骤1:当收到bit7为1的字节并且地址符合时认为是包头存入接收缓存;
步骤2:继续接收8个bit7为0的字节存入缓存,若后续字节存在bit7为1的情况视为通信出错回到步骤1;
步骤3:利用第9字节还原载荷以及校验码,校验第2~7字节,如果校验失败回到步骤1;校验成功,得到发送方的指令。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化。