2021-02-26

数据解析

/*******************************************************************
 * 函数功能:接收遥控器传来的数据并进行解析
 * 调用:放在定时器中断服务函数中定时接收
 * 时间: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();
}
上一篇:用python 实现乱序打印“helloworld” 中的每个字母


下一篇:Python 列表中多元素的删除(移除)