首页 > 代码库 > Qt5自带串口调试 --使用signal接收数据,自动侦测端口列表
Qt5自带串口调试 --使用signal接收数据,自动侦测端口列表
Qt5自带串口初步用一下感觉还不错。
调试记录
.pro文件增加
QT += serialport
.h文件增加
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
private slots: void my_readuart();//串口接收数据槽函数
private:
QSerialPort *my_serialport;
.cpp文件
构造函数内
foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) { QSerialPort serial; serial.setPort(info); if (serial.open(QIODevice::ReadWrite)) { ui->comboBox->addItem(info.portName()); ui->textEdit->append(tr("检测到端口列表:")); ui->textEdit->append(info.portName()); ui->textEdit->append(info.description()); ui->textEdit->append(info.manufacturer()); serial.close(); } } my_serialport= new QSerialPort(); ui->pushButton_3->setEnabled(false); ui->comboBox_2->setCurrentIndex(1);//默认9600
开启串口按钮槽函数
void MainWindow::on_pushButton_clicked() { // my_serialport= new QSerialPort(); my_serialport->setPortName(ui->comboBox->currentText()); my_serialport->open(QIODevice::ReadWrite); my_serialport->setBaudRate(ui->comboBox_2->currentText().toInt()); my_serialport->setDataBits(QSerialPort::Data8); my_serialport->setParity(QSerialPort::NoParity); my_serialport->setStopBits(QSerialPort::OneStop); my_serialport->setFlowControl(QSerialPort::NoFlowControl); connect(my_serialport,SIGNAL(readyRead()),this,SLOT(my_readuart())); ui->pushButton->setEnabled(false);//禁止打开串口按钮 ui->pushButton_3->setEnabled(true);//允许关闭串口按钮 }
读串口槽函数
void MainWindow::my_readuart() { QByteArray requestData; requestData = http://www.mamicode.com/my_serialport->readAll();>
发送数据槽函数void MainWindow::on_pushButton_2_clicked() { my_serialport->write(ui->lineEdit->text().toLatin1()); }关闭串口槽函数
void MainWindow::on_pushButton_3_clicked() { my_serialport->clear(); ui->pushButton->setEnabled(true); ui->pushButton_3->setEnabled(false); // my_serialport->deleteLater(); }
测试时使用9600波特率,数据接收反映很迅速,不需要Qt4中要检测接收缓冲区是否有剩余数据的问题。Qt5自带串口调试 --使用signal接收数据,自动侦测端口列表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。