单片机与QT上位机通信

目录

1.项目说明

2.上位机QT绘制

2.1建立工程

 2.2绘制ui

 2.3编程

2.3.1 头文件

2.3.2 CPP文件

 2.3.3 运行测试

2.4进阶--实现两个界面切换

2.4.1绘制ui

 2.4.2编程

 2.4.3完善第二个界面

3.单片机数据发送

1.项目说明

此次项目为通过51单片机将温湿度数据通过串口发送给QT,QT做界面并显示。要求实时显示,并且QT设置两个界面,第一个界面显示整体数据,方便以后扩展多个数据内容,在每个数据后面添加一个”详情“按键,点击按键可以跳转到第二个界面,第二个界面为这个采集数据的详细信息,可以增加图表显示。

扩展内容:1.显示整数和小数。

                  2.通过ESP8266wifi模块代替串口发送数据。

版本和器件说明:

单片机:STC89C52RC

QT:5.14.2

2.上位机QT绘制

2.1建立工程

点击文件->新建工程->模板选择QT Widgets Application->类信息选择main window(main window与Qwidget区别是有下拉菜单选项)

 然后进入工程,点击左侧项目,会自动配置工程所需文件。

 此时项目里面就有了所需的工程文件,准备工作就绪,下面就是编写程序。

 2.2绘制ui

将各个器件拖进界面。

 2.3编程

2.3.1 头文件

mainwindow.h 类中增加声明。

 

2.3.2 CPP文件

mainwindow.cpp中进行实现。

主要有四步:初始化参数->控件编辑->完成信号与槽的连接->实现槽函数

 2.3.3 运行测试

右键点击工程,选择运行。

 测试如下:

通过验证,功能正常。 

2.4进阶--实现两个界面切换

原理:通常只有一个界面的时候,在main函数中,构造函数后,让界面一直显示。

两个界面时,当第一个界面中按下要跳转到第二个界面的按键时,系统让第一个界面隐藏(不是退出),然后打开第二个界面。所以需要在第一个界面的构造函数中增加第二个界面构造函数的地址,实现调用。

当第二个界面要回到第一个界面时,需要通过信号的方式,通过发送信号给第一个界面,然后第二个界面隐藏,第一个界面显示。

2.4.1绘制ui

绘制第二个界面的ui。

 选择mainwindows

绘制UI,添加一个按键,用来回到上一页。

 

 2.4.2编程

首先在第一个ui类里面增加一个ui类指针,并且再构造函数中创建第二个ui类。

 然后对按键建立槽函数,第一个ui的详情按键建立槽函数,功能是按下时隐藏第一个界面,打开第二个ui。

void MainWindow::on_detailpushButton_clicked()

{

    this->hide();

    this->ppage2->show();

}

    connect(ui->detailpushButton,&QPushButton::clicked,[=](){

        MainWindow::on_detailpushButton_clicked();

    });                                                     //点击按键跳转第二个界面

运行测试,可以正常跳转。

 下面是从第二个界面跳转会第一个界面。

思路是第二个界面通过按键绑定一个信号,按下按键发送信号。第一个界面由于包含第二个界面的类地址,所以可以直接访问信号,访问到信号时隐藏第二个界面,显示第一个界面。

void MainWindowpage2::on_backpushButton_clicked()

{

    //发信号

    emit this->back();

}

    connect(this->ppage2,&MainWindowpage2::back,[=](){

        this->ppage2->hide();

        this->show();

    });                                                     //接收第二个界面回退的信号

测试后成功切换到第一个界面。

 2.4.3完善第二个界面

同第一个界面一样,就是读取信息,做图表显示。

3.单片机数据发送

单片机采集数据并通过串口发送数据即可。

### 回答1: 编写一个测试单片机Qt上位机TCP客户端,可以分为以下几个步骤: 1. 创建一个Qt应用程序。首先,在Qt中创建一个新的项目,选择应用程序类型,并设置项目的名称和保存位置。然后,选择需要的模块(如Qt Widgets)并单击“下一步”完成项目的创建。 2. 设计上位机界面。在Qt的设计视图中,使用各种Qt控件设计出一个用户界面,用于显示和控制单片机上位机通信。例如,可以添加按钮、文本框和标签,用于发送和接收数据。 3. 实现TCP客户端。在Qt的代码视图中,使用Qt提供的网络模块实现TCP客户端,用于与单片机进行通信。可以使用QTcpSocket类来创建并管理TCP连接,并使用其提供的函数来发送和接收数据。 4. 连接单片机。在上位机界面的按钮点击事件中,使用TCP客户端发送数据到单片机。可以使用QTcpSocket的write函数发送数据,并使用waitForBytesWritten函数等待数据发送完成。 5. 接收单片机的响应。使用QTcpSocket的readyRead信号来接收单片机返回的数据。可以使用read函数读取接收到的数据,并将其显示在上位机界面上的文本框中。 6. 断开连接。在上位机界面的关闭事件中,使用QTcpSocket的disconnectFromHost函数断开与单片机的连接。 通过以上步骤,您可以编写一个测试单片机Qt上位机TCP客户端。在使用前,请确保已经正确配置了单片机的网络设置,并且设置了正确的IP地址和端口号。 ### 回答2: 要编写一个测试单片机QT上位机TCP客户端,需要以下步骤: 1. 首先,在QT中创建一个新的项目,并选择相应的QT版本。 2. 在项目中添加TCP客户端类,可以使用QTQTcpSocket类来实现。 3. 在TCP客户端类中,定义连接主机的IP地址和端口号。也可以将这些信息作为参数在使用时传递给客户端。 4. 编写连接单片机的函数。在函数中,创建QTQTcpSocket对象,并使用其connectToHost()函数连接到指定的主机和端口号。 5. 在连接成功后,可以使用QTcpSocket的信号和槽机制来读取和写入数据。例如,可以使用readyRead()信号来读取从单片机发送的数据,并使用write()函数向单片机发送数据。 6. 可以根据需要循环发送和接收数据,直到完成测试。 7. 在QT界面中,可以增加相应的按钮、文本框和标签来显示单片机发送和接收的数据。可以使用QT的信号和槽机制来更新界面上的数据。 8. 最后,可以将程序编译成可执行文件,并在QT界面上运行测试。 总结:编写一个测试单片机QT上位机TCP客户端,需要在QT中创建一个TCP客户端类,并实现连接单片机、发送和接收数据的功能。还需要在QT界面中显示所发送和接收的数据。最后,将程序编译成可执行文件并进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

流浪法师解剖鱼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值