嵌入式爱好者

查看: 2472|回复: 1

[Linux] 串口能正常发指令,但是收不到返回值

[复制链接]

5

主题

12

帖子

48

积分

A40i/T3/T507/T527通行证i.MX8MM通行证

扫一扫,手机访问本帖
发表于 2023-6-14 18:39:30 | 显示全部楼层 |阅读模式
使用QserialPort开发串口软件,能正常发指令,但是serial.readall函数无法获取返回值
回复

使用道具 举报

0

主题

51

帖子

111

积分

发表于 2023-6-15 09:43:13 | 显示全部楼层
您好,关于qt应用开发这方面我们了解的也不太多,我给您在网上找了一些排查方法,您可以参考一下。
1.延迟问题:串口通信是异步的,发送指令后需要等待一定时间来接收返回值。请确保在发送指令后适当地延迟一段时间再尝试读取返回值。您可以使用 QThread::msleep() 函数来添加延迟。

2.数据接收方式:QSerialPort 提供了多种接收数据的方式,包括 readAll()、readLine()、read() 等。确保您使用的接收函数与目标设备的返回数据格式相匹配。例如,如果目标设备每次返回的数据以换行符结尾,你可以使用 readLine() 来读取一行数据。

3.数据读取时机:确保在发送指令后等待足够的时间以确保返回值已经完全接收。您可以使用 waitForReadyRead() 函数等待数据的到达,然后再进行读取操作。

4.数据处理方式:确认接收到的返回值不为空,并使用适当的方式处理和解析数据。您可以使用字符串操作函数、正则表达式或其他方法来提取和解析所需的数据。
点评回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-11-22 13:46

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表