11/28
This commit is contained in:
@@ -6,7 +6,23 @@
|
||||
BCIManager::BCIManager(QObject *parent)
|
||||
: QObject{parent}
|
||||
{
|
||||
heartTimer = new QTimer();
|
||||
heartTimer->setInterval(1000);
|
||||
heartTimer->start();
|
||||
trainTimer = new QTimer();
|
||||
connect(heartTimer, SIGNAL(timeout()), this, SLOT(slotHeartTimer()));
|
||||
connect(trainTimer, SIGNAL(timeout()), this, SLOT(slotTrainTimer()));
|
||||
|
||||
m_st_bicycleParam.trainMode = 0; //被动
|
||||
m_st_bicycleParam.spasmSwitch = 1; //开启
|
||||
m_st_bicycleParam.spasmLevel = 1; //默认一级
|
||||
m_st_bicycleParam.configPower = 0; //默认低
|
||||
m_st_bicycleParam.switchDirectonTime = 10; //换向时间默认10
|
||||
m_st_bicycleParam.phaseValue = 0; //协同相位值
|
||||
m_st_bicycleParam.direction = 1; //方向正向
|
||||
m_st_bicycleParam.speed = 10; //速度 10
|
||||
m_st_bicycleParam.resistance = 10; //阻力 Nm 0~20挡
|
||||
m_st_bicycleParam.spasmType = 0; //默认逆向
|
||||
|
||||
}
|
||||
|
||||
@@ -51,6 +67,34 @@ bool BCIManager::startLinkerPrograme()
|
||||
m_pCmd->start(strCmd);
|
||||
}
|
||||
|
||||
void BCIManager::initTrain()
|
||||
{
|
||||
if(nullptr == heartTimer)
|
||||
{
|
||||
heartTimer = new QTimer();
|
||||
heartTimer->setInterval(1000);
|
||||
heartTimer->start();
|
||||
connect(heartTimer, SIGNAL(timeout()), this, SLOT(slotHeartTimer()));
|
||||
}
|
||||
|
||||
if(nullptr == trainTimer)
|
||||
{
|
||||
trainTimer = new QTimer();
|
||||
connect(trainTimer, SIGNAL(timeout()), this, SLOT(slotTrainTimer()));
|
||||
|
||||
m_st_bicycleParam.trainMode = 0; //被动
|
||||
m_st_bicycleParam.spasmSwitch = 1; //开启
|
||||
m_st_bicycleParam.spasmLevel = 1; //默认一级
|
||||
m_st_bicycleParam.configPower = 0; //默认低
|
||||
m_st_bicycleParam.switchDirectonTime = 10; //换向时间默认10
|
||||
m_st_bicycleParam.phaseValue = 0; //协同相位值
|
||||
m_st_bicycleParam.direction = 1; //方向正向
|
||||
m_st_bicycleParam.speed = 10; //速度 10
|
||||
m_st_bicycleParam.resistance = 10; //阻力 Nm 0~20挡
|
||||
m_st_bicycleParam.spasmType = 0; //默认逆向
|
||||
}
|
||||
}
|
||||
|
||||
void BCIManager::slotLinkerProgrameReadyReadStandardOutput()
|
||||
{
|
||||
if(m_pCmd)
|
||||
@@ -66,3 +110,82 @@ void BCIManager::slotLinkerProgrameReadyReadStandardError()
|
||||
qDebug() << m_pCmd->readAllStandardError();
|
||||
}
|
||||
}
|
||||
|
||||
void BCIManager::slotHeartTimer()
|
||||
{
|
||||
//qDebug()<<"上位机发送心跳";
|
||||
CCommunicateAPI::getInstance()->sendHeartBeat();
|
||||
static int num = 0;
|
||||
++num;
|
||||
if(num > 3)
|
||||
{
|
||||
num = 0;
|
||||
QPixmap pixmap;
|
||||
if(heartCount < 1)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
if(heartCount >= 3)
|
||||
{
|
||||
heartCount = 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void BCIManager::slotTrainTimer()
|
||||
{
|
||||
stopTrain();
|
||||
}
|
||||
|
||||
void BCIManager::startTrain(int Part, int Time)
|
||||
{
|
||||
initTrain();
|
||||
if(trainTimer->isActive())
|
||||
{
|
||||
stopTrain();
|
||||
}
|
||||
trainTimer->setInterval(Time * 1000);
|
||||
trainTimer->start();
|
||||
//状态控制 0-停止 1启动 2-暂停 3-继续
|
||||
m_st_bicycleParam.controlState = 1;
|
||||
m_st_bicycleParam.bodyPart = Part; //训练部位 0-上肢 1-下肢 2-四肢 3-垂直上肢
|
||||
m_st_bicycleParam.trainTime = 120;
|
||||
CCommunicateAPI::getInstance()->sendBicycleParam(m_st_bicycleParam);
|
||||
|
||||
}
|
||||
void BCIManager::stopTrain()
|
||||
{
|
||||
if(trainTimer)
|
||||
{
|
||||
if(trainTimer->isActive())
|
||||
{
|
||||
trainTimer->stop();
|
||||
}
|
||||
m_st_bicycleParam.controlState = 0;
|
||||
CCommunicateAPI::getInstance()->sendBicycleParam(m_st_bicycleParam);
|
||||
}
|
||||
}
|
||||
void BCIManager::pauseTrain()
|
||||
{
|
||||
if(trainTimer)
|
||||
{
|
||||
trainTimer->stop();
|
||||
m_st_bicycleParam.controlState = 2;
|
||||
CCommunicateAPI::getInstance()->sendBicycleParam(m_st_bicycleParam);
|
||||
}
|
||||
}
|
||||
void BCIManager::continueTrain()
|
||||
{
|
||||
if(trainTimer)
|
||||
{
|
||||
trainTimer->start();
|
||||
m_st_bicycleParam.controlState = 3;
|
||||
CCommunicateAPI::getInstance()->sendBicycleParam(m_st_bicycleParam);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
#include <QObject>
|
||||
#include <QProcess>
|
||||
#include "QmlTcpSocket/TcpSocket.h"
|
||||
#include "ccommunicateapi.h"
|
||||
#include <QTimer>
|
||||
|
||||
class BCIManager : public QObject
|
||||
{
|
||||
@@ -20,21 +22,40 @@ public:
|
||||
static void registerQMLType()
|
||||
{
|
||||
qmlRegisterType<QMLTcpSockets::TcpSocket>("TcpSocket", 2, 0, "TcpSocket");
|
||||
qmlRegisterType<BCIManager>("BCIManager", 2, 0, "BCIManager");
|
||||
}
|
||||
//启动Linker工具
|
||||
bool startLinkerPrograme();
|
||||
|
||||
|
||||
Q_INVOKABLE void initTrain();
|
||||
Q_INVOKABLE void startTrain(int Part, int Time);
|
||||
Q_INVOKABLE void stopTrain();
|
||||
Q_INVOKABLE void pauseTrain();
|
||||
Q_INVOKABLE void continueTrain();
|
||||
|
||||
private slots:
|
||||
//Linker程序的标准输出
|
||||
void slotLinkerProgrameReadyReadStandardOutput();
|
||||
//Linker程序的错误输出
|
||||
void slotLinkerProgrameReadyReadStandardError();
|
||||
|
||||
//下位机心跳包
|
||||
void slotHeartTimer();
|
||||
//下位机心训练计时停止
|
||||
void slotTrainTimer();
|
||||
|
||||
signals:
|
||||
void signalQmlStopLinkerPrograme();
|
||||
|
||||
private:
|
||||
QProcess *m_pCmd = nullptr;
|
||||
|
||||
QTimer *heartTimer = nullptr;
|
||||
QTimer *trainTimer = nullptr;
|
||||
|
||||
int heartCount = 0; //心跳次数,用于检测通信
|
||||
ST_BicycleParam m_st_bicycleParam; //启动参数
|
||||
};
|
||||
|
||||
#endif // BCIMANAGER_H
|
||||
|
||||
@@ -8,58 +8,15 @@ eyeTrainWidget::eyeTrainWidget(QWidget *parent) :
|
||||
ui(new Ui::eyeTrainWidget)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
heartTimer = new QTimer();
|
||||
heartTimer->setInterval(1000);
|
||||
heartTimer->start();
|
||||
trainTimer = new QTimer();
|
||||
connect(heartTimer, SIGNAL(timeout()), this, SLOT(slotHeartTimer()));
|
||||
connect(trainTimer, SIGNAL(timeout()), this, SLOT(slotTrainTimer()));
|
||||
|
||||
m_st_bicycleParam.trainMode = 0; //被动
|
||||
m_st_bicycleParam.spasmSwitch = 1; //开启
|
||||
m_st_bicycleParam.spasmLevel = 1; //默认一级
|
||||
m_st_bicycleParam.configPower = 0; //默认低
|
||||
m_st_bicycleParam.switchDirectonTime = 10; //换向时间默认10
|
||||
m_st_bicycleParam.phaseValue = 0; //协同相位值
|
||||
m_st_bicycleParam.direction = 1; //方向正向
|
||||
m_st_bicycleParam.speed = 10; //速度 10
|
||||
m_st_bicycleParam.resistance = 10; //阻力 Nm 0~20挡
|
||||
m_st_bicycleParam.spasmType = 0; //默认逆向
|
||||
|
||||
BCIManager::getInstance().startLinkerPrograme();
|
||||
ui->quickWidget->setSource(QUrl("qrc:/DependFile/QML/Ssvep.qml"));
|
||||
|
||||
// int8_t controlState;//状态控制 0-停止 1启动 2-暂停 3-继续
|
||||
// int8_t bodyPart; //训练部位 0-上肢 1-下肢 2-四肢 3-垂直上肢
|
||||
// int8_t trainMode; //训练模式 0-被动 1-主动 2-助力 3-等速 4-上下肢协同被动 7-四肢主被动 9-单独主动 10-被动可切主动(主被动)
|
||||
// int8_t spasmSwitch; //痉挛开关 0-关 1-开
|
||||
// int8_t spasmLevel; //痉挛等级1~3挡
|
||||
// int8_t configPower; //配置功率0~2 低中高
|
||||
// int8_t switchDirectonTime;//换向时间
|
||||
// int8_t phaseValue; //协同相位值
|
||||
// int8_t direction; //方向 0-逆向 1-正向
|
||||
// int8_t speed; //速度 2~60r/min
|
||||
// int8_t resistance; //阻力 Nm 0~20挡
|
||||
// int8_t spasmType; //痉挛后方向 1-正向 0-逆向,默认逆向,没有了
|
||||
// uint8_t trainTime; //训练时间 0~120min
|
||||
|
||||
|
||||
}
|
||||
|
||||
eyeTrainWidget::~eyeTrainWidget()
|
||||
{
|
||||
|
||||
|
||||
if(heartTimer)
|
||||
{
|
||||
heartTimer->stop();
|
||||
delete heartTimer;
|
||||
}
|
||||
if(trainTimer)
|
||||
{
|
||||
trainTimer->stop();
|
||||
delete trainTimer;
|
||||
}
|
||||
delete ui;
|
||||
QVariant retVal;
|
||||
QMetaObject::invokeMethod(ui->quickWidget->rootObject(),
|
||||
@@ -74,83 +31,10 @@ eyeTrainWidget::~eyeTrainWidget()
|
||||
}
|
||||
|
||||
}
|
||||
void eyeTrainWidget::startTrain(int8_t Part, int Time)
|
||||
{
|
||||
// heartTimer->start();
|
||||
trainTimer->setInterval(Time*1000);
|
||||
trainTimer->start();
|
||||
//状态控制 0-停止 1启动 2-暂停 3-继续
|
||||
m_st_bicycleParam.controlState = 1;
|
||||
m_st_bicycleParam.bodyPart = Part; //训练部位 0-上肢 1-下肢 2-四肢 3-垂直上肢
|
||||
m_st_bicycleParam.trainTime = 120;
|
||||
CCommunicateAPI::getInstance()->sendBicycleParam(m_st_bicycleParam);
|
||||
|
||||
}
|
||||
void eyeTrainWidget::stopTrain()
|
||||
{
|
||||
|
||||
heartTimer->stop();
|
||||
trainTimer->stop();
|
||||
|
||||
m_st_bicycleParam.controlState = 0;
|
||||
CCommunicateAPI::getInstance()->sendBicycleParam(m_st_bicycleParam);
|
||||
|
||||
}
|
||||
void eyeTrainWidget::pauseTrain()
|
||||
{
|
||||
trainTimer->stop();
|
||||
m_st_bicycleParam.controlState = 2;
|
||||
CCommunicateAPI::getInstance()->sendBicycleParam(m_st_bicycleParam);
|
||||
}
|
||||
void eyeTrainWidget::continueTrain()
|
||||
{
|
||||
trainTimer->start();
|
||||
m_st_bicycleParam.controlState = 3;
|
||||
CCommunicateAPI::getInstance()->sendBicycleParam(m_st_bicycleParam);
|
||||
}
|
||||
|
||||
void eyeTrainWidget::slotQmlStatusChanged(QQuickWidget::Status emStatus)
|
||||
{
|
||||
qDebug() << "3342" << emStatus;
|
||||
qDebug() << "slotQmlStatusChanged" << emStatus;
|
||||
}
|
||||
void eyeTrainWidget::slotHeartTimer()
|
||||
{
|
||||
//qDebug()<<"上位机发送心跳";
|
||||
CCommunicateAPI::getInstance()->sendHeartBeat();
|
||||
static int num = 0;
|
||||
++num;
|
||||
if(num > 3)
|
||||
{
|
||||
num = 0;
|
||||
QPixmap pixmap;
|
||||
if(heartCount < 1)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
}
|
||||
if(heartCount >= 3)
|
||||
{
|
||||
heartCount = 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
void eyeTrainWidget::slotTrainTimer()
|
||||
{
|
||||
|
||||
trainTimer->stop();
|
||||
m_st_bicycleParam.controlState = 0;
|
||||
CCommunicateAPI::getInstance()->sendBicycleParam(m_st_bicycleParam);
|
||||
}
|
||||
/*void eyeTrainWidget::on_startButton_clicked()
|
||||
{
|
||||
startTrain(0, 10);
|
||||
}
|
||||
void eyeTrainWidget::on_closeButton_clicked()
|
||||
{
|
||||
stopTrain();
|
||||
}*/
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include <QTimer>
|
||||
#include <QMessageBox>
|
||||
#include <QDebug>
|
||||
#include "ccommunicateapi.h"
|
||||
#include <QQuickWidget>
|
||||
namespace Ui
|
||||
{
|
||||
@@ -19,26 +18,13 @@ class eyeTrainWidget : public QWidget
|
||||
public:
|
||||
explicit eyeTrainWidget(QWidget *parent = nullptr);
|
||||
~eyeTrainWidget();
|
||||
ST_BicycleParam m_st_bicycleParam; //启动参数
|
||||
void startTrain(int8_t Part, int Time);
|
||||
void stopTrain();
|
||||
void pauseTrain();
|
||||
void continueTrain();
|
||||
|
||||
private slots:
|
||||
void slotQmlStatusChanged(QQuickWidget::Status emStatus);
|
||||
|
||||
private:
|
||||
Ui::eyeTrainWidget *ui;
|
||||
QTimer *heartTimer;
|
||||
QTimer *trainTimer;
|
||||
|
||||
int heartCount; //心跳次数,用于检测通信
|
||||
private slots:
|
||||
void slotHeartTimer();
|
||||
void slotTrainTimer();
|
||||
//void on_startButton_clicked();
|
||||
//void on_closeButton_clicked();
|
||||
};
|
||||
|
||||
#endif // EYETRAINWIDGET_H
|
||||
|
||||
Reference in New Issue
Block a user