COBSforToN一种用于串行通讯的高效编码算法

在串行通讯中,COBS(Consistent Overhead Byte Stuffing)提供了一种避免特殊字符冲突并保持固定开销的编码方案。相比ASCII转换和时间间隔分帧,COBS能提高效率并确保实时性。文章介绍了COBS的基本原理,并提供了算法源码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        一般用串口进行数据通讯时,我们会在发送端(master)把传输的数据流按照一定的规则划分成数据帧进行传输,接收端(client)根据约定好的规则将接收的数据流分帧解析执行。传统的方式主要有两种:

        1、首先将传输的数据转化成ASCII码形式(这样实际传输的数值范围被锁定在0x30~0x7a之间),然后在数据的前后加上特定的字节数据(比如0x02'STX',0x03'ETX'),形成一帧数据。这样可以保证帧头帧尾的标志字节不会和实际数据内容重合,分帧解析变得非常容易,只要找到相应的帧头、帧尾即可。这种方式有个弊端,把数据转化成ASCII时,转化后的数据长度是转化前的2倍,效率非常低下,这对于实时性要求高(比如485总线通讯中有多个从机的时候)的应用,有时无法满足要求。

        2、通过控制发送字节的时间间隔进行分帧,modbus中也叫RTU模式。发送端精准控制每个字节的发送时间,一般两个字节之间的发送间隔为一个传送字节时间(具体跟波特率有关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值