387 lines
12 KiB
C
387 lines
12 KiB
C
|
#ifndef DATAFORMATE_H
|
|||
|
#define DATAFORMATE_H
|
|||
|
#include <QWidget>
|
|||
|
#define PAGENUM 8 //每页显示数量
|
|||
|
#define MAXSHOWNUM 1000 //最大显示数量
|
|||
|
#define PERCOUNT 8 //用户每页显示数量
|
|||
|
//上位机发送使用
|
|||
|
#define PACKHEAD 0xAB //帧头
|
|||
|
#define PACKTAIL 0xCD //帧尾
|
|||
|
//下位机发送使用
|
|||
|
#define SLAVEPACKHEAD 0xBA
|
|||
|
#define SLAVEPACKTAIL 0xDC
|
|||
|
|
|||
|
#define FRAME_HEAD 0xAA
|
|||
|
#define FRAME_END 0x55
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
E_NEW_USER = 0,
|
|||
|
E_EDIT_USER
|
|||
|
}USER_ENUM;
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
ONLY_FES_E = 0,
|
|||
|
BICYCLE_FES_E
|
|||
|
}E_FES_PAGE;
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
Chinese_E,
|
|||
|
English_E
|
|||
|
}E_LANGUAGE;
|
|||
|
|
|||
|
//通信状态
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
UnconnectedState_E = 0,
|
|||
|
HostLookupState_E,
|
|||
|
ConnectingState_E,
|
|||
|
ConnectedState_E,
|
|||
|
BoundState_E,
|
|||
|
ClosingState_E,
|
|||
|
ListeningState_E
|
|||
|
|
|||
|
}E_DeviceState;
|
|||
|
|
|||
|
//页面切换
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
MainPage_E = 0, //主界面
|
|||
|
TrainingPage_E, //训练界面
|
|||
|
UserPage_E, //用户界面
|
|||
|
SettingPage_E, //设置界面
|
|||
|
BicycleParamSet_E, //踏车参数设置界面
|
|||
|
FesParamSet_E, //fes设置界面
|
|||
|
FesBicycleParamSet_E, //FesT踏车设置界面
|
|||
|
BicycleToFes_E, //从踏车界面到FES界面
|
|||
|
TrainingParamSetting_E, //从肢体训练界面,进入参数设置
|
|||
|
BrainTraining, //脑电训练
|
|||
|
visionTrain //视觉训练
|
|||
|
//LoginPage_E //切换到登录页面
|
|||
|
}E_PAGENAME;
|
|||
|
|
|||
|
//上位机发送指令
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
BICYCLE_PARAM_CMD = 0x01, //启动前参数
|
|||
|
REALTIME_PARAM_CMD = 0x02, //实时调节参数
|
|||
|
SEND_HEARTBEAT_CMD = 0X05, //发送心跳(启用)
|
|||
|
GET_VERSION_CMD = 0X08 //获取版本号
|
|||
|
}E_SENDCMDID;
|
|||
|
|
|||
|
//游戏训练状态
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
START = 0x01, //运行
|
|||
|
PAUSE = 0x02, //暂停
|
|||
|
STOP = 0x03 //停止
|
|||
|
}E_TRAINSTATE;
|
|||
|
|
|||
|
//接收下位机指令
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
BRFORE_START_CMD = 0x00, //启动前
|
|||
|
AFTER_START_CMD = 0x01, //启动后
|
|||
|
RECE_HEARTBEAT_CMD = 0x02 //接收心跳(启用)
|
|||
|
}E_RECECMDID;
|
|||
|
|
|||
|
//实时调节参数子指令
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
RESISTANCE_CMD = 0x01, //阻力
|
|||
|
PASSIVE_SPEED = 0x02, //被动转速
|
|||
|
SPASM_LEVEL = 0x03, //痉挛等级
|
|||
|
SWITCH_DIRECTION = 0x04,//手动换向
|
|||
|
EQUAL_SPEED = 0x08, //等速转速
|
|||
|
SYNERGY_SPEED = 0x09, //协同限速
|
|||
|
SPASM_CONFIRM = 0x10, //确认痉挛
|
|||
|
TUIGAN_UPDOWN = 0x11, //推杆响应 1-up 2-down
|
|||
|
YIJIAN_SHANGJI = 0x12 //一键上机
|
|||
|
|
|||
|
}E_REALTIMECMD;
|
|||
|
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
CMD_PARAM_SET_E = 0x71, //单独电刺激参数设置
|
|||
|
CMD_CHANNEL_CONTROL =0x72, //电刺激控制0-关闭 1-开启 2-暂停 3-继续
|
|||
|
PreCurrentSet_E = 0x73, //预设电流设置
|
|||
|
PreCurrentSwitch = 0x76, //预设电流控制开关
|
|||
|
CMD_QUERY_STATE_E = 0x78, //查询各个电刺激模块状态
|
|||
|
CMD_TURNOFF_E = 0x7A, //关机(断开)
|
|||
|
CMD_SEARCH_DEVICE_E = 0x7B, //设备搜索
|
|||
|
CMD_DEVICE_REPORT_E = 0x7C, //新设备上报
|
|||
|
CMD_DEVICE_CONNECT_E = 0x7D, //连接设备
|
|||
|
CMD_DEVICE_DISCONNECT_E = 0X7E, //设备断开,蓝牙断开(下->上)
|
|||
|
RealTimeParam_E = 0x80, //实时参数
|
|||
|
FESParamSet_E = 0x81, //fes参数
|
|||
|
//CMD_BATTERY_LEVAL = 0x82 //接收显示电量
|
|||
|
FES_PRE_FREQUENCY = 0x7F, //预设频率
|
|||
|
FES_PRE_BINDWIDTH = 0x70 //预设脉宽
|
|||
|
|
|||
|
}E_FESCMD;
|
|||
|
|
|||
|
|
|||
|
//串口配置
|
|||
|
typedef struct ST_SerialPortConfig
|
|||
|
{
|
|||
|
QString portName; //端口名
|
|||
|
int32_t baud; //波特率
|
|||
|
int8_t dataBits; //数据位
|
|||
|
int8_t parity; //奇偶校验
|
|||
|
int8_t stopBit; //停止位
|
|||
|
int8_t flowControl; //流控
|
|||
|
ST_SerialPortConfig()
|
|||
|
{
|
|||
|
portName = "";
|
|||
|
baud = 0;
|
|||
|
dataBits = 0;
|
|||
|
parity = 0;
|
|||
|
stopBit = 0;
|
|||
|
flowControl = 0;
|
|||
|
}
|
|||
|
|
|||
|
}ST_SerialPortConfig;
|
|||
|
|
|||
|
//数据库配置
|
|||
|
typedef struct ST_DataBaseConfig
|
|||
|
{
|
|||
|
QString IP;
|
|||
|
int16_t port;
|
|||
|
QString userName; //用户名
|
|||
|
QString password; //密码
|
|||
|
ST_DataBaseConfig()
|
|||
|
{
|
|||
|
IP = "";
|
|||
|
port = 0;
|
|||
|
userName = "";
|
|||
|
password = "";
|
|||
|
}
|
|||
|
|
|||
|
}ST_DataBaseConfig;
|
|||
|
|
|||
|
|
|||
|
//FES参数中按钮显示
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
QString muscleName; //肌肉名
|
|||
|
int muscleId; //肌肉下标(根据下标可判断左右)
|
|||
|
bool connectState; //连接状态
|
|||
|
int frequency; //频率
|
|||
|
int plus; //脉宽
|
|||
|
int minCurrent; //最小电流
|
|||
|
int maxCurrent; //最小电流
|
|||
|
}ST_MuscleParam;
|
|||
|
|
|||
|
//高级设置参数
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
//预热阶段
|
|||
|
int preheatContinueTime; //预热期持续时间 0~60min step-1
|
|||
|
int preheatAContinueTime; //加速持续时间 0~60min step-1
|
|||
|
int preheatCompensate; //转速补偿 -30~30 step-1
|
|||
|
bool isFesOn; //是否开启电刺激
|
|||
|
int preheatMaxPower; //预热期最大电量 0~50% step-1%
|
|||
|
int transitionalFesRise; //电刺激上升幅度 1~100% step-1%
|
|||
|
//积极阶段
|
|||
|
int positiveFChiXuTime; //向前(持续时间)0~120min step-1
|
|||
|
int positiveFControlSpeed; //向前(控制速度) 5~60r/min step-1
|
|||
|
int positiveBChiXuTime; //(向后)持续时间 0~120min step-1
|
|||
|
int positiveBSpeedCompensate;//(向后)转速补偿 -30~30r/min step-1
|
|||
|
int positiveBresistance; //(向后)阻力扭矩补偿 -20~20Nm step-1
|
|||
|
int timeLimit; //时间阈值 0~240s step-1s
|
|||
|
int speedLimit; //转速阈值 -1~-50r/min step-1
|
|||
|
//消极阶段
|
|||
|
bool isSkipPassive; //跳过此阶段
|
|||
|
int negativeSpeedCompensate; //(向前)转速补偿 -30~30r/min step-1
|
|||
|
int tiredContinueTime; //持续时间(疲劳侦测) 0~30min
|
|||
|
int tiredSpeedCompensate; //转速补偿(疲劳侦测) -30~0 step-1
|
|||
|
}ST_AdvancedParam;
|
|||
|
|
|||
|
/**********与下位机通信--start**********/
|
|||
|
//踏车参数
|
|||
|
#pragma pack(push) // 保存原来的字节对齐方式
|
|||
|
#pragma pack(1)
|
|||
|
|
|||
|
//启动前参数
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
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
|
|||
|
|
|||
|
}ST_BicycleParam;
|
|||
|
|
|||
|
//下位机上传参数
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
int8_t currentMode; //当前模式
|
|||
|
int8_t direction; //方向 0-反向 1-正向
|
|||
|
uint8_t downLimpSpeed; //下肢速度
|
|||
|
uint8_t upLimpSpeed; //上肢速度
|
|||
|
uint16_t leftHandPosition; //左手位置
|
|||
|
uint16_t leftFootPosition; //左脚位置
|
|||
|
uint16_t rightHandPosition; //右手位置
|
|||
|
uint16_t rightFootPosition; //右脚位置
|
|||
|
int8_t upBalance; //上肢平衡度
|
|||
|
int8_t downBalance; //下肢平衡度
|
|||
|
uint16_t upLimpCircle; //上肢圈数
|
|||
|
uint16_t downLimpCircle; //下肢圈数
|
|||
|
int8_t emergencyState; //急停 1-触发 0-未触发
|
|||
|
int8_t spasmState; //痉挛 1-触发 0-未触发
|
|||
|
int8_t error; //系统故障
|
|||
|
int8_t oxygen; //血氧数据
|
|||
|
int8_t overSpeedProtect; //过速保护 0-正常 1-触发
|
|||
|
uint16_t upPower; //上肢功率
|
|||
|
uint16_t downPower; //下肢功率
|
|||
|
uint32_t energy; //能量
|
|||
|
}ST_DeviceParam;
|
|||
|
|
|||
|
#pragma pack(pop) // 恢复字节对齐方式
|
|||
|
/**********与下位机通信--end**********/
|
|||
|
|
|||
|
//脉搏血氧
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
int pulse;//脉搏
|
|||
|
int oxygen;//血氧
|
|||
|
}ST_PulseOxygen;
|
|||
|
|
|||
|
//游戏界面显示参数
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
int type; //0-上肢 1-下肢
|
|||
|
int updown; //方向1-正向 0-逆向
|
|||
|
int power; //阻力
|
|||
|
int speed; //速度
|
|||
|
}ST_SetBicycleParam;
|
|||
|
|
|||
|
#pragma pack(push) //保存对齐状态
|
|||
|
#pragma pack(1)//设定为1字节对齐
|
|||
|
//设置参数
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
uint8_t mode; //模式 1-采集 2-刺激 3-触发
|
|||
|
uint8_t sampleRate; //采样率 1-4K 2-8K
|
|||
|
uint8_t waveStyle; //波形 01-双向对称方波
|
|||
|
uint16_t frequency; //频率
|
|||
|
uint16_t pulseWidth; //脉宽
|
|||
|
uint16_t startAngle; //开始角度(正)
|
|||
|
uint16_t stopAgnle; //结束角度(正)
|
|||
|
|
|||
|
uint16_t startAngleReverse; //开始角度(反)
|
|||
|
uint16_t stopAgnleReverse; //结束角度(反)
|
|||
|
|
|||
|
uint8_t minCurrent; //最小电流
|
|||
|
uint16_t maxCurrent; //最大电流
|
|||
|
uint8_t upDownLimp; // 1-上 2-下
|
|||
|
uint8_t leftRightLimp;//1-左 2-右
|
|||
|
}ST_FESSetParam;
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
uint8_t mode;//模式 1-采集 2-刺激 3-触发
|
|||
|
uint8_t sampleRate; //采样率 1-4K 2-8K
|
|||
|
uint8_t waveStyle; //波形 01-双向对称方波
|
|||
|
uint16_t frequency; //频率
|
|||
|
uint16_t pulseWidth;//脉宽
|
|||
|
uint16_t waveRise; //波升
|
|||
|
uint16_t keepTime; //保持
|
|||
|
uint16_t waveFall; //波降
|
|||
|
uint16_t sleepTime; //休息
|
|||
|
}ST_OnlyFESParam;
|
|||
|
//实时参数
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
uint8_t upSpeed; //1~60rmp/min
|
|||
|
uint8_t downSpeed; //1~60rmp/min
|
|||
|
uint16_t currentUpAngle;//实时角度0~360
|
|||
|
uint16_t currentDownAngle;
|
|||
|
uint8_t direction; //方向 0-逆 1-正
|
|||
|
}ST_FESRealTimeParam;
|
|||
|
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
int muscleId; //肌肉ID
|
|||
|
QString muscleName; //肌肉名称
|
|||
|
int startAngle; //起始角度
|
|||
|
int stopAngle; //停止角度
|
|||
|
}ST_RecipeParam;
|
|||
|
|
|||
|
//电刺激盒状态
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
uint8_t channle1State; //通道1状态 0-脱落 1-连接
|
|||
|
uint8_t channle2State;
|
|||
|
uint8_t power;
|
|||
|
|
|||
|
}ST_FESDeviceState;
|
|||
|
|
|||
|
#pragma pack(pop)//恢复对齐状态
|
|||
|
|
|||
|
//游戏相关参数
|
|||
|
//更改游戏配置文件的参数(通信文件)
|
|||
|
typedef struct ST_GameParam
|
|||
|
{
|
|||
|
int hardLevel; //难度等级 1-3(此处的难度等级对应范围大小)
|
|||
|
int gameTime; //游戏运行时间 单位/s
|
|||
|
int speed; //运行速度 1-5
|
|||
|
int trainingMode; //训练类型
|
|||
|
QString trainTrackFilePath; //路径文件
|
|||
|
bool readPosTable; //是否去读轨迹
|
|||
|
int angleValue; //分段运动角度
|
|||
|
int trainType; //被动训练类型1-圆周 2-分段
|
|||
|
int waitTime; //等待时间
|
|||
|
int maxCircle; //最大圈数
|
|||
|
ST_GameParam()
|
|||
|
{
|
|||
|
hardLevel = 1;
|
|||
|
gameTime = 0;
|
|||
|
speed = 3;
|
|||
|
trainingMode = 0;
|
|||
|
trainTrackFilePath = "";
|
|||
|
readPosTable = false;
|
|||
|
}
|
|||
|
}ST_GameParam;
|
|||
|
|
|||
|
//该结构体用于读取游戏列表
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
int gameID; //游戏ID
|
|||
|
QString gamePath; //游戏路径
|
|||
|
QString iconPath; //游戏图标路径
|
|||
|
QString gameName; //游戏可执行文件名
|
|||
|
QString className; //窗口类名
|
|||
|
QString windownName; //窗口名
|
|||
|
}ST_GameMsg;
|
|||
|
|
|||
|
//游戏控制参数
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
int MsgId; //消息ID
|
|||
|
int ID; //用户ID
|
|||
|
QString userName;//用户名
|
|||
|
float speed; //速度
|
|||
|
int forceLeft; //左平衡
|
|||
|
int forceRight; //右平衡
|
|||
|
int angle; //角度
|
|||
|
}ST_GameControlParam;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
extern void Pressure_CheckCRC(uint8_t*buf,int len,uint8_t* CRC_H,uint8_t* CRC_L);
|
|||
|
extern void Sleep(int msec);
|
|||
|
|
|||
|
#endif // DATAFORMATE_H
|