Qt简单串口助手

功能实现:

1.实现与单片机进行串口通信

2.自动查找串口号

案例展示:

 .Pro文件

QT       += core gui serialport

.UI文件

1个TextEdit控件  1个LineEdit 5个Combobox控件 2个Qlabel控件 3个PushButton控件

 Dialog.h

#include <QList>
#include <QDebug>

QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();
public:
    bool SetSerialPortConfig(void);
private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_LineEdit2_readyRead();
    void on_pushButton_3_clicked();

private:
    Ui::Dialog *ui;
    bool m_isopen;
    QSerialPort m_serialPort;
};
#endif // DIALOG_H

Dialog.cpp(代码有注释)

#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);
    m_isopen = false;
    ui->textEdit->setReadOnly(true);
    ui->pushButton_2->setEnabled(m_isopen);
    //查找端口
    QList<QSerialPortInfo> serialPortInfo = QSerialPortInfo::availablePorts();
    for(int i =0;i<serialPortInfo.count();i++)
    {
    ui->comboBox->addItem(serialPortInfo.at(i).portName());
    }
    //接收单片机槽函数
    connect(&m_serialPort,SIGNAL(readyRead()),this,SLOT(on_LineEdit2_readyRead()));
}

Dialog::~Dialog()
{
    delete ui;
}



//设置串口配置
bool Dialog::SetSerialPortConfig(void)
{
    m_serialPort.setPortName(ui->comboBox->currentText());//设置端口
    m_serialPort.setBaudRate(ui->comboBox_2->currentText().toInt());//设置波特率

    //设置校验位
    if(ui->comboBox_3->currentText() == "None"){
        m_serialPort.setParity(QSerialPort::NoParity);
    }
    else if(ui->comboBox_3->currentText() == "Odd"){
        m_serialPort.setParity(QSerialPort::OddParity);
    }
    else{
        m_serialPort.setParity(QSerialPort::EvenParity);
    }
    //设置数据位
    if(ui->comboBox_4->currentText() == "8"){
        m_serialPort.setDataBits(QSerialPort::Data8);
    }
    else if(ui->comboBox_4->currentText() == "7"){
        m_serialPort.setDataBits(QSerialPort::Data7);
    }
    else if(ui->comboBox_4->currentText() == "6"){
        m_serialPort.setDataBits(QSerialPort::Data6);
    }
    else{
        m_serialPort.setDataBits(QSerialPort::Data5);
    }
    //设置停止位
    if(ui->comboBox_5->currentText() =="1"){
        m_serialPort.setStopBits(QSerialPort::OneStop);
    }
    else if(ui->comboBox_5->currentText() =="1.5"){
        m_serialPort.setStopBits(QSerialPort::OneAndHalfStop);
    }
    else{
        m_serialPort.setStopBits(QSerialPort::TwoStop);
    }

    m_serialPort.setFlowControl(QSerialPort::NoFlowControl);
    return m_serialPort.open(QSerialPort::ReadWrite);
}


void Dialog::on_pushButton_clicked()
{
   if(m_isopen == true)
   {
       m_serialPort.close();
       ui->pushButton->setText("打开端口");
       m_isopen = false;
       ui->pushButton_2->setEnabled(false);

       ui->comboBox->setEnabled(true);
       ui->comboBox_2->setEnabled(true);
       ui->comboBox_3->setEnabled(true);
       ui->comboBox_4->setEnabled(true);
       ui->comboBox_5->setEnabled(true);
   }
   else
   {
       if(true == SetSerialPortConfig() )
       {
           ui->pushButton->setText("关闭端口");
           m_isopen = true;
           ui->pushButton_2->setEnabled(true);

          //检测信息是否正确
           qDebug()<<"接收成功"<<m_serialPort.portName()<<m_serialPort.baudRate()
            <<m_serialPort.parity()<<m_serialPort.dataBits()<<m_serialPort.stopBits();

           ui->comboBox->setEnabled(false);
           ui->comboBox_2->setEnabled(false);
           ui->comboBox_3->setEnabled(false);
           ui->comboBox_4->setEnabled(false);
           ui->comboBox_5->setEnabled(false);
       }
   }
}

//发送槽函数
void Dialog::on_pushButton_2_clicked()
{
    if(m_isopen == true){
        m_serialPort.write(ui->lineEdit_2->text().toStdString().c_str());
    }
}
//接收槽函数
void Dialog::on_LineEdit2_readyRead()
{
    if(m_isopen == true){
      ui->textEdit->insertPlainText(QString(m_serialPort.readAll()));
    }
}
//清除接收端信息
void Dialog::on_pushButton_3_clicked()
{
     ui->textEdit->clear();
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt5串口助手是一款基于Qt5开发的串口通讯工具,用来帮助用户进行串口通讯的测试和调试工作。其中"<<115200"表示设置串口的波特率为115200。 串口通讯是一种用来实现数据传输的通信方式,常用于嵌入式开发和设备间的通讯。Qt5串口助手提供了简单易用的图形界面,用户可以通过该工具直接进行串口的打开、关闭、配置等操作。在进行配置时,用户可以选择要使用的串口号和波特率。 在这里,"<<115200"表示设置波特率为115200,波特率是串口通信传输速率的度量单位,它表示每秒钟可以传输的位数。115200是一个较高的波特率,可以实现数据传输速度快的特点。对于某些特殊的设备或要求,使用较高的波特率能够满足更快的数据传输需求。 总的来说,Qt5串口助手提供了方便的界面和功能,用户可以根据具体需求进行串口通讯的设置和调试工作。通过设置波特率为115200,可以实现较快的数据传输速度,满足一些高速通讯的需求。使用该工具可以提升开发效率和调试准确性,方便开发人员进行串口通讯相关的工作。 ### 回答2: qt5串口助手是一个使用Qt5编写的串口通信工具,用于与设备进行串口通信和数据传输。在这里,"<<115200"是串口的波特率设置,表示波特率为115200。波特率是指在串行通信中,每秒钟传输的位数,波特率越高,数据传输速率越快。 qt5串口助手通过使用Qt串口模块,可以方便地打开和关闭串口,读取和发送数据。用户可以通过图形界面选择并设置串口的参数,包括波特率、数据位、停止位和校验位等等。 当波特率设置为115200时,串口助手会以每秒传输115200位的速度与设备进行通信,这样可以实现较快的数据传输。对于一些需要高速传输数据的应用场景,选择较高的波特率可以提高通信效率。 需要注意的是,通信双方的波特率设置要保持一致,否则可能会导致通信的错误或数据丢失。因此,在使用qt5串口助手进行串口通信时,需要确保设备端的波特率与程序端设置的波特率一致,这样才能正常进行数据的传输和交互。 总而言之,qt5串口助手能够方便地进行串口通信和数据传输,而"<<115200"表示设置波特率为115200,通过此设置可以实现较高的数据传输速率。 ### 回答3: Qt5串口助手是一款使用Qt5框架开发的串口通信工具。串口通信是一种常见的数据传输方式,可以实现计算机与其他设备间的数据交互。<<115200表示串口通信中的波特率(baud rate),即每秒传输的位数。115200是一种常用的波特率,表示每秒传输115200位的数据。 通过Qt5串口助手,我们可以方便地进行串口的连接和数据的收发。首先,我们需要选择正确的串口号以及波特率。然后,通过打开串口,我们可以与设备建立起连接。连接成功后,我们可以发送指令或数据到设备,并且实时接收设备返回的数据。 Qt5串口助手提供了一些常用的功能,比如发送数据、接收数据以及显示接收到的数据等。用户可以通过界面上的按钮或者命令来实现这些功能。同时,Qt5串口助手还可以设置串口的其他参数,比如数据位、校验位、停止位等。这些参数的设置依赖于具体的设备和通信需求,可以根据需要进行调整。 总之,Qt5串口助手是一款方便实用的串口通信工具,可以帮助我们实现与设备间的数据传输。通过设置正确的串口号和波特率,以及合适的参数配置,我们可以快速、稳定地进行串口通信,并且实时地监控和处理设备返回的数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值