问题已经解决了,贴下代码:
void SerialThread::run()
{
while(1){
usleep(500); //delay 50ms
QByteArray temp = myCom->readAll(); //读取串口缓冲区的所有数据给临时变量temp
QDataStream out(&temp,QIODevice::ReadWrite); //用QDataStream将字节数组读入
while(!out.atEnd())
{
qint8 outChar = 0;
out>>outChar; //每一字节填充一次,直到结束
QString str = QString("%1 ").arg(outChar&0xFF, 2, 16, QLatin1Char('0')); //在这里转十六进制数
emit this->serialFinished(str.toAscii());
}
}
}
其实经过这样转换成16进制后,str就已经是一个一个字节了,自己再建一个缓存数组就行了吧,反正我是这样解决的。