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);
}
效果图如下:



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值