HINSTANCE hDll; //声明DLL prefix = o ns = "urn:schemas-microsoft-com:office:office"
hDll=LoadLibrary("MPS-CCD.dll");
if(NULL==hDll)
{
AfxMessageBox("Cann't find MPS-CCD.dll");
}
typedef int (__stdcall*lpMPS_GetData) (float* DataBuffer,int DeviceNumber,float DriveRate);
lpMPS_GetData MPS_GetData=(lpMPS_GetData)GetProcAddress(hDll,"MPS_GetData");
if(NULL==MPS_GetData)
{
AfxMessageBox("Cann't find function");
}
float DataBuffer[2048]; //定义大小为2048的数据缓存
int FLAG = 0; //定义函数运行成功/失败标志
FLAG =MPS_GetData(DataBuffer,0,0); //调用函数,以默认驱动频率采集设备0的一帧信号
if(FLAG == 1) //函数执行成功,此时DataBuffer中的数据已经被更新为CCD的一帧数据
{ float sum=0;
int n=0;
for( int i=0;i<2048;i++)
{
for(int j=0;j<n;j++)
float y[j]=DataBuffer[i];
sum +=y[j];
}
m_ctrlChart.Series(0).AddXY(i,sum/j,NULL,RGB(255,0,0));
//在此添加对数据的处理代码
}
else
{
//在此添加报错代码
}
主要看添加的处理代码,我想要可以做到Databuffer中的数据可以读出好几次,每次读出的数据本来直接显示为y轴的值,但我想求平均值,j的意思是可以任意输入次数然后各个x轴上点对应的y轴值相加再平均。因为它是实时变化的。
简单的说就是把好几次读到的y值做个平均。这个平均的意思是一个x值对应的好几次的y值的和平均。
我写的里面有错误,主要是赋值那,我不知道怎么改能到达目的。还得麻烦看看,指导指导我这个新手。看不懂,我可以再说说。
类似这个中间那个