STM32 CAN 多于8字节的拆包组包协议(三)

来源:互联网 发布:java email 发送 编辑:程序博客网 时间:2024/05/22 04:50

无应答分段的发送

事件

条件

动作

发送第一分段

这也是最后一个分段

段计数=0x3f,段类型=第一分段,建立并发送这个信息

随后的段将被发送

段计数=0,段类型=第一分段,建立并发送这个信息段。根据事件栏继续建立/发送

发送“中间”分段(既不是第一个也不是最后一个)

在先前发送的段计数上加1。段类型=中间分段。建立并发送这个信息分段。根据事件栏继续建立/发送。

发送最后一个段

先前已经发送一个或多个分段

段计数值加1。段类型=最后的段。建立并发送这个信息段。根据事件栏继续建立/发送。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

无应答分段的接受

 

事件

条件

动作

接受的分段,段类型=第一分段

段计数=0

如果正在处理以前的分段信息,那么中断上述处理。存储当前段计数及相关的信息段。

段计数=0x3f

如果正在处理以前的分段信息,那么中断上述处理。发送相关的信息数据到应用对象,并复位,以等待下一传输的第一个分段。

段计数不等于0x00或0x3f

如果正在处理以前的分段信息,那么中断上述处理。丢弃分段,并复位,以等待下一传输的第一段。

接受的分段,段类型=中间分段

第一分段还未接收到

放弃该信息段。继续等待第一个分段。

分段计数在数值上比先前接收到的段计数大1

存储这个分段计数及相关的信息段。

分段计数在数值上不比先前接收到的段计数大1。

放弃该分段,并复位,以等待下一传输的第一个分段。

接收到太多的数据。接收到比cosumed_connection_size的属性允许的数据长度还要大的数据。

放弃该分段,并复位,以等待下一个传输的第一个分段。

接收到的分段,段类型=最后一个分段

还未接收到第一个分段。

放弃该信息段。继续等待第一个分段。

分段计数比先前接收到的分段计数大1

向应用对象发送重新组合的信息数据,并复位,以等待下一个传输的第一个段。

分段计数在数值上不比先前接收到的分段计数大1

丢弃此分段,并复位,以等待下一个传输的第一个段。

接收到太多的数据。接收到比cosumed_connection_size的属性允许的数据长度还要大的数据。

丢弃此分段,并复位,以等待下一个传输的第一个段。

接收到的分段,

段类型=分段应答

丢弃此分段,并复位,以等待下一个传输的第一个段。

 

对于拆包组包的代码,稍后奉上。待续。。。。。。。。。。

0 0
原创粉丝点击