QT串口接收十六进制

我要接收的数据比较长,“01 03 24 01 19 …………00 D5 F6”中间省略一大截,为将这些数据接收到一个字符串中,参考QT论坛里的文章,总结如下:

QByteArray tmp;   if(highCom->bytesAvailable() >= 41)   {       tmp = highCom->readAll();       QDataStream out(&tmp,QIODevice::ReadWrite);       while(!out.atEnd())       {         qint8 outChar = 0;         out>>outChar;         QString str = QString("%1").arg(outChar&0xFF,2,16,QLatin1Char('0'));         strHex += str;        }       qDebug()<<strHex;   }  

没有贴出完整的函数,不过这部分就已经可以解决了。 strHex中就是存储的接收十六进制数据。

想要做什么处理,就根据实际情况来吧。

当然可以参考下面的代码

//读取串口
void MySerial::readMyCom()
{
    QByteArray temp;
    if(myCom->bytesAvailable() >= 8)
    {
        temp = myCom->readAll(); //读串口缓冲区数据 
    }
    QDataStream out(&temp,QIODevice::ReadWrite);    //将字节数组读入
    while(!out.atEnd())
    {
        qint8 outChar = 0;
        out>>outChar;   //每字节填充一次,直到结束
        QString str = QString("%1").arg(outChar&0xFF,2,16,QLatin1Char('0'));
        //十六进制的转换
        recBrowser->insertPlainText(str);
    }
    recBrowser->insertPlainText(tr("\n"));
}

那就在这里结束吧。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwgzyd.html