QT串口数据解析

数据解析

/*******************************************************************
 * 函数功能:接收遥控器传来的数据并进行解析
 * 调用:放在定时器中断服务函数中定时接收
 * 时间:2020.12.5
********************************************************************/
void MainWindow::rec_buffer()//接收操纵杆
{
    buffer = serial->readAll();
    buffer = buffer.toHex();

    QString rDate;
    QByteArray fPLatLeverPercent,fPFanLeverPercent,fPMainLeverPercent,fPLonLeverPercent,
               fPoil1LeverPercent,fPoil2LeverPercent,byteFlyingMode;
    rDate = QString(buffer);
    if(buffer != NULL)
    {
        if(rDate[0] == '0'&&rDate[1] == 'f'&&rDate.length() >= 70)
        {
            //qDebug("%s",qPrintable(rDate));
            rDate.remove(0, 2);
            fPLatLeverPercent = rDate.left(4).toLocal8Bit();
            rDate.remove(0, 4);
            fPFanLeverPercent = rDate.left(4).toLocal8Bit();
            rDate.remove(0, 4);
            fPMainLeverPercent = rDate.left(4).toLocal8Bit();
            rDate.remove(0, 4);
            fPLonLeverPercent = rDate.left(4).toLocal8Bit();
            rDate.remove(0, 4);
            byteFlyingMode = rDate.left(4).toLocal8Bit();
            rDate.remove(0, 4);
            fPoil1LeverPercent = rDate.left(4).toLocal8Bit();
            rDate.remove(0, 4);
            fPoil2LeverPercent = rDate.left(4).toLocal8Bit();
            rDate.remove(0, 4);

            gl_intPLatLeverPercent = (int16_t)fPLatLeverPercent.toInt(nullptr, 16);
            gl_intPFanLeverPercent = (int16_t)fPFanLeverPercent.toInt(nullptr, 16);
            gl_intPMainLeverPercent = (uint16_t)fPMainLeverPercent.toInt(nullptr, 16);
            gl_intPLonLeverPercent = (int16_t)fPLonLeverPercent.toInt(nullptr, 16);
            gl_intPOil1LeverPercent = (uint16_t)fPoil1LeverPercent.toInt(nullptr, 16);
            gl_intPOil2LeverPercent = (uint16_t)fPoil2LeverPercent.toInt(nullptr, 16);

        }
    }
    buffer.clear();
}
  • 4
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
Qt串口数据解析是指在Qt开发环境中对串口接收到的数据进行解析处理的过程。 首先,需要在Qt中打开串口,并设置对应的波特率、数据位、停止位和校验位等参数。然后,通过监听串口接收到的数据,使用Qt提供的读取数据的函数对数据进行读取。 接收到的串口数据通常是二进制的形式。要对数据进行解析,首先需要根据数据的协议进行拆包操作。拆包的操作根据不同的协议会有所区别,可以根据数据的长度、起始标志位等进行处理。拆包后得到的数据可以是数字、字符或者其他类型。 对于数字数据,可以使用Qt内置的函数将二进制数据转换为对应的整数或浮点数。例如,使用QByteArray的toHex()函数可以将二进制数据转换为十六进制表示的字符串,使用QByteArray的toInt()函数可以将二进制数据转换为整数。 对于字符数据,可以使用QString的构造函数将二进制数据转换为字符串。例如,使用QString的fromUtf8()函数将二进制数据转换为UTF-8编码的字符串。 在解析过程中,还需要考虑数据的格式和顺序。如果数据是按照特定的格式排列的,可以使用结构体等数据结构进行解析。如果数据是按照顺序传输的,可以使用计数器等方式进行解析。 最后,根据解析后得到的数据进行相应的处理。可以将数据显示到界面上,存储到文件中,进行计算等操作。 总之,Qt串口数据解析是通过对串口接收到的数据进行拆包、转换和处理等操作,将二进制数据转换为可识别的数据形式的过程。通过理解数据的协议、格式和顺序,可以实现对串口数据的准确解析和应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nehzil-kino

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值