QT串口接收十六进制
QT串口接收十六进制
前段时间写了个“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"));
}
那就在这里结束吧。
评论暂时关闭