求助:::关于LMS200激光测距仪数据采集程序
//接收线程
UINT ReadFifo_Thread_EP6( LPVOID pParam )
{
//---------------------------------------------------------
HWND hWnd=(HWND)pParam;
PostMessage(hWnd,WM_MYTEST_EP6,0,0);
//---------------------------------------------------------
CString s,str;
//
unsigned char m_cData[732];
//
unsigned char din[5];
unsigned char m_cMsVal0[4];
unsigned char m_cPulVal0[4];
//
CTime tm,tm1;
int tm_i1=0, i1=0;
//
FILE *fp1;
fp1 = fopen("n1.txt","w");
if(fp1 == NULL)
{
AfxMessageBox("文件打开失败!");
return 0;
}
//---------------------------------------------------------
//准备接收数据
//---------------------------------------------------------
unsigned char bufOutput[512]; // Input to device
int nOutput; // Count written to bufOutput
//---------------------------------------------------------
//
bool loop=TRUE;
unsigned long l=0;
//
din[0]=0;
din[1]=0;
din[2]=0;
din[3]=0;
din[4]=0;
//
int kn,j0,lc;
//================================================
while(loop)
{
nOutput=USB_READ_EP6(512,bufOutput);
if(nOutput==-1)
{
PostMessage(hWnd,WM_MYTEST_EP6,0,nOutput);
//Sleep(1);
}
else
{
//记录成功读取包数,每包512
//l=l+1;
//
s="";
for(int i=0;i<nOutput;i++)
{
i1++;
//
for(kn=0;kn<731;kn++)
m_cData[kn]=m_cData[kn+1];
m_cData[kn]=m_cMsVal0[0];
//
m_cMsVal0[0]=m_cMsVal0[1];
m_cMsVal0[1]=m_cMsVal0[2];
m_cMsVal0[2]=m_cMsVal0[3];
m_cMsVal0[3]=m_cPulVal0[0];
m_cPulVal0[0]=m_cPulVal0[1];
m_cPulVal0[1]=m_cPulVal0[2];
m_cPulVal0[2]=m_cPulVal0[3];
m_cPulVal0[3]=din[1];
//
din[0]=din[1];
din[1]=din[2];
din[2]=din[3];
din[3]=din[4];
din[4]=bufOutput[i];
//
str.Format("%02X ",din[0]);
s=s+str;
if(din[1]==0x02 && din[2]==0x80 && din[3]==0xd6 && din[4]==0x02 )
{
//记录成功读取包数,每包740
l=l+1;
//
for(j0=0;j0<4;j0++)
{
m_cMsVal[j0]=m_cMsVal0[j0];
m_cPulVal[j0]=m_cPulVal0[j0];
}
PostMessage(hWnd,WM_MYTEST_EP6,0,l);
//
tm=CTime::GetCurrentTime();
if(tm1 != tm)
{
tm1=tm;
tm_i1=0;
}
s=s+"\r\n";
s=s+"\r\n";
//
str=tm.Format("%Y年%m月%d日 %X");
s=s+str;
//
lc=m_cData[731];
lc=lc*256+m_cData[730];
if(lc==CreateCRC(m_cData,730))
str.Format(" CRCOK Pak:%d Num: %d\r\n",tm_i1,i1);
else
str.Format(" CRCER Pak:%d Num: %d\r\n",tm_i1,i1);
//
s=s+str;
//
i1=0;
tm_i1++;
}
//
}
fprintf(fp1,s);
}
//Sleep(1);
}
//
fclose(fp1);
return 0;
}
蓝色部分很不清楚啊,谁给解释下啊,求大虾了,帮帮忙了!!!