当前位置:   article > 正文

上位机图像处理和嵌入式模块部署(f103 mcu和Qt上位机联动)

上位机图像处理和嵌入式模块部署(f103 mcu和Qt上位机联动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        之前我们写过一篇文章,上面说的是如何利用串口对mcu进行控制,即如果利用串口实现mcu led灯的点亮和熄灭。输入1的时候,点亮;输入2的时候,熄灭。当时,我们是通过mobaxterm实现了控制。实际软件开发的时候,对于上位机,我们一般都是用qt界面来实现的,一方面显得比较正规一点,另外一方面也显得容易操作一点。

        串口232也是实际项目中经常使用的接口。我们看下如果是用qt进行开发,应该如何来做。

1、整个数据处理的流程

        其中qt是指qt上位机,board指的是开发板,st-link v2是烧录器,keil是stm32固件编译软件。qt和board之间的通信是usb转串口,board和st-link v2之间的通信是swd,keil和st-link v2之间的通信是usb。过程有点绕,稍微整理下可以搞清楚的。

2、创建qt工程

        关于keil开发的部分,前面都已经完成了,下面就来做qt的部分。首先还是按照qt的wizard,创建一个widget工程。

3、设计界面

        界面部分主要就是qt的ui文件,简单的做法就是引入两个按钮就可以了。

4、头文件设计

        头文件设计的部分,主要就是引入回调函数、引入QSerialPort这个类。这两个部分做好了,也就可以开始处理串口的数据了。另外还有一点需要注意的就是,需要引入QSerialPort头文件。

  1. #pragma once
  2. #include <QtWidgets/QMainWindow>
  3. #include <QtSerialPort/QSerialPort>
  4. #include "ui_QtWidgetsApplication.h"
  5. class QtWidgetsApplication : public QMainWindow
  6. {
  7. Q_OBJECT
  8. public:
  9. QtWidgetsApplication(QWidget *parent = nullptr);
  10. ~QtWidgetsApplication();
  11. private:
  12. Ui::QtWidgetsApplicationClass ui;
  13. QSerialPort serial;
  14. private slots:
  15. void on_clicked();
  16. void off_clicked();
  17. };

5、cpp文件实现

        定义好了头文件,cpp文件基本上按部就班去做就好了。构造函数实现了按钮和回调函数的绑定,同时初始化好了结构体serial,配置了波特率等基本参数。析构函数则主要是关闭串口。两个回调函数,则分别是发送两个字符串内容。其中,串口的编号,大家根据自己的实际情况修改下即可。还有就是lib库的添加,不然无法链接通过。

  1. #include "QtWidgetsApplication.h"
  2. #pragma comment(lib, "C:/Qt/Qt5.12.5/5.12.5/msvc2017/lib/Qt5SerialPortd.lib")
  3. QtWidgetsApplication::QtWidgetsApplication(QWidget *parent)
  4. : QMainWindow(parent)
  5. {
  6. ui.setupUi(this);
  7. connect(ui.pushButton1, &QPushButton::clicked, this, &QtWidgetsApplication::on_clicked);
  8. connect(ui.pushButton2, &QPushButton::clicked, this, &QtWidgetsApplication::off_clicked);
  9. serial.setPortName("COM12");
  10. serial.setBaudRate(QSerialPort::Baud115200);
  11. serial.setDataBits(QSerialPort::Data8);
  12. serial.setParity(QSerialPort::NoParity);
  13. serial.setStopBits(QSerialPort::OneStop);
  14. serial.setFlowControl(QSerialPort::NoFlowControl);
  15. serial.open(QIODevice::ReadWrite);
  16. }
  17. QtWidgetsApplication::~QtWidgetsApplication()
  18. {
  19. serial.close();
  20. }
  21. void QtWidgetsApplication::on_clicked()
  22. {
  23. QByteArray data = "1";
  24. serial.write(data);
  25. serial.waitForBytesWritten(1000);
  26. }
  27. void QtWidgetsApplication::off_clicked()
  28. {
  29. QByteArray data = "2";
  30. serial.write(data);
  31. serial.waitForBytesWritten(1000);
  32. }

6、测试和验证

        我们先按照上面的流程图把数据线连接好。连接好之后,再确认串口号。最后插上usb hub,毕竟usb接口比较多,全部接到hub上更容易一点。最后,打开qt应用,单击ON,观察led灯是否亮起;单击OFF,单击led灯是否熄灭。如果整个流程没有问题的,那么这个最简单的上位机-mcu联调,就算是测试成功了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/654931
推荐阅读
相关标签
  

闽ICP备14008679号