使用W806 接受完数据,调用回调函数HAL_UART_RxCpltCallback 一次只有16字节,如何将一包数据都接收完成呢,有没有相应的demo
查看更多
uart demo里有注释,HAL_UART_Receive_IT接口的最后一个参数,设置了多少,就是接收够多少个字节会进回调函数,如果设置的0,就是不定长。 另外不管什么接口,都有自己的应用层数据包协议格式,可以通过判断包是否完整再解析,不完整就等下一次来数据再解析,这是正常的。
我设置了0不定长,但是每次接收有效数据也是16个字节,多次接收能能把一帧完整的数据接受完。现在的问题是如何把一帧数据接受完呢
可以通过查询这个rxfifo dada timeout中断标志位,再去接收数据,类似空闲中断的用法。
分包合并
发布 问题
分享 好友
手机 浏览
回到 顶部
根据数据包格式,判断是否是个完整的包,不是就等接收完整了再处理。
但是我现在需要对完整的数据包进行处理啊
@feng201272195 数据包里总得有长度吧,根据长度判断不够,那就是还没接收完整呢,等下一次再来数据再判断是否完整。完整了再解析。
我明白这个啊,但是现在每一次16字节 我需要把这16字节进行存储 直到有数据结束符,才算是数据完整。是否有其他的办法呢 我咨询了说可以通过超时定时器去打包解包