查看: 473|回复: 5

[未解决] Arduino软件串口接收数据有部分错误

[复制链接]

该用户从未签到

发表于 2019-4-15 17:48 | 显示全部楼层 |阅读模式
使用Arduino的软件串口,因为软件串口默认缓冲数据大小为64,但接收的数据大概有100个,所以在头文件改了#define _SS_MAX_RX_BUFF 256 // RX buffer size
接收的100多个字节中,有5个左右是错的,要么大了1,要么小了1,怎么解决?求大神帮助
1555321649(1).png

该用户从未签到

 楼主| 发表于 2019-4-15 17:51 | 显示全部楼层
图片中上面的数据是用USB转TTL串口助手从中间调出来的
下面的数据是Arduino接收并打印出来的数据
接收到的数据未进行任何处理,只是打印出来

该用户从未签到

发表于 2019-4-15 18:58 | 显示全部楼层
你有USB转TTL的小板吗?

该用户从未签到

 楼主| 发表于 2019-4-16 08:58 | 显示全部楼层
cluse 发表于 2019-4-15 18:58
你有USB转TTL的小板吗?

有的,图片中上面的数据就是USB转TTL输给串口助手的数据,下面的是Arduino接收到的数据

该用户从未签到

 楼主| 发表于 2019-4-16 17:01 | 显示全部楼层
有前辈帮忙解决啦!原因是串口接收一段数据可能需要多次进入串口读取函数里(一段数据分成多个小段,不是单个字节),当第一小段串口读取后如果打印数据,就会影响下一次的接收,影响累积后,当这段数据接收完成就会对个别数据造成影响。所以要把所有打印都关掉,确认数据接收完毕再打印

该用户从未签到

发表于 2019-4-16 20:20 | 显示全部楼层
寮寮HHJ 发表于 2019-4-16 08:58
有的,图片中上面的数据就是USB转TTL输给串口助手的数据,下面的是Arduino接收到的数据 ...

用SerialPassthrough的例子,把里面的串口改为软串口。

电脑端用串口调试工具定时发送,看回传的信息,就知道误码率又多高了。
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

热门推荐

OLED 128*64自制可达10000000个选项的菜单(已更新)
OLED 128*64自制可达10000
OLED 128*64自制可达10000000个选项的菜单 温馨提示: 建议占个楼再食用本帖子
【原创】全球最小口袋3D打印机mini one直播教程贴
【原创】全球最小口袋3D打
最近闲得蛋疼,没事搞个掌上3D打印机,先放效果图吧。 简介: 采用低导程15mm丝
图表功能好像用不了
图表功能好像用不了
情况是这样,之前做好了一个 温度计,今天做另外一个的时候发现一样的代码写进去但是
Mac连上Arduino,为什么在开发版信息中显示BN:未知的开发板
Mac连上Arduino,为什么在
温湿度DHT11+LCD1602
温湿度DHT11+LCD1602
(本人常年潜水,最近做一个小东西,有兴趣的小伙伴可以做一做) 利用 DHT11 + LCD160
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
快速回复 返回顶部 返回列表