📄 eubrsdlg.cpp
字号:
if(TimeCount < TimeSample)
{
sprintf(strr,"%d",TimeCount);
m_map = "Sampling";
m_lab = strr;//"Sampling";
m_lab = m_lab + "Sec";
UpdateData(FALSE) ;
}
TimeCount = TimeCount - 1;
if(TimeCount <= 0)
{
bool flagstop = false;
if( !app->FindParamOutpt )
{
MessageBox("未发现端口!","Warning!");
}
else
{
unsigned char *str = app->com_str ;
// 获取各个设置
canrec = false;
str[0] = 0x42 ;
str[1] = 0x53 ;
str[2] = 0x4A ;
app->ParamOutEndpt->TimeOut = 200;
flagstop = app->SendParam (str,3) ;
m_SStart.EnableWindow(FALSE);
m_Stop.EnableWindow(FALSE);
m_Delete.EnableWindow(FALSE);
Sleep(500);
//StopSample();
PostMessage(WM_DATASAVE,0,0);
KillTimer(1);
}
if(flagstop)
{
m_commstate = "配置成功,已经成功停止采样过程.";
UpdateData(FALSE) ;
// DeleteBuffer();
m_lab = "";//TimeCount;
m_map = "Stop";
UpdateData(FALSE) ;
}
else
{
m_commstate = "配置失败,请检查硬件然后重新启动程序.";
UpdateData(FALSE) ;
}
}
}
if(nIDEvent == 2)
{
if(canrec)
{
app->ParamInEndpt->XferData(&(RecBuf[0]),RecLen);
if(RecLen >=1)
{
for(TimerCount=0;TimerCount<RecLen;TimerCount++)
{
this ->InQuene(RecBuf[TimerCount]);
}
pCount = pCount + 1;
if(pCount>30)
pCount = 0;
m_pp.SetPos(pCount);
}
SolveData();
}
}
if(nIDEvent == 1234)
{
if((app->FindParamInpt)&&(app->FindParamOutpt))
{
KillTimer(1234);
MessageBox("设备连接正常");
}
else
{
KillTimer(1234);
MessageBox("设备检测错误,请重新连接USB设备重新检测");
}
}
CDialog::OnTimer(nIDEvent);
}
void CEUBRSDlg::OnBUTTONDeleteData()
{
pFile[0] = fopen("1","wb");
fclose(pFile[0]);
pFile[1] = fopen("2","wb");
fclose(pFile[1]);
pFile[2] = fopen("3","wb");
fclose(pFile[2]);
pFile[3] = fopen("4","wb");
fclose(pFile[3]);
pFile[4] = fopen("5","wb");
fclose(pFile[4]);
pFile[5] = fopen("6","wb");
fclose(pFile[5]);
pFile[6] = fopen("7","wb");
fclose(pFile[6]);
pFile[7] = fopen("8","wb");
fclose(pFile[7]);
m_commstate = "数据清楚成功!";
UpdateData(FALSE) ;
}
void CEUBRSDlg::InitQuene()
{
Front = 0;
Rear = 0;
Count = 0;
}
bool CEUBRSDlg::InQuene(unsigned char datain)
{
if((Rear+1)%MaxSize == Front)
return false;
else
DataQuene[Rear] = datain;
Rear = (Rear+1)%MaxSize;
Count = Count + 1;
return true;
}
unsigned char CEUBRSDlg::OutQuene()
{
unsigned char e;
if(Front == Rear)
return 0;
e = DataQuene[Front];
Front = (Front+1)%MaxSize;
Count = Count -1;
return e;
}
int CEUBRSDlg::GetCount()
{
int c;
c = this->Count;
return c;
}
void CEUBRSDlg::SolveData()
{
while(GetCount()>19)
{
int SolveCount;
outchar = OutQuene();
if((outchar==0x40))
{
//while(GetCount()<=18);
for(SolveCount=0;SolveCount<18;SolveCount++)
DataSolve[SolveCount] = (long)OutQuene();
if(DataSolve[17]==0x23)
{
switch(DataSolve[0])
{
case 1:
ch1datasolve();
break;
case 2:
ch2datasolve();
break;
case 3:
ch3datasolve();
break;
case 4:
ch4datasolve();
break;
case 5:
ch5datasolve();
break;
case 6:
ch6datasolve();
break;
case 7:
ch7datasolve();
break;
case 8:
ch8datasolve();
break;
}
}
}
}
}
void CEUBRSDlg::ch1datasolve()
{
int ch1count;
double ch1temp;
for(ch1count=1;ch1count<=13;ch1count=ch1count+4)
{
ch1temp = DataSolve[ch1count]*256+DataSolve[ch1count+1];
if(m_scanmethod == 1)
ch1temp = (ch1temp*4.096/4095.0)-2.048;
else
{
ch1temp = (ch1temp*m_intervalit);
ch1temp = ch1temp/1000.0;
}
DA[0] = ch1temp;
ch1temp = DataSolve[ch1count+2]*256+DataSolve[ch1count+3];
ch1temp = ch1temp/65536.0;
ch1temp = (ch1temp*20);
ch1temp = ch1temp - 10;
AD[0] = ch1temp;
DataSaving[0][DataSavingCount[0]++] = DA[0];
DataSaving[0][DataSavingCount[0]++] = AD[0];
}
}
void CEUBRSDlg::ch2datasolve()
{
int ch2count;
double ch2temp;
for(ch2count=1;ch2count<=13;ch2count=ch2count+4)
{
ch2temp = DataSolve[ch2count]*256+DataSolve[ch2count+1];
if(m_scanmethod == 1)
ch2temp = (ch2temp*4.096/4095.0)-2.048;
else
ch2temp = (ch2temp*m_intervalit)/1000.0;
DA[1] = ch2temp;
ch2temp = DataSolve[ch2count+2]*256+DataSolve[ch2count+3];
ch2temp = ch2temp/65536.0;
ch2temp = (ch2temp*20);
ch2temp = ch2temp - 10;
AD[1] = ch2temp;
DataSaving[1][DataSavingCount[1]++] = DA[1];
DataSaving[1][DataSavingCount[1]++] = AD[1];
}
}
void CEUBRSDlg::ch3datasolve()
{
int ch3count;
double ch3temp;
for(ch3count=1;ch3count<=13;ch3count=ch3count+4)
{
ch3temp = DataSolve[ch3count]*256+DataSolve[ch3count+1];
if(m_scanmethod == 1)
ch3temp = (ch3temp*4.096/4095.0)-2.048;
else
ch3temp = (ch3temp*m_intervalit)/1000.0;
DA[2] = ch3temp;
ch3temp = DataSolve[ch3count+2]*256+DataSolve[ch3count+3];
ch3temp = ch3temp/65536.0;
ch3temp = (ch3temp*20);
ch3temp = ch3temp - 10;
AD[2] = ch3temp;
DataSaving[2][DataSavingCount[2]++] = DA[2];
DataSaving[2][DataSavingCount[2]++] = AD[2];
}
}
void CEUBRSDlg::ch4datasolve()
{
int ch4count;
double ch4temp;
for(ch4count=1;ch4count<=13;ch4count=ch4count+4)
{
ch4temp = DataSolve[ch4count]*256+DataSolve[ch4count+1];
if(m_scanmethod == 1)
ch4temp = (ch4temp*4.096/4095.0)-2.048;
else
ch4temp = (ch4temp*m_intervalit)/1000.0;
DA[3] = ch4temp;
ch4temp = DataSolve[ch4count+2]*256+DataSolve[ch4count+3];
ch4temp = ch4temp/65536.0;
ch4temp = (ch4temp*20);
ch4temp = ch4temp - 10;
AD[3] = ch4temp;
DataSaving[3][DataSavingCount[3]++] = DA[3];
DataSaving[3][DataSavingCount[3]++] = AD[3];
}
}
void CEUBRSDlg::ch5datasolve()
{
int ch5count;
double ch5temp;
for(ch5count=1;ch5count<=13;ch5count=ch5count+4)
{
ch5temp = DataSolve[ch5count]*256+DataSolve[ch5count+1];
if(m_scanmethod == 1)
ch5temp = (ch5temp*4.096/4095.0)-2.048;
else
ch5temp = (ch5temp*m_intervalit)/1000.0;
DA[4] = ch5temp;
ch5temp = DataSolve[ch5count+2]*256+DataSolve[ch5count+3];
ch5temp = ch5temp/65536.0;
ch5temp = (ch5temp*20);
ch5temp = ch5temp - 10;
AD[4] = ch5temp;
DataSaving[4][DataSavingCount[4]++] = DA[4];
DataSaving[4][DataSavingCount[4]++] = AD[4];
}
}
void CEUBRSDlg::ch6datasolve()
{
int ch6count;
double ch6temp;
for(ch6count=1;ch6count<=13;ch6count=ch6count+4)
{
ch6temp = DataSolve[ch6count]*256+DataSolve[ch6count+1];
if(m_scanmethod == 1)
ch6temp = (ch6temp*4.096/4095.0)-2.048;
else
ch6temp = (ch6temp*m_intervalit)/1000.0;
DA[5] = ch6temp;
ch6temp = DataSolve[ch6count+2]*256+DataSolve[ch6count+3];
ch6temp = ch6temp/65536.0;
ch6temp = (ch6temp*20);
ch6temp = ch6temp - 10;
AD[5] = ch6temp;
DataSaving[5][DataSavingCount[5]++] = DA[5];
DataSaving[5][DataSavingCount[5]++] = AD[5];
}
}
void CEUBRSDlg::ch7datasolve()
{
int ch7count;
double ch7temp;
for(ch7count=1;ch7count<=13;ch7count=ch7count+4)
{
ch7temp = DataSolve[ch7count]*256+DataSolve[ch7count+1];
if(m_scanmethod == 1)
ch7temp = (ch7temp*4.096/4095.0)-2.048;
else
ch7temp = (ch7temp*m_intervalit)/1000.0;
DA[6] = ch7temp;
ch7temp = DataSolve[ch7count+2]*256+DataSolve[ch7count+3];
ch7temp = ch7temp/65536.0;
ch7temp = (ch7temp*20);
ch7temp = ch7temp - 10;
AD[6] = ch7temp;
DataSaving[6][DataSavingCount[6]++] = DA[6];
DataSaving[6][DataSavingCount[6]++] = AD[6];
}
}
void CEUBRSDlg::ch8datasolve()
{
int ch8count;
double ch8temp;
for(ch8count=1;ch8count<=13;ch8count=ch8count+4)
{
ch8temp = DataSolve[ch8count]*256+DataSolve[ch8count+1];
if(m_scanmethod == 1)
ch8temp = (ch8temp*4.096/4095.0)-2.048;
else
ch8temp = (ch8temp*m_intervalit)/1000.0;
DA[7] = ch8temp;
ch8temp = DataSolve[ch8count+2]*256+DataSolve[ch8count+3];
ch8temp = ch8temp/65536.0;
ch8temp = (ch8temp*20);
ch8temp = ch8temp - 10;
AD[7] = ch8temp;
DataSaving[7][DataSavingCount[7]++] = DA[7];
DataSaving[7][DataSavingCount[7]++] = AD[7];
}
}
void CEUBRSDlg::OnBUTTONStopSample()
{ // TODO: Add your control notification handler code here
CEUBRSApp *app = (CEUBRSApp *)AfxGetApp();
bool flagstop = false;
if( !app->FindParamOutpt )
{
MessageBox("未发现端口!","Warning!");
}
else
{
unsigned char *str = app->com_str ;
canrec = false;
// 获取各个设置
str[0] = 0x42 ;
str[1] = 0x53 ;
str[2] = 0x4A ;
app->ParamOutEndpt->TimeOut = 200;
flagstop = app->SendParam (str,3) ;
KillTimer(1);
Sleep(20);
}
if(flagstop)
{
m_SStart.EnableWindow(FALSE);
m_Stop.EnableWindow(FALSE);
m_Delete.EnableWindow(FALSE);
m_commstate = "配置成功,已经成功停止采样过程.";
UpdateData(FALSE) ;
m_lab = "";//TimeCount;
m_map = "Stop";
UpdateData(FALSE) ;
Sleep(500);
//StopSample();
PostMessage(WM_DATASAVE,0,0);
}
else
{
m_commstate = "配置失败,请检查硬件然后重新启动程序.";
UpdateData(FALSE) ;
}
}
void CEUBRSDlg::StopSample()
{
int Stopi,Stopj;
int block;
CString strfile;
double DataSavingTemp;
m_SStart.EnableWindow(TRUE);
m_Stop.EnableWindow(FALSE);
m_Delete.EnableWindow(TRUE);
for(Stopi=0;Stopi<8;Stopi++)
{
strfile.Format("%d",Stopi+1);
//strfile = strfile + ".txt";
pFile[Stopi] = fopen(strfile,"ab");
}
block = 0;
for(Stopi=0;Stopi<8;Stopi++)
{
if(DataSavingCount[Stopi]>2)
{
DataSavingTemp = DataSavingCount[Stopi]-2;
for(Stopj=0;Stopj<DataSavingTemp;)
{
block = block + 1;
if(block > 50)
{
block = 0;
fclose(pFile[0]);
pFile[0] = fopen("1","ab");
fclose(pFile[1]);
pFile[1] = fopen("2","ab");
fclose(pFile[2]);
pFile[2] = fopen("3","ab");
fclose(pFile[3]);
pFile[3] = fopen("4","ab");
fclose(pFile[4]);
pFile[4] = fopen("5","ab");
fclose(pFile[5]);
pFile[5] = fopen("6","ab");
fclose(pFile[6]);
pFile[6] = fopen("7","ab");
fclose(pFile[7]);
pFile[7] = fopen("8","ab");
}
DAstr.Format("%.3f",DataSaving[Stopi][Stopj++]);
ADstr.Format("%.4f",DataSaving[Stopi][Stopj++]);
fwrite(DAstr,1,strlen(DAstr),pFile[Stopi]);
fwrite(" ",1,strlen(" "),pFile[Stopi]);
fwrite(ADstr,1,strlen(ADstr),pFile[Stopi]);
fwrite("\r\n",1,strlen("\r\n"),pFile[Stopi]);
//fwrite("gxy\n",1,strlen("gxy\n"),pFile[Stopi]);
}
//fwrite(DataSaving[Stopi],sizeof(double),DataSavingTemp,pFile[Stopi]);
fclose(pFile[Stopi]);
block = 0;
Sleep(20);
}
}
}
void CEUBRSDlg::GetBuffer()
{
DataSaving[0] = new double[50000];
DataSaving[1] = new double[50000];
DataSaving[2] = new double[50000];
DataSaving[3] = new double[50000];
DataSaving[4] = new double[50000];
DataSaving[5] = new double[50000];
DataSaving[6] = new double[50000];
DataSaving[7] = new double[50000];
}
void CEUBRSDlg::DeleteBuffer()
{
delete DataSaving[0];
delete DataSaving[1];
delete DataSaving[2];
delete DataSaving[3];
delete DataSaving[4];
delete DataSaving[5];
delete DataSaving[6];
delete DataSaving[7];
}
void CEUBRSDlg::OnDataSave(WPARAM w,LPARAM l)
{
StopSample();
}
void CEUBRSDlg::OnBUTTONDetecting()
{
// TODO: Add your control notification handler code here
CEUBRSApp *app = (CEUBRSApp *)AfxGetApp();
app->FindParamOutpt = FALSE ;
app->USBDevice = new CCyUSBDevice(m_hWnd); // Create an instance of CCyUSBDevice
app->GetPort();
SetTimer(1234,1000,NULL);
}
HBRUSH CEUBRSDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
if(pWnd->GetDlgCtrlID()==IDC_STATIC_map)
pDC->SetTextColor(RGB(255,0,0));
if(pWnd->GetDlgCtrlID()==IDC_STATIC_Message)
pDC->SetTextColor(RGB(255,0,0));
if(pWnd->GetDlgCtrlID()==IDC_STATIC_COMMSTATE)
pDC->SetTextColor(RGB(255,0,0));
// TODO: Return a different brush if the default is not desired
return hbr;
}
void CEUBRSDlg::OnCHECKChannel1()
{
// TODO: Add your control notification handler code here
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -