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

时间: 2024-10-07 15:51:15

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

2018最新mfc作为上位机接收硬件端USB或串口数据显示成图片 解决串口接收数据丢字节丢包问题

本文用的是VS2013MFC写串口数据接收: 第一步:首先建立一个MFC工程,成功后会跳出一个对话框,直接在对话框上点击右键->点击插入ACTIVAE控件->选择MicrosoftCommunications Control, version 6.0 成功后会显示一个电话的图标在对话框上,运行起来不会显示的 不用担心这个美观问题.如果没有这个插件的话,可能是版本太低  可以自己下载一个补上 第二步:大概的窗体搞好:   那个显示图片的大框是PICTURE控件变量 然后就要项目->类向导中

关于STM32-CubeMx工程中串口无法正常发送/接收的问题解决

最近翻船了,万万在第一时间没想到串口无法正常发送数据竟然是因为CubeMX软件设置的问题. 在最近一个项目中由于物料不足,导致一批板子使用了24Mhz和8Mh两种参数的晶振,写程序时也没多想,调试阶段使用的是焊接24Mhz晶振的板子,一切功能OK,可是在将时钟配置24修改未8之后,在8Mhz的板子上竟然出现了BUG,串口无法正常发送/接收数据,首先想到的是波特率,其实也就是时钟,可是没想到竟然是使用CubeMx建立工程的问题,最后还是拿出了之前建立的8MHz的模板来解决的问题. 由于时间问题,尚

用Tkinter实现一个串口调试助手

2020年元旦,武汉出现了不明原因肺炎,搞得人心惶惶,只好宅在家里.闲着也是闲着,于是把很久之前用python写的一个串口调试助手再修改一下. 简单说明一下: 以前是准备在debian系统里调试单片机用的,基于python 2.6,GUI是用自带Tkinter做的,不用安装第三方库. 修改了之后,可以跨linux.windows平台(我没有MacOS系统,只能放弃),python 2.6/2.7/3.7都简单测试了一下,暂时只能说都可以用. 只实现了基本功能,没有自动发送.发送文件.保存等功能,

串口调试的几次理解

RS-232C接口定义(DB9) 引脚 定义 符号 1 载波检测 DCD(Data Carrier Detect) 2 接收数据 RXD(Received Data) 3 发送数据 TXD(Transmit Data) 4 数据终端准备好 DTR(Data Terminal Ready) 5 信号地 SG(Signal Ground) 6 数据准备好 DSR(Data Set Ready) 7 请求发送 RTS(Request To Send) 8 清除发送 CTS(Clear To Send)

VELT-0.1.5开发: gdb串口调试内核时信息丢失的问题

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs2013 + velt-0.1.5 VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件,将可以在visual studio的IDE中进行Linux应用程序的开发(包括编译和调试),也可

基于Modbus的C#串口调试开发

说明:本文主要研究的是使用C# WinForm开发的串口调试软件(其中包含Modbus协议相关操作).Modbus相关协议可以查阅百度文库等,可参考: <http://wenku.baidu.com/link?url=J-QZeQVLfvfZh7_lh8Qf0MdwANZuVjEoTqox6zJYrSnKyfgES2RTb_bjC5ZTn8-xgsuUAyiELRYVA3-3FBkBGywWhQ9YGoavJOzwB0IxTyK >. (1)先测试串口设置,发送和接收数据. (2)发送modb

C# 串口调试助手

本方法,禁用跨进程错误(做法不太好,但是对于单片机出身的人来说,好理解,能用就行). 基本功能: 1.点串口号的下拉菜单自动当前检索设备管理器的COM 2.发送模式可选,hex和string两种 3.接收显示模式,hex和string两种 4.发送多行数据 5.发送单行,可增加自动换行(方便用于一些串口指令,很多指令都带回车,每次写回车太麻烦) 效果演示: 主代码参考: using System; using System.Collections.Generic; using System.Co

STM32F407串口调试总结

一.背景 最近项目开发需要用到3路串口,分别为U1,U5,U6,其中U1原子哥的例程已经提供,拿过来就可用,本文主要讲解U5,U6串口调试. 二.正文 1.硬件描述 三个串口分别对应的发送引脚和接收引脚如下表所示: 串口号 接收引脚 发送引脚 USART1 PA9 PA10 UART5 PC12 PD2 USART6 PG14 PG9 2.串口介绍 USART为通用同步异步接收器,能够灵活地与外部设备进行全双工数据交换,满足外部设备对工业标准NRZ异步穿行数据格式的要求. STM32F407ZG

SylixOS串口调试详解

目录 1. SylixOS串口调试介绍    1 1.1    SylixOS串口的介绍    1 1.2    SylixOS串口调试介绍    1 2. SylixOS串口调试步骤    1 3. 总结    4 4. 参考资料    4 SylixOS串口调试介绍 SylixOS串口的介绍 串口(串行接口)也称也称串行通信接口或串行通讯接口(通常指 COM接口),是采用串行通信方式的扩展接口.串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,