情况提要
因为项目需要,我写了一个与上位机通信的程序,用来收发Json数据,本来一切都是好好的,前一天我已经成功通过自由口通讯实现了定时发送Json和接收完成回显Json,第二天因为通用性需要我就针对代码进行了一定的优化,把他更加模块化了,但是针对接收数据部分我是一点都没动的,因为也没必要去动。但是到了第三天来了我发现通过串口助手发送数据并没有数据回显,这无疑是一个bug,所以我当场就对问题进行了排查,因为前一天对代码进行了优化过后因为要下班了,所以就没对其进行测试,但是我又没有备份老版本的代码,所以只能现场去debug了,这是一个很坏的习惯,以后一定要养好随时备份的习惯!!!。
debug过程
在经过简单的问题排查过后,我发现数据是能够正常的接收到数据缓存区SMB2的,但是没办法正常的存放在我指定的字符串缓存区,此时我回头看了一下针对接收的配置,我一个字都没改,怎么可能会出错误呢。
此时我需要将目光放在接收的标志位以及自由口接收数据的配置了,在查询了 自由口通讯的相关标志位后,我发现是自己设置了空闲线导致的,因为设置了5ms的空闲线,导致在接收数据的5ms内的数据全部被忽略了,所以才没办法触发RCV。
但是还有几个疑问让我摸不着头脑: