📄 ashi.cpp.bak
字号:
#include "stdio.h"
#include "memory.h"
//返回采样数据中每个脉宽内含的采样数据个数
void impluse_width(unsigned long RadData[1024],unsigned int N[1024]);
/*
//返回采样数据中脉宽内含的采样数据平均个数
unsigned int impluse_width(unsigned long RadData[1024]);
*/
void main()
{
// 采样得到的数据
unsigned long SampleData[1024];
//采样数据中可能含有多个脉冲,将每个脉宽含的采样数据个数记录于SampleNum
//最后根据需要,可求在脉宽时间内平均的采样个数
unsigned int SampleNum[1024];//数据大小根据实际调整
/*
memset(SampleNum,0,16*sizeof(unsigned int));
// Test
for(int i=0; i<=15; i++)
{
if(i%2)
SampleData[i]=0x00000011;
else
SampleData[i]=0x11111100;
}
*/
impluse_width(SampleData,SampleNum);
// printf("Over!");
}
void impluse_width(unsigned long RadData[1024],unsigned int N[1024])
{
int i,j,k;
int NSample; //脉宽内采样点个数
unsigned int RadDataTemp1,RadDataTemp2;
bool SampleFlag; //采样标志;采到上边沿:SampleFlag=1;采到下边沿:SampleFlag=0;
i=0;
j=0;
k=0;
NSample=0;
SampleFlag=false;
while (i<16) //开始搜索边沿
{
//开始,RadDataTemp1为第一个采样数据,RadDataTemp2为第二个采样数据;
//以后,RadDataTemp1=RadDataTemp2,RadDataTemp2为第三、四、......个采样数据
//RadData采样数据格式,现认为是先存高位后存低位,用右移;否则左移
if((i==0)&&(j==0))
{
RadDataTemp1=(RadData[i]&(0xFF000000>>(8*j)))>>(24-8*j);
j++;
}
else
RadDataTemp1=RadDataTemp2;
RadDataTemp2=(RadData[i]&(0xFF000000>>(8*j)))>>(24-8*j);
j++;
if (RadDataTemp1 < RadDataTemp2)
//判断上升沿: 后一个采样数据大于前一个采样数据;
//或者根据实际改变 判断标准
SampleFlag=true;
else if (RadDataTemp1 > RadDataTemp2)
//判断下降沿: 后一个采样数据小于前一个采样数据;
//或者根据实际改变 判断标准
SampleFlag=false;
if (SampleFlag)
//测到上升沿,开始计采样个数
NSample++;
else if(NSample!=0)
//在有计数的前提下(即先测到上升沿),测到下降沿,停止计数,存贮
{
N[k]=NSample;
NSample=0;
k++;
}
if (j>3)
//完成对4个采样数据的处理
{
j=0;
i++;
}
}
}
/*
unsigned int impluse_width(unsigned long RadData[1024])
{
int i,j,k;
int NSample,N[1024]; //脉宽内采样点个数
unsigned int RadDataTemp1,RadDataTemp2;
bool SampleFlag; //采样标志;采到上边沿:SampleFlag=1;采到下边沿:SampleFlag=0;
i=0;
j=0;
k=0;
NSample=0;
memset(N,0,1024*sizeof(int));
SampleFlag=false;
while (i<1024) //开始搜索边沿
{
//开始,RadDataTemp1为第一个采样数据,RadDataTemp2为第二个采样数据;
//以后,RadDataTemp1=RadDataTemp2,RadDataTemp2为第三、四、......个采样数据
//RadData采样数据格式,现认为是先存高位后存低位,用右移;否则左移
if((i==0)&&(j==0))
{
RadDataTemp1=(RadData[i]&(0xFF000000>>(8*j)))>>(24-8*j);
j++;
}
else
RadDataTemp1=RadDataTemp2;
RadDataTemp2=(RadData[i]&(0xFF000000>>(8*j)))>>(24-8*j);
j++;
if (RadDataTemp1 < RadDataTemp2)
//判断上升沿: 后一个采样数据大于前一个采样数据;
//或者根据实际改变 判断标准
SampleFlag=true;
else if (RadDataTemp1 > RadDataTemp2)
//判断下降沿: 后一个采样数据小于前一个采样数据;
//或者根据实际改变 判断标准
SampleFlag=false;
if (SampleFlag)
//测到上升沿,开始计采样个数
NSample++;
else if(NSample!=0)
//在有计数的前提下(即先测到上升沿),测到下降沿,停止计数,存贮
{
N[k]=NSample;
NSample=0;
k++;
}
if (j>3)
//完成对4个采样数据的处理
{
j=0;
i++;
}
}
//在脉宽时间内平均的采样个数
unsigned int average;
average=0;
for(int l=0; l<k; l++)
{
average+=N[k];
}
return average/k;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -