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); }效果图如下:
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。