1、简介
有时候串口接收数据时,没有帧头与帧尾,单纯使用单字节中断接收数据,不太好断帧。如果单纯使用空闲中断接收数据,当帧内数据不连续或者黏包,使用空闲中断接收就会出现接收的数据小于或者大于帧长度,比较难断帧。解决办法
方法1、单字节中断接收+空闲中断
发送命令,等待返回数据,利用单字节中断将接收的数据压入缓存堆栈,当发生空闲中断后,判断缓存里的数据是否达到帧长度,如果是,解析数据,清空缓存;否则继续接收数据,知道达到帧长度,然后解析数据,清空缓存。
方法2、单纯使用空闲中断。
发送命令,等待返回数据,如果产生空闲中断,数据压入缓存堆栈,判断是数据长度是否完成,如果是,解析数据,清空缓存;否则继续接收数据,直到达到帧长度,然后解析数据,清空缓存。
2、配置