爲了配合項目的使用,需要寫個Qt的串口工具,後來發現Qextserialport 這個庫很強大,參考網絡霍亞飛的一篇doc,很快就搞定了界面以及基本的一些功能,不過由於項目裏面需要16進制的數據收發,所以,需要支持16進制的收發,百度+谷歌下,搞定了,代碼貼下,只貼核心代碼:
接收16進制:
//串口接收數據
void YComWindow::readYpfCom() {
QByteArray temp;
QString strHex;
if(ypfCom->bytesAvailable() >= 8)
{
temp = ypfCom->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'));
//十六進制的轉換
ui->textBrowser->insertPlainText(str);
strHex += str;
}
//打印
qDebug() << strHex;
ui->textBrowser->insertPlainText(strHex);
}
發送16進制:
//發送數據
void YComWindow::on_sendMsgBtn_clicked()
{
//
qDebug() << ui->sendMsgLineEdit->text().toAscii();
QByteArray temp;
QString strHex;
temp = ui->sendMsgLineEdit->text().toAscii();
QDataStream out(&temp, QIODevice::ReadWrite);//將字節數組讀入
while(!out.atEnd()) {
qint8 outChar = 0;
out >> outChar;//每字節填充一次,直到結束
QString str = QString("%1").arg(outChar&0xFF, 2, 16, QLatin1Char('0'));
//十六進制的轉換
// ui->textBrowser->insertPlainText(str);
strHex += str;
}
ypfCom->write(ui->sendMsgLineEdit->text().toAscii());
ui->textBrowser->insertPlainText(strHex);
}
效果圖如下: