【已解决--驱动设计与使用方式差异】tuyaOS模组WBR3 SDK3.5.3串口收发严重BUG

Wi-Fi 设备、Wi-Fi 低功耗设备、Wi-Fi BLE 双模设备、Ethernet设备、Ethernet+Wi-Fi设备等
yangjie
Posts: 209

jafatek 2023年 Feb 10日 10:49

各位专家好; 想了解一下 问题解决的怎么样了? 什么时候能解决? 有没有什么替代方案? 谢谢

经过测试 WBR3 串口数据接收没有问题(Tuyaos 3.5.3),并没有出现数据乱序现象,日志截图如下:

read_log.png

完整日志和测试 demo 如下:

tuyaos_demo_quickstart.zip
(10.16 MiB) Downloaded 185 times
jafatek
Posts: 23

Re: tuyaOS模组WBR3 SDK3.5.3串口收发严重BUG

专家您好 我是两个问题:问题1:就是您这边测试出来的 我一次性发送了20个字节 模块却收了2次 一次1个字节 一次19个字节 如果 我串口发送的频率为100ms 或者更低 会导致接收到的次数和每次的数量不确定 正常应该是我一次性发送了20个字节 模组一次也应该收到20个字节。 问题2: 串口发送会出现乱序 不是接收 模组通过串口发送20个字节的数据 会出现乱序问题 最后一个字节 会出现在下一帧的开头 请知悉 谢谢

愚者千虑必有一得
Posts: 499

Re: tuyaOS模组WBR3 SDK3.5.3串口收发严重BUG

jafatek 2023年 Feb 20日 10:44

专家您好 我是两个问题:问题1:就是您这边测试出来的 我一次性发送了20个字节 模块却收了2次 一次1个字节 一次19个字节 如果 我串口发送的频率为100ms 或者更低 会导致接收到的次数和每次的数量不确定 正常应该是我一次性发送了20个字节 模组一次也应该收到20个字节。 问题2: 串口发送会出现乱序 不是接收 模组通过串口发送20个字节的数据 会出现乱序问题 最后一个字节 会出现在下一帧的开头 请知悉 谢谢

你好,你说的2个问题是吗?
1,串口接收,串口工具一次性发送20字节会分开接受,分别是1,19字节
2,串口发送,模组一次性发送20字节,频率快的话会出现类似粘包的现象?(字节顺序不变,多次发送粘在一起,界限不分?),

愚者千虑必有一得
Posts: 499

Re: tuyaOS模组WBR3 SDK3.5.3串口收发严重BUG

对于第二个问题,如果你发送2次,第一次是"AA BB CC DD EE", 第二次发送 "00 11 22 33 44"。对于工具接收是 "AA BB CC DD " ," EE 00 11 22 33 44"? 还是说"AA BB CC DD EE" ," EE 00 11 22 33 44"?

jafatek
Posts: 23

Re: tuyaOS模组WBR3 SDK3.5.3串口收发严重BUG

你好,你说的2个问题是吗?
1,串口接收,串口工具一次性发送20字节会分开接受,分别是1,19字节
-------》是的!
-------》另外补充,发送频率 大概率 会 分开接收 分别是1,19
如果串口工具发送频率加快(发送间隔100ms或者更低)会发现模组接收的不确定性(不确定模组会分几包来接收这20个字节 每包也不确定时多少字节可能显示接收了3次 可能显示接收了2次 也可能接收了4次)

2,串口发送,模组一次性发送20字节,频率快的话会出现类似粘包的现象?(字节顺序不变,多次发送粘在一起,界限不分?),
-------》是的!
-------》举例:模组发送固定数据 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14
串口工具监测:模组发出的第一帧 大概率 是对的:01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14
模组发出的第二帧 和后面的帧就是错的 14 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13

yangjie
Posts: 209

Re: tuyaOS模组WBR3 SDK3.5.3串口收发严重BUG

jafatek 2023年 Feb 21日 11:06

你好,你说的2个问题是吗?
1,串口接收,串口工具一次性发送20字节会分开接受,分别是1,19字节
-------》是的!
-------》另外补充,发送频率 大概率 会 分开接收 分别是1,19
如果串口工具发送频率加快(发送间隔100ms或者更低)会发现模组接收的不确定性(不确定模组会分几包来接收这20个字节 每包也不确定时多少字节可能显示接收了3次 可能显示接收了2次 也可能接收了4次)

2,串口发送,模组一次性发送20字节,频率快的话会出现类似粘包的现象?(字节顺序不变,多次发送粘在一起,界限不分?),
-------》是的!
-------》举例:模组发送固定数据 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14
串口工具监测:模组发出的第一帧 大概率 是对的:01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14
模组发出的第二帧 和后面的帧就是错的 14 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13

关于问题 2 中(模组发出的第一帧 大概率 是对的,模组发出的第二帧 和后面的帧就是错的)问题,经过测试没有出现这种问题(wbr3, tuyaos 3.5.3)。日志截图和测试代码如下:

wbr3_write.png

文件中包含完整测试代码:发送串口为 串口0

tuyaos_demo_quickstart.zip
(9.83 MiB) Downloaded 131 times
愚者千虑必有一得
Posts: 499

Re: tuyaOS模组WBR3 SDK3.5.3串口收发严重BUG

会出现这样的情况?2个14?

企业微信截图_16769617544994.png
yangjie
Posts: 209

Re: tuyaOS模组WBR3 SDK3.5.3串口收发严重BUG

如果你那里出现 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 14 01 02 这种情况的话,方便的话,麻烦下把相关代码会出现问题的代码提供下,我们看下

jafatek
Posts: 23

Re: tuyaOS模组WBR3 SDK3.5.3串口收发严重BUG

代码如下,主要功能就是在我自己的线程中接收来自云端的dpid的消息 然后通过串口发送出去,我用日志那路串口监测要发送的20个字节的数组 发现我的数组中的数据是没问题的 但是串口工具中看到的模组串口发出来的是有问题的

Attachments
jafaatek_switch_24.rar
(7.73 MiB) Downloaded 140 times
yangjie
Posts: 209

Re: tuyaOS模组WBR3 SDK3.5.3串口收发严重BUG

jafatek 2023年 Feb 22日 09:40

代码如下,主要功能就是在我自己的线程中接收来自云端的dpid的消息 然后通过串口发送出去,我用日志那路串口监测要发送的20个字节的数组 发现我的数组中的数据是没问题的 但是串口工具中看到的模组串口发出来的是有问题的

你的业务代码有点问题,从串口上接收到的数据流你应该根据你的数据帧格式在进行进一步的处理,不能直接认为串口一次接收到的数据就是你发送的一帧的数据。
下面是大致根据你的需求,提供了一个简单的示例,该示例仅供参考

tuyaos_demo_quickstart.zip
(9.86 MiB) Downloaded 159 times

简单测试,电脑上串口工具 20ms 发送一次,接受到一帧,模组再写回到电脑并不会出现丢失数据的情况,日志截图如下:

Snipaste_2023-02-22_16-43-57.png

串口数据帧处理日志如下:

Snipaste_2023-02-22_16-46-49.png
Post Reply