21 | Qt5不能获取到串口的数据

1 前提

  • 面对的问题:通过Qt5.4调用串口工具,直接获取数据显示是空,换种思路从接收窗口中获取相应的数据,能正常获取

  • Qt 5.14.2

2 实现方法

2.1 第一种方式

          timer = new QTimer(this);
          timer->stop();             //关闭定时器
          QByteArray buf = buffer;   //读取缓冲区数据
          qDebug()<<"buf"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中进行串口通信接收数据的方法如下所示: 1. 首先,你需要创建一个`QSerialPort`对象,并设置好串口的参数,例如波特率、数据位、校验位等。你可以使用`QSerialPortInfo`类来获取可用的串口列表,并选择一个可用的串口进行通信。 2. 接下来,你需要连接串口的接收信号`readyRead()`到一个槽函数,以便在有数据可读时触发。在槽函数中,你可以使用`readAll()`函数来读取所有可用的数据。 3. 为了确保数据的完整性,你可以考虑在接收时进行校验。校验的方法可以根据你的需求而定,常见的方法包括奇偶校验、CRC校验等。你可以参考你提供的代码中的奇偶校验方法`xorChecksum()`来实现校验。 4. 最后,你可以在接收到数据后对数据进行进一步处理,例如解析数据、显示数据等。 以下是一个示例代码演示了如何在Qt中接收串口通信数据的方法: ```cpp // 在头文件中声明槽函数 public slots: void receiveData(); // 在源文件中实现槽函数 void SerialPort::receiveData() { QByteArray data = m_serial.readAll(); // 在这里对接收到的数据进行处理 // ... // 对数据进行校验 quint8 checksum = xorChecksum(data); // ... // 输出接收到的数据 qDebug() << "Received data:" << data; } // 连接接收信号到槽函数 connect(&m_serial, SIGNAL(readyRead()), this, SLOT(receiveData())); ``` 这样,当串口接收缓冲区中有数据可读时,`receiveData()`函数就会被触发,你可以在该函数中处理接收到的数据。 请注意,上述代码仅为示例,实际使用时,你还需根据自己的需求进行适当的修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值