156 lines
4.3 KiB
C++
156 lines
4.3 KiB
C++
#ifndef FESCONTROLDIALOG_H
|
||
#define FESCONTROLDIALOG_H
|
||
#include "dataformate.h"
|
||
#include <QDialog>
|
||
#include <QSerialPort>
|
||
#include <QListWidgetItem>
|
||
class BLEItem;
|
||
namespace Ui {
|
||
class FesControlDialog;
|
||
}
|
||
|
||
class FesControlDialog : public QDialog
|
||
{
|
||
Q_OBJECT
|
||
|
||
public:
|
||
static FesControlDialog *getInstance();
|
||
~FesControlDialog();
|
||
|
||
//预设电流控制开关
|
||
void setPreCurrentState(int device,int channel,bool state);
|
||
|
||
//预设电流控制大小
|
||
void setPreCurrent(int device,int channel,uint8_t current);
|
||
|
||
//预设置频率大小
|
||
void setPreFrequency(int device,int channel,int16_t current);
|
||
//预设值脉宽大小
|
||
void setPrePulseWidth(int device,int channel,int16_t current);
|
||
|
||
//设置参数(FES踏车)
|
||
void setFesParam(int device,int channel,ST_FESSetParam st_fesParam);
|
||
//实时参数
|
||
void setRealTimeParam(int device,ST_FESRealTimeParam);
|
||
|
||
//通道电刺激控制
|
||
void switchDeviceChannel(int device,int channel,bool on);
|
||
|
||
//单独电刺激
|
||
void setOnlyFesParam(int device,int channel,ST_OnlyFESParam);
|
||
|
||
//保存Fes页面设置的参数,便于发送
|
||
//void saveOnlyFesParam(ST_OnlyFESParam);
|
||
|
||
//保存Fes页面设置的参数
|
||
//void saveBicycleFesParam(ST_FESSetParam);
|
||
|
||
bool getDeviceStateByNo(uint8_t deviceNo);
|
||
|
||
//获取电量
|
||
//int getBatteryValue(uint8_t deviceNo);
|
||
|
||
//获取设备是否选择了肌肉
|
||
bool getMuscleDeviceStateByNo(uint8_t deviceNo);
|
||
//设置设备的肌肉连接
|
||
void setMuscleDeviceStateByNo(uint8_t deviceNo,bool flag);
|
||
|
||
//启动电刺激
|
||
bool openFESDevice();
|
||
|
||
//查询状态
|
||
void queryDeviceState(uint8_t deviceNo);
|
||
|
||
/******
|
||
* 说明:关闭电刺激模块
|
||
*@deviceNo 要关闭的设备号1~8
|
||
*@type 00-关闭某个设备 01-关闭所有设备
|
||
* ********/
|
||
void turnoffDevice(uint8_t deviceNo = 1,uint8_t type = 1);
|
||
|
||
private slots:
|
||
void on_openSerial_Btn_clicked();
|
||
|
||
void on_scanDevice_Btn_clicked();
|
||
|
||
void receiveDataInterface();
|
||
|
||
void displayError(QSerialPort::SerialPortError error);
|
||
|
||
void slotConnectDevice(bool connect,uint8_t device);
|
||
|
||
//查看界面列表
|
||
void on_listWidgetClicked(QListWidgetItem *item);
|
||
|
||
void on_queryDevice_Btn_clicked();
|
||
|
||
void on_flushSerial_Btn_clicked();
|
||
|
||
void slotConnectFes();
|
||
|
||
//设备状态发生变化
|
||
void deviceStateChanged(uint8_t deviceNo,bool state);
|
||
void on_close_Btn_clicked();
|
||
|
||
signals:
|
||
void signalDeviceStateChanged(QList<uint8_t>);
|
||
void signalGetBattery(int deviceNo,int batteryValue);
|
||
protected:
|
||
virtual void showEvent(QShowEvent *event);
|
||
|
||
void paintEvent(QPaintEvent *event);
|
||
|
||
virtual void changeEvent(QEvent* event);
|
||
private:
|
||
FesControlDialog(QWidget *parent = nullptr);
|
||
char getSum(QByteArray srcArray, int startIndex, int endIndex);
|
||
QByteArray createFrame(QByteArray dataBuffer);
|
||
bool initSerialPort();
|
||
//串口操作
|
||
void openSerialPort();
|
||
bool openSeriaport(ST_SerialPortConfig);
|
||
/***电刺激操作****/
|
||
//搜索设备
|
||
void searchDevice();
|
||
//链接设备
|
||
bool connectDevice(QByteArray mac,uint8_t deviceNum);
|
||
void analysisData(QByteArray array);
|
||
void updateDeviceList();
|
||
//数据转换
|
||
QByteArray str2QByteArray(QString str);
|
||
|
||
void sendData(QByteArray array);
|
||
private:
|
||
Ui::FesControlDialog *ui;
|
||
static FesControlDialog* instance;
|
||
QSerialPort *m_serialPort;
|
||
QByteArray receiveArray;
|
||
QList<QByteArray> deviceList;
|
||
QList<QByteArray> addedDeviceList;
|
||
uint8_t deviceConCount;
|
||
QByteArray currentMacDevice;
|
||
QMap<QByteArray,int> connectDevieMap; //数据库保存的设备列表
|
||
QMap<uint8_t,BLEItem *> deviceObjectMap;
|
||
//配置界面
|
||
uint8_t deviceDtateArray[4]; //设备状态
|
||
//已经选择肌肉的设备
|
||
uint8_t checkedMuscle_DeviceArray[4];
|
||
//通道改变时,单独FES待发送的数据,便于滑块发送频率和脉宽
|
||
|
||
ST_OnlyFESParam m_st_OnlyFESParam;
|
||
//通道改变时,FES待发送的数据
|
||
ST_FESSetParam m_st_fesParam;
|
||
//从哪个页面发送来的参数
|
||
E_FES_PAGE E_fromFesType;
|
||
//uint8_t m_batteryValue[4]; //电池电量
|
||
|
||
|
||
//自动控制 设备号,设备Mac,连接状态
|
||
QMap<int,QByteArray> AutoFESDeviceMap;
|
||
QMap<int,bool> AutoFESDeviceControlStateMap;
|
||
|
||
QTimer *connectTimer;
|
||
};
|
||
|
||
#endif // FESCONTROLDIALOG_H
|