Qt采用Qextserialport 接收发送16进制数据

来源:互联网 发布:黑客帝国动画版矩阵化 编辑:程序博客网 时间:2024/06/07 16:25

为了配合项目的使用,需要写个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);}
效果图如下:



原创粉丝点击