演示Qt串口接收的QByteArray类型数据存入uint类型的数组中,并更新到float和double类型的变量中

Qt软件Qwidget基类设计一个串口调试软件,写一个程序用于演示将串口将接收到的QByteArray类型的数据依次存入uint类型的数组中,并通过qDebug()打印出数组中的数据,然后将数组里面前三个元素赋值给float类型的x、y、z,并打印出x、y、z的值。另外将数组里面前三个元素分别左移16bit,8bit,0bit后相加得到的结果再赋值给double类型的变量m,并打印出m的数值。

```cpp
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include <QDebug>

int main()
{
    // 设置串口参数
    QSerialPort serialPort;
    serialPort.setPortName("COM1");
    serialPort.setBaudRate(QSerialPort::Baud115200);
    serialPort.setDataBits(QSerialPort::Data8);
    serialPort.setParity(QSerialPort::NoParity);
    serialPort.setStopBits(QSerialPort::OneStop);
    serialPort.setFlowControl(QSerialPort::NoFlowControl);

    // 打开串口
    if (!serialPort.open(QIODevice::ReadOnly)) {
        qDebug() << "Failed to open serial port";
        return -1;
    }

    uint dataArray[100]; // 数组长度根据实际情况调整
    int index = 0;

    while (true) {
        // 从串口读取数据
        QByteArray data = serialPort.readAll();
        for (int i = 0; i < data.size(); i++) {
            // 将数据存入数组
            dataArray[index] = static_cast<uint>(data.at(i));
            index++;
            // 当数组已满时,进行数据处理和打印
            if (index >= 100) {
                // 打印数组中的数据
                for (int j = 0; j < index; j++) {
                    qDebug() << (dataArray[j]&0xFF);
                }

                // 将数组前三个元素赋值给float类型的变量并打印
                float x = static_cast<float>(dataArray[0]);
                float y = static_cast<float>(dataArray[1]);
                float z = static_cast<float>(dataArray[2]);
                qDebug() << "x:" << x << "y:" << y << "z:" << z;

                // 对数组中前三个元素进行位移运算并相加,结果赋值给double类型的变量m并打印
                double m = (static_cast<double>(dataArray[0]<< 16)) + (static_cast<double>(dataArray[1]<< 8)) + static_cast<double>(dataArray[2]);
                qDebug() << "m:" << m;

                index = 0; // 重置数组索引
            }
        }
    }

    // 关闭串口
    serialPort.close();

    return 0;
}
```

注意,上述示例程序仅显示了基本的串口数据处理和打印功能,并假设串口通信能够正常工作。实际应用中可能需要添加错误处理、界面设计等功能,程序来自AI,并经过实测验证。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值