立即注册
查看: 756|回复: 9

[问题] MT6261D串口接收的数据一旦超过190字节就收不到了

已绑定手机
已实名认证
发表于 2023-2-1 20:54:28 | 显示全部楼层 |阅读模式 来自 广东省深圳市
MT6261D串口接收的数据内容只能在190字节范围内,超过190字节之外的数据就收不到了?哪位大神帮忙指点一下!!万分感谢。
我知道答案 回答被采纳将会获得5 RD币 已有9人回答

  • 一牛网商城 一牛网直播
已绑定手机
已实名认证
专业2G/3G/4G智能模块核心板,承接方案定制,
手机:18665375912(微信同号)或点下面的黑色字体

深圳市新移科技有限公司
发表于 2023-2-2 13:35:24 | 显示全部楼层 来自 广东省深圳市
估计是BUF的问题吧。。。
兄弟,有什么方式能进一步确诊呀,这问题头疼了好久了。帮帮忙,能搞定这问题,我得当面道谢。  详情 回复
发表于 2023-2-2 17:37

奖励

参与人数 1RD币 +1 收起 理由
lishuping2004 + 1 感谢!!

查看全部评分

已绑定手机
已实名认证
 楼主| 发表于 2023-2-2 17:37:42 | 显示全部楼层 来自 广东省深圳市
jianghuiyan 发表于 2023-2-2 13:35
估计是BUF的问题吧。。。

兄弟,有什么方式能进一步确诊呀:lol,这问题头疼了好久了。帮帮忙,能搞定这问题,我得当面道谢。
已绑定手机
发表于 2023-2-13 13:53:39 | 显示全部楼层 来自 湖南省长沙市
可以用不同长度的数据测试,还有多个数据块间隔发送。 看是你读的长度就是这么大还是缓存这么大。理论上说190这样的数字是不会在底层设计使用的,兴许是超时时间导致的截断。缓存的大小改波特率不会变,其余的自己考虑就是了。
感谢分析!!! 串口数据并非软件读取的,所以不存在读取长度。而是通过电脑端USB串口发送给MTK的数据长度在190字节内,都能被正常推送,超过190字节的话,底层也指推送190字节数据。从底层代码上看确实是限制了长度  详情 回复
发表于 2023-2-13 20:55
已绑定手机
已实名认证
 楼主| 发表于 2023-2-13 20:55:54 | 显示全部楼层 来自 广东省深圳市
rensuiyi 发表于 2023-2-13 13:53
可以用不同长度的数据测试,还有多个数据块间隔发送。 看是你读的长度就是这么大还是缓存这么大。理论上说1 ...

感谢分析!!! 串口数据并非软件读取的,所以不存在读取长度。而是通过电脑端USB串口发送给MTK的数据长度在190字节内,都能被正常推送,超过190字节的话,底层也指推送190字节数据。从底层代码上看确实是限制了长度,如果要改的话涉及底层代码的的部分太多了,连内存部分都要改,担心改出问题来,因此不敢盲目去改,如果有遇到同样问题的大神,希望给予指点,看能否通过最简单的修改解除这种长度限制。
加协议分帧就是了  详情 回复
发表于 2023-2-15 13:43
已绑定手机
发表于 2023-2-15 13:43:53 | 显示全部楼层 来自 湖南省长沙市
lishuping2004 发表于 2023-2-13 20:55
感谢分析!!! 串口数据并非软件读取的,所以不存在读取长度。而是通过电脑端USB串口发送给MTK的数据长 ...

加协议分帧就是了
是的,现在用的就是分帧,还有个更恐怖的问题,发送HEX数据只要出现连续的00 就自动断了,无奈只能换成ASCII模式发送,导致字节数超长了,于是触发了190字节截断的问题。 所以我觉得还得从源头上解决00断数据的问题  详情 回复
发表于 2023-2-15 14:16
已绑定手机
已实名认证
 楼主| 发表于 2023-2-15 14:16:28 | 显示全部楼层 来自 广东省深圳市
rensuiyi 发表于 2023-2-15 13:43
加协议分帧就是了

是的,现在用的就是分帧,还有个更恐怖的问题,发送HEX数据只要出现连续的00 就自动断了,无奈只能换成ASCII模式发送,导致字节数超长了,于是触发了190字节截断的问题。 所以我觉得还得从源头上解决00断数据的问题。
可以base64编码,不需要ascii  详情 回复
发表于 2023-2-15 14:33
已绑定手机
发表于 2023-2-15 14:33:46 | 显示全部楼层 来自 湖南省长沙市
lishuping2004 发表于 2023-2-15 14:16
是的,现在用的就是分帧,还有个更恐怖的问题,发送HEX数据只要出现连续的00 就自动断了,无奈只能换成AS ...

可以base64编码,不需要ascii; 核心问题驱动不能改的话,上层基本也就这样了。
已绑定手机
资料通过chatgpt查找,仅供各位参考
发表于 2023-2-23 19:06:16 | 显示全部楼层 来自 广东省深圳市
这种情况可能是由于串口缓冲区溢出所导致的。串口缓冲区是一个固定大小的缓存区,用于临时存储串口接收的数据。当串口接收的数据量超过了缓冲区的大小,就会出现缓冲区溢出的现象,从而导致后续的数据无法被接收。
在你的情况下,MT6261D 通过电脑端 USB 串口发送的数据长度在 190 字节内没有问题,但一旦超过了 190 字节就无法接收了,这很可能是由于串口缓冲区溢出所导致的。为了解决这个问题,你可以尝试以下几种方法:
  • 增加串口缓冲区的大小:可以尝试修改串口驱动程序或者串口控制器的设置,增加串口缓冲区的大小,从而使其能够缓存更多的数据。
  • 减少数据传输速率:可以尝试减少数据的传输速率,从而降低串口接收的数据量,避免缓冲区溢出。
  • 优化代码逻辑:可以检查代码逻辑是否存在问题,如是否存在死循环等,优化代码逻辑,避免过多的数据被发送到串口缓冲区中。

总之,通过调整串口缓冲区大小、减少数据传输速率或者优化代码逻辑等方法,可以有效解决串口缓冲区溢出的问题。
已绑定手机
发表于 2024-3-15 14:11:31 | 显示全部楼层 来自 湖南省长沙市
大佬,,请教下串口咋搞啊,我也要调个串口,协议都调不通
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
微信客服扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表