您的位置:首页 > 编程语言 > Qt开发

Qt5自带串口调试 --使用signal接收数据,自动侦测端口列表

2014-12-08 14:39 489 查看
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 = my_serialport->readAll();
if(requestData!= NULL)
{
ui->textEdit->append(tr(requestData));
}
requestData.clear();
}


发送数据槽函数

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中要检测接收缓冲区是否有剩余数据的问题。

做一一个简单的串口调试助手,源代码分享给大家
http://download.csdn.net/detail/yh_1988/8236443
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: