⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 analyzedata.h

📁 传感器读取程序
💻 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 + -