📄 analyzedata.h
字号:
#ifndef ANALYZEDATA_H_
#define ANALYZEDATA_H_
/***************************************************
用于存储画在桌面上的点的结构体.该结构体使用在函数
ShowDataOnScreen内
***************************************************/
typedef struct _DRAWONSCREEN
{
int m_x;
int m_y;
int m_z;
}DRAWONSCREEN;
/***************************************************
用于存储从串口读出的原始数据,BUFFER_SZE是开辟的缓存
的大小
***************************************************/
typedef struct _RAWDATA
{
int m_x;
int m_y;
int m_z;
}RAWDATA;
#define BUFFER_SIZE 4096
/***************************************************
加速器动作类型
***************************************************/
#define NOACTION 0
#define LEFT_SINGLE_CLICK 1
#define LEFT_SINGLE_LIKELY 2
#define LEFT_DOUBLE_CLICK 3
#define LEFT_DOUBLE_LIKELY 4
#define RIGHT_SINGLE_CLICK 5
#define RIGHT_SINGLE_LIKELY 6
/***************************************************
x,y,z轴方向静止时的平均数出数据(这几个数据是统计值)
***************************************************/
#define XSTILLVALUE 144.3274
#define YSTILLVALUE 136.5008
#define ZSTILLVALUE 196.1434
#define XSTILLVALUE_MAX 148
#define YSTILLVALUE_MAX 141
#define ZSTILLVALUE_MAX 200
#define XSTILLVALUE_MIN 140
#define YSTILLVALUE_MIN 131
#define ZSTILLVALUE_MIN 192
/***************************************************
鼠标移动时的变换常数
***************************************************/
#define XDIV 60
#define YDIV 50
#define ZDIV 100
/***************************************************
判断动作时初始最大最小值
***************************************************/
#define MIN_VALUE -100
#define MAX_VALUE 500
/***************************************************
判断鼠标是否为右键单击时的常数
***************************************************/
#define SINGLE_RIGHT_DOWN_VALVE 150
#define SINGLE_RIGHT_UP_VALVE 250
#define SINGLE_RIGHT_LENGTH 30
/***************************************************
判断鼠标是否为左键单击时的常数
***************************************************/
#define SINGLE_LEFT_DOWN_VALVE 130
#define SINGLE_LEFT_UP_VALVE 250
#define SINGLE_LEFT_LENGTH 30
/***************************************************
判断鼠标是否为左键双击时的常数
***************************************************/
#define DOUBLE_LEFT_DOWN_VALVE 150
#define DOUBLE_LEFT_UP_VALVE 250
#define DOUBLE_LEFT_LENGTH 50
///////////////////////////////////////////////////
///////////////////////////////////////////////////
/***************************************************
函数名 AnalyzeData
参数 窗口句柄,刚读出的数据的缓存地址,缓存大小,
RAWDATA缓存的地址, RAWDATA缓存存储的位置,文件句柄
返回值 无
函数描述 分析数据
***************************************************/
void AnalyzeData(HWND, char *, int, RAWDATA *, int *, FILE *);
/***************************************************
函数名 FillRawDataBuffer
参数 刚读出的数据的缓存地址,RAWDATA缓存的地址,
RAWDATA缓存存储的位置
返回值 无
函数描述 填充RAWDATA缓存
***************************************************/
void FillRawDataBuffer(char *, RAWDATA *, int *);
/***************************************************
函数名 JudgeAction
参数 窗口句柄,RAWDATA缓存的地址,
RAWDATA缓存存储的位置
返回值 加速器动作类型
函数描述 判断动作
***************************************************/
int JudgeAction(HWND, RAWDATA *, int);
/***************************************************
函数名 CalculateRight
参数 前面的各个动作布尔值,缓存的地址,
当前缓存的位置,已发生的动作的位置,已发送的动作的类型
返回值 无
函数描述 判断是否有权利判断动作
***************************************************/
void CalculateRight(bool *, bool *, bool *, RAWDATA*, int, int *, int *);
/***************************************************
函数名 RecognizeCycle
参数 文件句柄,RAWDATA缓存的地址, RAWDATA缓存存储的位置
返回值 无
函数描述 识别画圈动作
***************************************************/
void RecognizeCycle(FILE *, RAWDATA *, int);
/***************************************************
函数名 CalculateVelocity
参数 前三个参数为原始加速度,中间三个参数为上一
次的速度,最后三个参数是计算出的新的速度
返回值 无
函数描述 计算速度
***************************************************/
void CalculateVelocity(int, int, int, int *, int *, int *, int *, int *, int *);
/***************************************************
函数名 CalculateDisplacement
参数 前三个参数为原始加速度,中间三个参数为上一
次的速度,最后三个参数是计算出的新的位移
返回值 无
函数描述 计算位移
***************************************************/
void CalculateDisplacement(int, int, int, int *, int *, int *, int *, int *, int *);
/***************************************************
函数名 DisplacementAccumulation
参数 前三个参数为原始加速度,
最后三个参数是计算出的新的累积位移
返回值 无
函数描述 计算累积位移
***************************************************/
void DisplacementAccumulation(int, int, int, int *, int *, int *);
/***************************************************
函数名 WhetherAccumulation
参数 前三个参数为存放原始加速度的缓存,
最后一个参数为当前缓存的位置
返回值 布尔值
函数描述 判断是否需要累加
***************************************************/
bool WhetherAccumulation(int *, int *, int *, int);
/***************************************************
函数名 IsLeftSingleClick
参数 RAWDATA缓存的地址, RAWDATA缓存存储的位置,
上一个动作峰值存放在缓存中的位置,已发送的动作的类型
返回值 布尔值
函数描述 判断是否为左键单击动作
***************************************************/
bool IsLeftSingleClick(RAWDATA *, int, int *, int *);
/***************************************************
函数名 IsLeftSingleClick
参数 RAWDATA缓存的地址, RAWDATA缓存存储的位置,
上一个动作峰值存放在缓存中的位置,已发送的动作的类型
返回值 布尔值
函数描述 判断是否为左键单击动作
***************************************************/
bool IsLeftDoubleClick(RAWDATA *, int, int *, int *);
/***************************************************
函数名 IsRightSingleClick
参数 RAWDATA缓存的地址, RAWDATA缓存存储的位置,
上一个动作峰值存放在缓存中的位置,已发送的动作的类型
返回值 布尔值
函数描述 判断是否为右键单击动作
***************************************************/
bool IsRightSingleClick(RAWDATA *, int, int *, int *);
/***************************************************
函数名 MouseMove
参数 窗口句柄,RAWDATA缓存的地址,
RAWDATA缓存存储的位置
返回值 无
函数描述 移动鼠标
***************************************************/
void MouseMove(HWND, RAWDATA *, int);
/***************************************************
函数名 ConvertRawDateIntoAcceleration
参数 转化后的实际x轴方向的加速度地址,
转化后的实际y轴方向的加速度地址,
转化后的实际z轴方向的加速度地址,
RAWDATA缓存的地址,
RAWDATA缓存存储的位置
返回值 无
函数描述 将三个方向上的原始数据转化为实际加速度
***************************************************/
void ConvertRawDateIntoAcceleration(float*, float*, float*, RAWDATA *, int);
/***************************************************
函数名 Filter
参数 转化后的实际x轴方向的加速度地址,
转化后的实际y轴方向的加速度地址,
转化后的实际z轴方向的加速度地址,
返回值 无
函数描述 将数据过滤,主要用途是消抖
***************************************************/
void Filter(float *, float *, float *);
/***************************************************
函数名 GetXAxisMovementByPixel
参数 x轴方向的过滤后的数据,
从上次统计至现在x轴方向目前移动了的总位移
x轴当前坐标
返回值 x轴方向移动的像素点
函数描述 获得x轴方向鼠标移动的像素点
***************************************************/
int GetXAxisMovementByPixel(float, float *, int);
/***************************************************
函数名 GetYAxisMovementByPixel
参数 y轴方向的过滤后的数据,
从上次统计至现在y轴方向目前移动了的总位移
y轴当前坐标
返回值 y轴方向移动的像素点
函数描述 获得y轴方向鼠标移动的像素点
***************************************************/
int GetYAxisMovementByPixel(float, float *, int);
/***************************************************
函数名 WriteDataToFile
参数 文件句柄,缓存地址,缓存大小
返回值 无
函数描述 将数据写入文件
***************************************************/
//void WriteDataToFile(FILE *, char *, int);
void WriteDataToFile(FILE *, int, int, int);
/***************************************************
函数名 ShowDataOnScreen
参数 缓存地址,缓存大小
返回值 无
函数描述 将数据显示在屏幕上
***************************************************/
void ShowDataOnScreen(char *, int);
// Changed by MZH - 2008.4.2(b)
/**************************************************
常量名 fAX
常量描述 x输出值和电压的系数
***************************************************/
const static float fAX = 0.01230769f;
/**************************************************
常量名 fBX
常量描述 x输出值和电压的偏移常数
***************************************************/
const static float fBX = -0.06076923f;
/**************************************************
常量名 fAY
常量描述 y输出值和电压的系数
***************************************************/
const static float fAY = 0.012698413f;
/**************************************************
常量名 fBY
常量描述 y输出值和电压的偏移常数
***************************************************/
const static float fBY = -0.216666667f;
/**************************************************
常量名 fAZ
常量描述 z输出值和电压的系数
***************************************************/
const static float fAZ = 0.01300813f;
/**************************************************
常量名 fBZ
常量描述 z输出值和电压的偏移常数
***************************************************/
const static float fBZ = -0.086585366f;
/**************************************************
常量名 SEN
常量描述 电压与加速度的灵敏度关系 (V/g)
***************************************************/
const static float SEN = 0.8f;
/**************************************************
常量名 fVOFF
常量描述 零偏电压常值 (V)
***************************************************/
const static float fVOFF = 1.65f;
/**************************************************
常量名 g
常量描述 重力加速度 (m/s^2)
***************************************************/
const static float g = 9.8f;
/**************************************************
常量名 dt
常量描述 采样时间间隔 (s)
***************************************************/
const static float dt = 0.02f;
/**************************************************
常量名 INTERVAL
常量描述 移动间隔 (s)
***************************************************/
const static int INTERVAL = 100;
// Changed by MZH - 2008.4.2(e)
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -