因项目需求,于是开发了一个如下简陋功能的上位机:
- stm32单片机的温度和距离数据通过串口传输到上位机。
- 上位机读取数据后显示在面板并同时将数据写入数据库。
系统开发环境:WIN10 64位
QT:V5.15.1
MySQL:V8.0.21
①首先搭建qt和数据库环境:以保证能够将数据写入数据库
②单片机的数据帧格式:
例如:“0xff,21.149988,12.100000,0xfd”
注:本人stm32单片机使用FreeRTOS系统,使用的是printf这个函数,命令如下:
printf("%s","0xff");
printf("%c",',');
printf("%f",p_dt_data->temperature_obj);
printf("%c",',');
printf("%f",p_dt_data->distance/10.0);
printf("%c",',');
printf("%s","0xfd");
单片机的串口接口为:USART1_TX(PA9) 和 USART1_RX(PA10) 。外接一个CMSIS-DAP转接口,既可以下载程序,又能打印串口数据,非常方便。
下位机于是就能将采集到的温度和距离数据传到上位机了。
③QT中上位机设计:
这是第一个版本,如果后面有时间,看看加一个qchart,用曲线实时显示采集到的数据。
对象别名:
这样就能看懂代码中各个对象的意思了。
④上代码(仅含主要代码):
全部代码已上传码云Gitee。
第一段://开机运行主程序
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->sendButton->setEnabled(false);//设置发送按钮失效
ui->baudrateBox->setCurrentIndex(1);//设置波特率选择框默认为index=1的值即115200
ui->comboBox->clear();//清空串口选择框的内容
foreach(const QSerialPortInfo &info , QSerialPortInfo::availablePorts())// foreach(variable ,container)
{
ui-