作者aaa7513231 (浑沌与秩序)
看板ASM
标题[问题] Arduino Serial port rx 解析资料错误
时间Wed Mar 18 20:51:25 2020
大家好,先感谢前篇回覆热心的大大们
受到Y大的启发,我利用逻辑分析器分析发现不是485晶片的问题
可以参考下图,我直接分析Arduino的Tx与Rx讯号
https://upload.cc/i1/2020/03/18/cO4LC3.png
485晶片回传TTL讯号到Rx这端讯号是正确的
但是Arduino读取时,不知名原因数据错误如下图所示
https://upload.cc/i1/2020/03/18/bwCP31.png
附上我Arduino读取的程式码
https://upload.cc/i1/2020/03/18/IDMrBv.png
Arduino版为 Mega R3
这问题已经完全超出我能力了
要请教大家,这会是什麽问题?
谢谢大家~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.165.197.146 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/ASM/M.1584535887.A.106.html
※ 编辑: aaa7513231 (1.165.197.146 台湾), 03/18/2020 20:53:48
1F:→ alibuda174: 42 32 0 175 231是错的,那正确的数据应是什麽? 03/18 21:01
2F:→ aaa7513231: 可以参考第一张图的Channel 2 应该读到8码 03/18 21:09
3F:→ aaa7513231: 42 3 2 0 239 221 206 03/18 21:09
4F:→ alibuda174: 想不到问题出在哪耶... 请问你的温湿度计是哪个? 03/18 21:55
温湿度计我是用GR8000 这是台湾一家自己生产的,因为我想这不是很重要就一直没说
5F:推 chuegou: 随便猜 while里的 delay(50)拿掉 03/18 22:23
delay我有拿掉,是什麽影响,毕竟收到的资料都已经现存Rx的暂存器了
6F:→ alibuda174: 乱猜 修改通讯参数 9600,N81改成其他的试试 03/18 22:46
8N1也没什麽关系~
7F:→ easypro: 先用个buffer存资料,把printf拿掉,等资料收完再printf 03/19 08:54
8F:→ easypro: 出来,另外delay拿掉。 03/19 08:54
9F:→ easypro: 另外把温度sensor型号列出来,不然谁知道资料是不是正确 03/19 08:57
10F:→ easypro: 的 03/19 08:57
11F:→ easypro: delay是ms等级的,你延迟500会不会w太久了。 03/19 09:03
原本500ms是因为Modbus讯号通常要等300ms以上比较安全我才这样写的~
12F:→ n666160: 大概是Serial的时序跑掉了吧 03/19 18:15
我觉得问题应该就跟N大讲的一样,有错位或时序问题,但我其实不清楚为什麽这样
最後,这问题我改用SoftwareSerial的Serial就可以正常读取
很神奇吧~谢谢大家的热心回覆,我想应该是Serial的底层读取方式有差异
所以导致的问题
谢谢~
※ 编辑: aaa7513231 (1.165.197.146 台湾), 03/19/2020 19:47:24
※ 编辑: aaa7513231 (1.165.197.146 台湾), 03/19/2020 19:49:21
14F:→ easypro: 你怎麽会产生modbus讯号延迟会比较久的错觉,你应该是要 03/20 08:53
15F:→ easypro: 看spec去决定你的接收延迟时间才对。 03/20 08:53
16F:→ smtmike: 接收中怎能用print来浪费时间,更糟的是delay |||^_^ 04/21 22:55