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
|