Qt採用Qextserialport 接收發送16進制數據

爲了配合項目的使用,需要寫個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);
}
效果圖如下:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章