采用Qt写,需要一个showHex函数。
//将接收的一串QByteArray类型的16进制,转化为对应的字符串16进制
QString ShowHex(QByteArray str)
{
QDataStream out(&str,QIODevice::ReadWrite); //将str的数据 读到out里面去
QString buf;
while(!out.atEnd())
{
qint8 outChar = 0;
out >> outChar; //每次一个字节的填充到 outchar
QString str = QString("%1").arg(outChar&0xFF,2,16,QLatin1Char('0')).toUpper() + QString(" "); //2 字符宽度
buf += str;
}
return buf;
}
串口接收函数
void MainWindow::ReadCom()
{
QString buf ;
if (serial->bytesAvailable()<=0){return;}
requestData = serial->readAll(); //读取数据
// qDebug()<<"requestData="<<requestData;
unsigned short ss[10];
buf = ShowHex(requestData);
qDebug()<<"buf="<<buf;
//收到的16进制字符串转化为字符串
QByteArray hexByteArray=buf.toLatin1();
QString Valid_Str=QString::fromLatin1(QByteArray::fromHex(hexByteArray));
qDebug()<<"Valid_Str="<<Valid_Str;
//test= ShowHex(requestData);
}