QT串口接收十六进制数据在文本框中显示

来源:互联网 发布:java如果实现跨域访问 编辑:程序博客网 时间:2024/05/09 23:42
//读取串口
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"));


我要接收的数据比较长,“01 03 24 01 19 …………00 D5 F6”中间省略一大截,为将这些数据接收到一个字符串中,参考QT论坛里的文章,总结如下:
  1. QByteArray tmp;  
  2. if(highCom->bytesAvailable() >= 41)  
  3. {  
  4.     tmp = highCom->readAll();  
  5.     QDataStream out(&tmp,QIODevice::ReadWrite);  
  6.     while(!out.atEnd())  
  7.     {  
  8.       qint8 outChar = 0;  
  9.       out>>outChar;  
  10.       QString str = QString("%1").arg(outChar&0xFF,2,16,QLatin1Char('0'));  
  11.       strHex += str;  
  12.      }  
  13.     qDebug()<<strHex;  
  14. }  

strHex中就是存储的接收十六进制数据。
0 0
原创粉丝点击