📄 databuffer.c
字号:
#include "CGJ.H"
#include "DataBuffer.h"
/***************************************************************************************************************
* 定义缓冲区数据结构
***************************************************************************************************************/
typedef struct{
FP32 *SpeedRingBufferIn;
FP32 SpeedRingBuffer[SPEED_BUFFER_SIZE];
}SPEED_RING_BUF;
typedef struct{
FP32 *ForceRingBufferIn;
FP32 ForceRingBuffer[FORCE_BUFFER_SIZE];
}FORCE_RING_BUF;
typedef struct {
INT32U *AdRingBufferIn;
INT32U AdRingBuffer[AD_BUFFER_SIZE];
}AD_RING_BUF;
SPEED_RING_BUF SpeedRingBuf;
FORCE_RING_BUF ForceRingBuf;
AD_RING_BUF AdRingBuf;
/***************************************************************************************************************
* 函数名称: BufferInit()
* 功 能: 初始化
* 入口参数: 无
* 出口参数: 无
* 调用模块:
* 全局变量:
* 设计者: 饶阳胜
* 日 期: 05-8-6
***************************************************************************************************************/
void BufferInit()
{
INT8U i;
SPEED_RING_BUF *ps;
FORCE_RING_BUF *pf;
AD_RING_BUF *pa;
ps = &SpeedRingBuf;
pf = &ForceRingBuf;
pa = &AdRingBuf;
ps->SpeedRingBufferIn = &ps->SpeedRingBuffer[0];
pf->ForceRingBufferIn = &pf->ForceRingBuffer[0];
pa->AdRingBufferIn = &pa->AdRingBuffer[0];
for(i = 0; i < SPEED_BUFFER_SIZE; i++){
ps->SpeedRingBuffer[i] = 0;
}
for(i = 0; i < FORCE_BUFFER_SIZE; i++){
pf->ForceRingBuffer[i] = 0;
}
for(i = 0; i < AD_BUFFER_SIZE; i++) {
pa->AdRingBuffer[i] = 0;
}
}
/****************************************************************************************************************
*
****************************************************************************************************************/
void FillStandForceValue(FP32 value)
{
INT8U i;
FORCE_RING_BUF *pf;
pf = &ForceRingBuf;
for(i = 0; i < FORCE_BUFFER_SIZE; i++){
pf->ForceRingBuffer[i] = value;
}
}
/****************************************************************************************************************
* 函数名称:InsertSpeedPoint()
* 功 能: 向速度缓冲区插入一个新的值
* 入口参数: value -> 要插入的速度值
* 出口参数: 无
* 调用模块: 无
* 全局变量: SpeedRingBuf -> 速度缓冲区数据结构
* 设计者: 饶阳胜
* 日 期: 05-8-6
****************************************************************************************************************/
void InsertSpeedPoint(FP32 value)
{
SPEED_RING_BUF *ps;
ps = &SpeedRingBuf;
*ps->SpeedRingBufferIn++ = value;
if(ps->SpeedRingBufferIn == &ps->SpeedRingBuffer[SPEED_BUFFER_SIZE]){
ps->SpeedRingBufferIn = &ps->SpeedRingBuffer[0];
}
}
/****************************************************************************************************************
* 函数名称:InsertForcePoint()
* 功 能: 向力缓冲区插入一个新的值
* 入口参数: value -> 要插入的力值
* 出口参数: 无
* 调用模块: 无
* 全局变量: ForceRingBuf -> 力缓冲区数据结构
* 设计者: 饶阳胜
* 日 期: 05-8-6
****************************************************************************************************************/
void InsertForcePoint(FP32 value)
{
FORCE_RING_BUF *pf;
pf = &ForceRingBuf;
*pf->ForceRingBufferIn++ = value;
if(pf->ForceRingBufferIn == &pf->ForceRingBuffer[FORCE_BUFFER_SIZE]){
pf->ForceRingBufferIn = &pf->ForceRingBuffer[0];
}
}
/*********************************************************************************************************
** 函数名称:
** 功能描述:
**
** 输 入 : 无
** 输 出 : 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者:
** 日 期:
**-------------------------------------------------------------------------------------------------------
** 修 改:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void InsertAdPoint(INT32U value)
{
AD_RING_BUF *pa;
pa = &AdRingBuf;
*pa->AdRingBufferIn++ = value;
if(pa->AdRingBufferIn == &pa->AdRingBuffer[AD_BUFFER_SIZE]) {
pa->AdRingBufferIn = &pa->AdRingBuffer[0];
}
}
/***************************************************************************************************************
* 函数名称: GetAdverOfSpeed
* 功 能: 得到速度缓冲区的平均值
* 入口参数: 无
* 出口参数: 速度的平均值
* 调用模块: 无
* 全局变量: SpeedRingBuf -> 速度缓冲区数据结构
* 设计者: 饶阳胜
* 日 期: 05-8-6
***************************************************************************************************************/
FP32 GetAdverOfSpeed()
{
SPEED_RING_BUF *ps;
FP32 sum, adverage;
INT8U i;
ps = &SpeedRingBuf;
sum = 0;
for(i = 0; i < SPEED_BUFFER_SIZE; i++){
sum += ps->SpeedRingBuffer[i];
}
adverage = sum / SPEED_BUFFER_SIZE;
return (adverage);
}
/**************************************************************************************************************
* 函数名称: GetAdverOfForce
* 功 能: 得到力缓冲区的平均值
* 入口参数: 无
* 出口参数: 力的平均值
* 调用模块: 无
* 全局变量: ForceRingBuf -> 力缓冲区数据结构
* 设计者: 饶阳胜
* 日 期: 05-8-6
**************************************************************************************************************/
FP32 GetAdverOfForce()
{
FORCE_RING_BUF *pf;
FP32 sum, adverage;
INT8U i;
pf = &ForceRingBuf;
sum = 0;
for(i = 0; i < FORCE_BUFFER_SIZE; i++){
sum += pf->ForceRingBuffer[i];
}
adverage = sum / FORCE_BUFFER_SIZE;
return (adverage);
}
/*********************************************************************************************************
** 函数名称:
** 功能描述:
**
** 输 入 : 无
** 输 出 : 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者:
** 日 期:
**-------------------------------------------------------------------------------------------------------
** 修 改:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
INT32U GetAverAD(void)
{
AD_RING_BUF *pa;
INT32U sum, aver;
INT32U i;
pa = &AdRingBuf;
sum = 0;
for(i = 0; i < AD_BUFFER_SIZE; i++) {
sum += pa->AdRingBuffer[i];
}
aver = sum / AD_BUFFER_SIZE;
return aver;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -