cdg 发表于 2025-8-13 09:15:40

ercircle 发表于 2025-8-12 18:58
1L的报文对应哪一行呢,还是和代码对不上,怎么感觉是上位机发送方报文出了问题




就是105行的哪里,我删了一个字节03,当时写重复了。我同事和我说,我修改了。给你的是改过的代码

cdg 发表于 2025-8-13 09:23:33

ercircle 发表于 2025-8-12 18:58
1L的报文对应哪一行呢,还是和代码对不上,怎么感觉是上位机发送方报文出了问题




昨天的串口日志你可以看看。概率极低,就是 2025-08-12 14:12:46.039 那个记录你看一下。前后都是正常的。

ercircle 发表于 2025-8-13 09:51:39

cdg 发表于 2025-8-13 09:23
昨天的串口日志你可以看看。概率极低,就是 2025-08-12 14:12:46.039 那个记录你看一下。前后都是正常的 ...
下位机代码看着没大问题,UART1_SW(UART1_SW_P36_P37);前判断while (busy);,以防RX_flag更新太快这边还没发完就切换引脚

可以给SendUart1末尾添加个while (busy);

上位机收数据逻辑不对,基本的包头检测都没做,错位了都。




这个两包单独的乱码没找到什么规律,检查下硬件连接和外部干扰,拍照看看实物?






cdg 发表于 2025-8-13 10:17:33

ercircle 发表于 2025-8-13 09:51
下位机代码看着没大问题,UART1_SW(UART1_SW_P36_P37);前判断while (busy);,以防RX_flag更新太快这边还没 ...

之前是有错位的问题,我昨天和他说了,调整了。
按道理说我发送模块查询的CC DD 那个指令,等待回复还有50ms,没道理串口没发完。
再退一步说,即使没发完,切换了。也不应该收到那个数据吧(没有一个字节对的上的)?而且这种情况出现二次,收到数据完全一样。(也就是说收到的并不是随机数据),挺奇怪的。

ercircle 发表于 2025-8-13 10:23:29

cdg 发表于 2025-8-13 10:17
之前是有错位的问题,我昨天和他说了,调整了。
按道理说我发送模块查询的CC DD 那个指令,等待回复还有5 ...
等回复有超时,但是遇到RxFlag会立即退出,要考虑粘包和对端串口缓存

可以模拟下,两三包拼接连着发是个什么现象

cdg 发表于 2025-8-13 10:24:17

ercircle 发表于 2025-8-13 09:51
下位机代码看着没大问题,UART1_SW(UART1_SW_P36_P37);前判断while (busy);,以防RX_flag更新太快这边还没 ...

我也是没看出来问题,要不按照你说的先调整看看。确保数据发完先。
页: 1 [2]
查看完整版本: 15W204S切换串口偶发数据异常