我要接收的数据比较长,“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"));
}
那就在这里结束吧。