//声程处理
void rangeprocess(long int nMyRange,long int nMyPDelay)
{
//float screenvalue;
long int nTotal;
long int nDiv;
long int nAverage,nResidual,temp;
int i,j; //nResidualAverage,i,j;
void far *pN;
// if(nMyPDelay <=1)
// nMyPDelay=1;
// if (nMyPDelay>128*1024-1)
// nMyPDelay=128*1024;
//screenvalue=myrangevalue-mypdelayvalue;
nTotal=nMyRange-nMyPDelay;//2*(int)( screenvalue/myvolecityvalue*40*1000*1000);
//nAverage=nTotal/512;
temp=nTotal/512;
if(temp <=0)
nAverage=0;
else
nAverage=temp-1;
nResidual=nTotal%512;
nTotal=nResidual;
//nResidualAverage=512/nResidual;
for(i=0;i <512;i++)
{
distancedata=(unsigned short)(nAverage & 0xff);
}
for(i=8;i>=0;i--)
{
nAverage=nTotal/mypow(i);
nResidual=nTotal%mypow(i);
//nResidualAverage=pow(2,i-1)/nResidual;
//nTotalNumb=pow(2,8-i)%nResidualAverage;
for(j=0;j <512;)
{
distancedata[j+8-i]=distancedata[j+8-i]+nAverage;
j=j+mypow(9-i); //average
}
nTotal=nResidual;
}
outportb(0x330,2);
for(i=0;i <512;i++)
{
pN=MK_FP(0x0d400,i);
*(unsigned char *)pN=distancedata; // pre_data
}
outportb(0x330,0); //end pre
}
上面是超声波探伤仪中一段对声程进行处理的程序,大概的意思就是对声程进行了一个分段处理,因为我们要的最后的波形只能显示512个点(跟像素有关),那么就要对整个的声程进行平均分段抽样取最大值,上面的程序就是对声程的两种情况(是512的倍数,或不是512的倍数进行平均分段)
我想问的问题是上面分完段之后的输出outportb(0x330,2);跟我的超声采集卡上FPGA的关系在哪里(FPGA的作用是暂存AD转化后的点,并对其抽样得到512个点送到上位机显示),要是跟FPGA没有关系的话,那他怎么跟FPGA联系的,或者说FPGA要处理这段声程的话,那么他的输入应该怎么确定!
谢谢各位好心的大侠,看了好久了!!谢谢