【QT 5 调试软件+串口相关初试串口+基础样例】

1、前言

作为qt的初学者,开始入门qt的时候,很多东西其实也不是很会,也是边学边干,自己学习的很多东西,值得记录下来,也方便他人学习。
另外,本次实验是调试串口,我们还是需要一个硬件设备的支持的。建议调试前,先弄个转换器,就是usb转TTL的,便宜的也有很多,一般来说,只要玩单片机,不会没有。

2、实验环境

实验环境还是挺重要的,因为有时候,在你电脑上能运行的东西,在别人的电脑就不一定能运行,这一部分的原因就可能是实验版本不一样。
系统环境:window环境
QT软件版本:qt 5.14.2
硬件设备:转换器-USB转RS232
如下图所示,本次调试,我们直接将转换器的RX和TX短接。这样我们发啥就会收到什么。
在这里插入图片描述
然后我们用串口软件测试一下,如下图。

在这里插入图片描述

3、先行文章+布局相关

其实对于一个软件而言,或者我们做这个软件,自己测试用,那怎么方便怎么来了,但是对于给他人,其实有很多细节点得。
咱们自己用,也需要注意一些问题。而这种上来就带界面的,我们不会去像调试单片机一样,上来纯写代码,当然,如果你界面也纯用代码写,当我没说。

所以我们qt写调试串口是,第一步,是布局,扣界面。具体布局我之前也写过,本次也是调用那篇的代码,不重复造轮子了。

【QT 整体窗口拖动大小,内部控件无法跟随改变的原因>>>>>解决:布局相关,布局设置】

4、基本了解+串口相关

(1)了解串口

关于串口相关知识,我们上网搜索"qt 串口"其实有很多,这里就加以罗列了,不过可以去看看 QT官网关于串口的说明,这有助于我们编写代码。
链接:https://doc.qt.io/qt-5/qserialport.html
如图下图,其实我们可以大致了解串口相关的枚举类型,或者说,我们编写代码时候,需要关心的参数。
在这里插入图片描述

(2)串口的相关参数

其实我们只要打开一个串口软件,就大致知道需要关心那些参数了。如下图, 我们需要设置:串口号,波特率,停止位,数据位,校验位,一般还有带个按钮,打开串口。
在这里插入图片描述

(3)了解信号与槽

几乎写qt,或者学习QT,几乎绕不开,这些概念,信号与槽,可以多查查了解,这里不多做赘述,我们以实验为主。
个人理解:
信号:产生信号,发送出信号。
槽:接收信号,执行相应动作。

打一个比方,用单片机来说,就好像你用一个按键控制小灯开关,那么按键就是信号的生成者,小灯就是执行者。
放置qt里就是,当一个按键按下去的时候,会发出一个信号,信号会给相应的函数,去执行动作。

5、实验过程+代码编写

这篇文章中,是借用以前实验的代码,下载下来后,直接编译,没有错误后,可以进行了。

(1)引入串口文件

文件:xxx.pro 文件下,我的工程内文件名为:test_dome.pro
引入串口相关库,代码”QT += serialport“。
在这里插入图片描述

(2)加入声明和引入头文件。

文件:xxx.h 文件下,我的工程内文件名为:widget.h
加入串口头文件,并声明函数与类名字。
在这里插入图片描述

(2)查找串口

(1)一种方式是,打开软件后,立刻查找串口,但是有时候,我们可能会有多个串口,或者是先打开串口软件,然后搜索。这个时候我们需要增加一个按键,用来手动搜索串口。
如同我们点击 widget.ui文件,点击一个按键,修改名称。
在这里插入图片描述
(2)右键点击这个按键>>转到槽>>选择第一个触发函数。
在这里插入图片描述
(3)触发函数如下图
在这里插入图片描述
(4)函数内加入如下代码
在这里插入图片描述
(5)这个时候,去widget.h文件里,我们就会发现,多了一个名为”on_pushButton_2_clicked“函数。
在这里插入图片描述
(6)在软件打开时,读取一次串口。
在这里插入图片描述

(3)按键打开串口

我们依次操作剩余两个按键,这里操作和上述相同。
(1)”打开出串口“按键
在这里插入图片描述
在这里插入图片描述
代码内容如下


void Widget::on_pushButton_clicked()
{
    if(ui->pushButton->text()==QStringLiteral("打开串口"))
       {

           serial_flag=true;
           serial =new QSerialPort;
           //获取串口
           serial->setPortName(ui->comboBox->currentText());
           //设置读写
           serial->open(QIODevice::ReadWrite);
           //设置波特率
           serial->setBaudRate(115200);
           //设置数据位8位
           serial->setDataBits(QSerialPort::Data8);
           //无校验位
           serial->setParity(QSerialPort::NoParity);
           //1个停止位
           serial->setStopBits(QSerialPort::OneStop);
           //设置流
           serial->setFlowControl(QSerialPort::NoFlowControl);
           ui->comboBox->setEnabled(false);
           ui->pushButton->setText("关闭通信");
           QObject::connect(serial,&QSerialPort::readyRead,this,&Widget::Read_Data);

       }
       else
       {

           serial_flag=false;
           serial->clear();
           serial->close();
           serial->deleteLater();

           ui->comboBox->setEnabled(true);
           ui->pushButton->setText("打开串口");
       }
}

(4)读取函数

在这里,如下图,我们做了一个连接>>信号与槽,如果打开串口,那么就去读取函数获取数据。
在这里插入图片描述
(1)编写读取函数
在这里插入图片描述
代码块


void Widget::Read_Data()
{


    QByteArray buf;
    buf=serial->readAll();

    if(!buf.isEmpty())
    {
        //获取当前textEdit内得内容 并新建字符串
        QString str=ui->textEdit->toPlainText();
        //加上收到buf内容
        str+=tr(buf);
        //清楚文本框 textEdit内容
        ui->textEdit->clear();
        //追加str内容
        ui->textEdit->append(str);
    }
}

(5)发送按键编写

按键也是需要连接槽,本片是基础篇,我们直接写死。

(1)转到槽
在这里插入图片描述

(2)内容增加
在这里插入图片描述

6、实际调试

插好硬件,我们测试下。
在这里插入图片描述

7、代码链接

代码连接:https://download.csdn.net/download/qq_22146161/86722251

8、细节点

有很多细节点,这些调试中,遇到的问题估计可以单独写一篇了。
(1)找不到文件错误:”error: ‘QSerialPort’ file not found“。
在这里插入图片描述
解决方式:简单说就是没有这个文件,忘记保护库了。
在这里插入图片描述

(2)程序异常结束:如下,程序正常启动了,但是直接点击==“发送消息”==
在这里插入图片描述
如下图所示:报错:The process was ended forcefully.
在这里插入图片描述
解决办法:或者说一类问题解决办法,没声明的类不要用。
如图,我这里加入标志位判断下,直接打开串口后,才能发送。

在这里插入图片描述(3)物品链接:usb转rs485/422/232/ttl光电隔离型485转usb工业级防雷串口转换器」

某宝:https://m.tb.cn/h.5nAcZXn?tk=DmY3W5r9wYj

驱动链接:(https://ftdichip.com/drivers/d2xx-drivers/)
在这里插入图片描述

9、总结

使用qt调试串口,我打算做个系列,这样学习有个过程,另外其中遇到的问题,我打算单独列个文章说明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好奇龙猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值