串口接收数据
1、字符显示;
2、十六进制显示
void optical_app::my_readuart()
{
QByteArray requestData;
requestData = my_serialport->readAll();
if(!requestData.isEmpty())
{
if(ui->checkBoxHexShow->isChecked())
{
// ui->textEdit->append(tr(" ")+tr(requestData.toHex())); //Hex
QDataStream out(&requestData,QIODevice::ReadWrite); //将字节数组读入
while(!out.atEnd())
{
qint8 outChar = 0;
out>>outChar; //每字节填充一次,直到结束
//十六进制的转换
QString str = QString("%1").arg(outChar&0xFF,2,16,QLatin1Char('0'));
ui->textEdit->insertPlainText(" ");//每发送两个字符后添加一个空格
ui->textEdit->insertPlainText(str.toUpper());//大写
ui->textEdit->moveCursor(QTextCursor::End);
}
ui->textEdit->append(tr(" "));
}
else
{
ui->textEdit->append(tr(" ")+tr(requestData)); //char
}
}
requestData.clear();
}