USB_Read_Process 改为int ret = USB_Read_Process(Rx_dat_buf, 500)上面的重写下
时间: 2023-08-16 13:04:43 浏览: 87
STM8文档资料 STM8_CPU_PROGRAM
好的,根据您的要求,我对之前的示例代码进行了修改,如下所示:
// 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)
{
int ret = USB_Read_Process(Rx_dat_buf, 500); // 调用USB_Read_Process函数,获取接收到的20个字节数据
if (ret < 0)
{
qDebug() << "USB_Read_Process error!";
return;
}
}
}
MyThread::MyThread(QObject *parent) : QThread(parent)
{
}
在这个示例代码中,我将USB_Read_Process函数的调用改为int类型,并且增加了一个超时时间参数500ms。在MyThread线程中,每次通过USB_Read_Process函数获取20个字节的数据,并将其存储在Rx_dat_buf数组中。如果USB_Read_Process函数返回值小于0,说明出现了错误,此时MyThread线程将退出并打印错误信息。
阅读全文