串口接收问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了串口接收问题相关的知识,希望对你有一定的参考价值。
串口接收中0x55,0xAA,0x3C,0xC3等来作为开始和结束的标志,那如果要接收的数据中刚好有0x55,0xAA,0x3C那该怎么办
我说的接收的数据中刚好有0x55,0xAA,0x3C,0xC3就是指他们出现的顺序和开始和结束标志一样,这时候该怎么处理??
具体的说,我接收的数据里面有起始帧(4字节),命令帧(1字节),数据帧(n字节),和结束帧(4字节)。数据量大,难保数据里面不包含有起始帧,数据帧的长度也可能会是一样的,这些都是不得不考虑的情况。
2,如果你发送接收的数据格式是一样的话,你的数据多长也有规定,在里面规定个数据类型的字节数,我先判断这个类型,然后已知数据长度,根据这个长度直接判断帧尾,如果是我的数据,再根据你的协议,取数据就行了。简单说就是我得到数据后先判断数据类型。 参考技术A 哈哈,如果将55、AA、3C、C3一起使用呢?假设只有满这4个字节的组合条件才算开始和结束,这样就避开在正文中出现这些字节的情况,除非是恰好有4个字节组合成这个序列。
应该是这样:起始-命令-长度-数据-结束
在判断了“起始”、“命令”和“长度”之后,协议就根据“长度”规定的数值接收规定长度的数据而不需要加以判断,这样就避免了在“数据”中又出现了“起始”帧,这样该简单吧?这样的好处就是可以不要“结束帧”。
当然可以使用应答机制,即A向B以上面的协议发送数据之后,B向A返回一个确定ACK,这样保证一次传输的准确。来自:求助得到的回答本回答被提问者采纳 参考技术A “那些该记得的人” tx 说的很详细;
觉得 都是协议里应该考虑的内容!
STM32 串口为啥只能接收发送的部分数据
程序BUG,或者接受缓冲的数组变量满了,不过基本上可以确定是程序问题 参考技术A 这个跟stm32没有关系,跟你的程序有关系。以上是关于串口接收问题的主要内容,如果未能解决你的问题,请参考以下文章
STM32F4 DMA接收串口定长数据,串口每秒来1000个数据,使用DMA-Normal模式
STM32F4 DMA接收串口定长数据,串口每秒来1000个数据,使用DMA-Normal模式