在多线程或者多类的程序中,数据的传递要怎么实现?
我遇到的情况:在界面类中与电机通信,而我把电机通信放在了“伺服线程”,
那么,通过界面类发送 “读取电机速度” 信号后,写在主界面主线程的信号和槽函数connect()响应,
跳转到“伺服线程”的读取电机速度函数中,读取速度寄存器的值;
我的问题:界面类怎么获取读到的寄存器的值呢?
解决办法:写一个存储全局变量的类,用于多线程或多类之间的数据传递。
1. 新添加一个类:.h 和 .cpp
2. 在.h文件的public中声明全局变量:static + 数据类型 + 变量名;
public:
explicit share_data(QWidget *parent = nullptr);
static uint16_t motor_speed;
3.在.cpp文件的函数外定义全局变量: 数据类型 + 类名:: + 变量名 = 0;
#include "share_data.h"
uint16_t share_data::motor_speed = 0; //函数外部
4.在我需要使用的界面类和伺服线程的头文件中加入存储全局变量的类的头文件 #include “share_data.h”
5. 伺服线程中改变他的值 :类名:: + 变量名 = 赋值;
share_data::motor_speed = MotorSpeed;
6. 界面类中获取他的值:声明一个变量 = 类名:: + 变量名;
uint16_t motor_speed_1 = share_data::motor_speed;
查阅: