串口配置、收/发数据
1、使用使用QSerialPort类,需要引用头文件
-
#include <QtSerialPort/QtSerialPort>
-
#include <QtSerialPort/QSerialPortInfo>
2、.pro文件中添加serialport
QT += serialport
3、创建/配置/打开 串口文章来源:https://www.toymoban.com/news/detail-676153.html
//3.1创建配置串口
seriaport= new QSerialPort();
seriaport->setPortName("COM3");//待打开的串口号
seriaport->setBaudRate(115200,QSerialPort::AllDirections);
seriaport->setDataBits(QSerialPort::Data8);//8bit数据位
seriaport->setParity(QSerialPort::NoParity);//校验位
seriaport->setStopBits(QSerialPort::OneStop);//停止位
seriaport->setFlowControl(QSerialPort::NoFlowControl);//流控制
//3.2打开设备
if (!seriaport->open(QIODevice::ReadWrite))
{
qDebug() << "serial open failed";
return ;
}
else
{
qDebug() << "serial open success";
}
//3.3设置接收缓冲区大小
seriaport->setReadBufferSize(500);
//3.4当串口收到数据并且接收完毕后,会发出一个readyRead()的信号。串口收到信息时将调用MainSerialRecvMsgEvent函数
QObject::connect(seriaport, &QSerialPort::readyRead, this, &MainWindow::MainSerialRecvMsgEvent);
4、接收、发送串口数据文章来源地址https://www.toymoban.com/news/detail-676153.html
//4.1数据接收(串口收到信息后,将调用MainSerialRecvMsgEvent函数)
void MainWindow::MainSerialRecvMsgEvent(void)
{
QByteArray MainSerialRecvData;//保存串口数据的数组
if(seriaport->bytesAvailable() >0)//判断等到读取的数据大小
{
MainSerialRecvData = seriaport->readAll();//读取所有的接收数据
if(!MainSerialRecvData.isEmpty()){
qDebug() << MainSerialRecvData.size();//打印数据大小
for(int i = 0; i < MainSerialRecvData.size();i++)
{
qDebug() << MainSerialRecvData.at(i);
}
ui->textBrowser->append(MainSerialRecvData);//将数据显示到textBrowser
}
else
{
qDebug()<<"接受数据出错";
}
}
}
//4.2数据发送
void MainWindow::on_pushButton_2_clicked()
{
QByteArray txdata;
if(seriaport != NULL && seriaport->isOpen())
{
txdata = ui->lineEdit->text().toLatin1();//QString转QByteArray
seriaport->write(txdata);//write:发送数据
ui->lineEdit->clear();
}
else
{
qDebug() <<"串口未打开!";
}
}
到了这里,关于QSerialPort 串口的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!