QT 新建线程专门用USB_Read_Process接收USB数据20个字节数据并传给mainwidow.cpp中定义的数据Rx_dat_buf
时间: 2023-12-08 16:04:13 浏览: 175
QT 获取USB信息
3星 · 编辑精心推荐
好的,我明白了。您想问如何使用QT新建线程,在该线程中调用USB_Read_Process函数,将接收到的20个字节数据传递给mainwidow.cpp中定义的Rx_dat_buf数组。这可以通过以下步骤来实现:
1. 在mainwidow.cpp文件中定义一个QByteArray类型的数组Rx_dat_buf,用于存储接收到的USB数据。
2. 创建一个新的类MyThread,继承自QThread类,用于处理USB数据的接收和传输。
3. 在MyThread类中重写run()函数,在该函数中调用USB_Read_Process函数,并将接收到的20个字节数据存储在Rx_dat_buf数组中。
4. 在mainwidow.cpp中创建一个MyThread对象,并使用start()函数启动该线程。
下面是示例代码:
// mainwidow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mythread.h"
QByteArray Rx_dat_buf;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
MyThread *thread = new MyThread(this);
thread->start();
}
MainWindow::~MainWindow()
{
delete ui;
}
// mythread.h
#ifndef MYTHREAD_H
#define MYTHREAD_H
#include <QThread>
class MyThread : public QThread
{
Q_OBJECT
public:
explicit MyThread(QObject *parent = nullptr);
protected:
void run() override;
signals:
};
#endif // MYTHREAD_H
// mythread.cpp
#include "mythread.h"
void MyThread::run()
{
while (1)
{
QByteArray data = USB_Read_Process(); // 调用USB_Read_Process函数,获取接收到的20个字节数据
Rx_dat_buf = data; // 将数据存储在Rx_dat_buf数组中
}
}
MyThread::MyThread(QObject *parent) : QThread(parent)
{
}
通过以上步骤,您就可以在QT中创建一个新的线程,专门用于接收USB数据并传递给mainwidow.cpp中定义的数据Rx_dat_buf了。
阅读全文