⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adfrm.cpp

📁 AD 数据采集卡基本的采集界面
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		if(i<=j) {
			t=data[i];
			data[i]=data[j];
			data[j]=t;
			i++;j--;
		}
	}while(i<=j);
	if(left<j)  quick(data,left,j);  /*递归调用*/
	if(i<right) quick(data,i,right);
}


void CADFrame::OnUpdateHistoryWave(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->Enable(FALSE);
}

void CADFrame::OnMoveVolt() //平移电压的函数
{
	SHORT DataAnalyze[8192];
	COUNT Result[8192];
	COUNT m_DataMiddle;
	ULONG m=0;
	//m_ProcessMoveVolt=m_ProcessMoveVolt==0?1:0;
	CSysApp *pApp=(CSysApp *)AfxGetApp();
	CADDoc* pDoc=pApp->m_pADDoc; 
	if(m_ProcessMoveVolt==1) 
	{
		m_ProcessMoveVolt = 0;
		for(ULONG k=0;k<ReadSizeWords;k++)
		{ 
			DataAnalyze[k]=(ADBuffer[0][k]^0x2000)&0x3FFF;  // 转换成所需要的码
		}
		// sprintf(str, "%7.2f", (((ADBuffer[CurrentIndex][Index+i]^0x2000)&0x3FFF)-LSB_HALF-m_MiddleLsb)*PerLsbVolt); //量程换算
		quick(DataAnalyze,0,ReadSizeWords-1/*-8191*/);
		
		Result[0].value=DataAnalyze[0];
		Result[0].count_numbers =0;
		m_DataMiddle.count_numbers =0;
		m_DataMiddle.value =Result[0].value;
		for (ULONG i=0;i<ReadSizeWords;i++)
		{ 
			if (DataAnalyze[i]==Result[m].value)
			{
				Result[m].count_numbers=Result[m].count_numbers +1;
			}
			else
			{ 
				if(Result[m].count_numbers> m_DataMiddle.count_numbers )
				{
					m_DataMiddle.count_numbers =Result[m].count_numbers ;	  
					m_DataMiddle.value =Result[m].value ;	  
				}

				m=m+1;
				Result[m].value=DataAnalyze[i];
				Result[m].count_numbers =1;  
			}
		}
		for ( i = 0; i < m; i ++ )
		{
			if(Result[i].count_numbers >m_DataMiddle.count_numbers )
			{
				m_DataMiddle.count_numbers =Result[i].count_numbers ;	  
				m_DataMiddle.value = Result[i].value ;	  
			}
		}
		if(Result[m].count_numbers >m_DataMiddle.count_numbers )
		{
			m_DataMiddle.count_numbers =Result[m].count_numbers ;	  
			m_DataMiddle.value =Result[m].value ;	  
		}
		
		
		// m_DataMiddle.value是非偏移码,即原码,即0-LSB_COUNT中的任意值
		// m_MiddleLsb 是偏移码值,即原码减去LSB_HALF后的值,即在原点上下浮动的值
		m_MiddleLsb=(int)((m_DataMiddle.value)-8192);
		//CString str1;
		//str1.Format("%d", m_DataMiddle.value);
		//AfxMessageBox(str1);
		char str[100];
		CString StrMoveVolt;
		switch(m_DigitalDataShowMode)
		{
		case 0: // 十进制原码
			//StrMoveVolt.Format("%d Dec",m_DataMiddle.value-8192);
			sprintf(str, "%d Dec",m_DataMiddle.value-8192);
			break;
		case 1: // 十六进制原码
			//StrMoveVolt.Format("%x Hec",m_DataMiddle.value);
			sprintf(str, "%x Hec",m_DataMiddle.value);
			break;
		case 2: // 电压值
			//StrMoveVolt.Format("%5.2fmV",(m_DataMiddle.value-8192)*VOLT_RANGE/LSB_COUNT);
			sprintf(str, "%5.2fmV",(m_DataMiddle.value-8192)*PerLsbVolt);
			break;
		}
		//pADStatus->m_nMoveVolt.SetWindowText(StrMoveVolt);
		pADStatusView->m_nMoveVolt.SetWindowText(str);
		m_AnalyzeAllCount=0;
		m_OverLimitCount=0;
	}
	else
	{ 
		m_ProcessMoveVolt = 1;
		m_MiddleLsb=0;// 如果不偏移, 置偏移值为0
		CString StrMoveVolt;
		pADStatusView->m_nMoveVolt.SetWindowText(StrMoveVolt);
	}
	

	CADDigitView* pDigitView=(CADDigitView*)(CWnd::FromHandle(pDoc->m_hWndDigit)); 
	CADWaveView* pWaveView=(CADWaveView*)(CWnd::FromHandle(pDoc->m_hWndWave)); 
	
	if(nProcessMode==1)  // 如果是波形方式,则只更新数字方式
	{
		pDigitView->RedrawWindow();
	}
	if(nProcessMode==2) // 反之则然
	{
		pWaveView->RedrawWindow();
	}
	if(bDeviceADRun==FALSE) // 如果设备没有运行,即静态分析
	{
		pDigitView->RedrawWindow();
		pWaveView->RedrawWindow();
	}
	
}
void CADFrame::OnUpdateMoveVolt(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(!m_ProcessMoveVolt);	
}



void CADFrame::OnDestroy() 
{

	// TODO: Add your message handler code here
	CSysApp *pApp=(CSysApp *)AfxGetApp();
	PCI2006_SaveParaAD(pApp->m_hDevice, &ADPara);
	if(bDeviceADRun)//检查是否设备
	{
		CADDoc* pDoc=(CADDoc*)GetActiveDocument();
		pDoc->Public_ReleaseDevice();
	}    
    pApp->m_bCreateADFrm = FALSE;	
	CMDIChildWnd::OnDestroy();	
}



void CADFrame::OnCHECKCheckOverflow() 
{
	// TODO: Add your control notification handler code here
	MessageBox("OnCHECKCheckOverflow");
}

void CADFrame::OnShowCfgAnalBar() 
{
	// TODO: Add your command handler code here
	m_bShowCfgAnalBar=!m_bShowCfgAnalBar;
	ShowControlBar(&m_wndSTCBar, m_bShowCfgAnalBar, false);

}

void CADFrame::OnUpdateShowCfgAnalBar(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(m_bShowCfgAnalBar);

}

void CADFrame::OnShowStatusBar() 
{
	// TODO: Add your command handler code here
	m_bShowStatusBar=!m_bShowStatusBar;
	ShowControlBar(&m_wndShowStatus1, m_bShowStatusBar, false);

	
}

void CADFrame::OnUpdateShowStatusBar(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(m_bShowCfgAnalBar);
}



void CADFrame::OnIntMode() 
{
	// TODO: Add your command handler code here
	nSampleMode=INT_MODE;//采集模式变量
	
}

void CADFrame::OnUpdateIntMode(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(nSampleMode==INT_MODE);
	pCmdUI->Enable(!bDeviceADRun);
}

void CADFrame::OnNotEmptyMode() 
{
	// TODO: Add your command handler code here
	nSampleMode=NOT_EMPTY_MODE;
}

void CADFrame::OnUpdateNotEmptyMode(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(nSampleMode==NOT_EMPTY_MODE);
	pCmdUI->Enable(!bDeviceADRun);
}

void CADFrame::OnHalfMode() 
{
	// TODO: Add your command handler code here
	nSampleMode=HALF_MODE;
}

void CADFrame::OnUpdateHalfMode(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(nSampleMode==HALF_MODE);
	pCmdUI->Enable(!bDeviceADRun);
}

void CADFrame::OnV1010() 
{
	// TODO: Add your command handler code here
	Volt_Range=RANGE_N10000_TO_P10000;
	//正负10伏
	PerLsbVolt = (float)(20000.0/16384.0);	
	
}

void CADFrame::OnUpdateV1010(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(Volt_Range==RANGE_N10000_TO_P10000);
}

void CADFrame::OnUpdateV55(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(Volt_Range==RANGE_N5000_TO_P5000);	
}

void CADFrame::OnV55() 
{
	// TODO: Add your command handler code here
	Volt_Range=RANGE_N5000_TO_P5000;
	//正负5伏
	PerLsbVolt = (float)(10000.0/16384.0);	
}

void CADFrame::OnV025() //0 2.5伏
{
	// TODO: Add your command handler code here
	Volt_Range=RANGE_0_TO_P2500;
	PerLsbVolt = (float)(2500.0/16384.0);	
}

void CADFrame::OnUpdateV025(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(Volt_Range==RANGE_0_TO_P2500);	
}

void CADFrame::OnV05() 
{
	// TODO: Add your command handler code here
	Volt_Range=RANGE_0_TO_P5000;
	PerLsbVolt = (float)(5000.0/16384.0);	
}

void CADFrame::OnUpdateV05(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	pCmdUI->SetCheck(Volt_Range==RANGE_0_TO_P5000);
}

extern ULONG WroteMB;
extern ULONGLONG FileLenghtWords;
int ShowCount=0;
extern int CurrentProgress;

void CADFrame::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	int i;
	CString str;
	if(nProcessMode==1||nProcessMode==2)
	{
		CProgressCtrl* pProgress=(CProgressCtrl*)(m_wndShowStatus1.GetDlgItem(IDC_PROGRESS));
		pProgress->SetPos(CurrentProgress);
		if(CurrentProgress>50) CurrentProgress=0;
		str.Format("%d",m_nBounceNum);
		pADStatusView->m_EDIT_BunchCount.SetWindowText(str) ;
	}
	else
	{
		CString str;
		WroteMB=(WroteMB+16)%1024;
		m_Progress()->SetPos((int)WroteMB);					
		str.Format("%d",(FileLenghtWords/512));
		i=str.GetLength()-3;
		while(i>0)
		{
			str.Insert(i,',');
			i-=3;
		}
		str+=" Kb";
		//sprintf(string,"%12d Kb",(FileLenghtWords/512));
		m_FileLenght()->SetWindowText(str);
		ShowCount++;
	}
	
	CMDIChildWnd::OnTimer(nIDEvent);
}
void CADFrame::SetStatusTimer(int nElapse)
{
	SetTimer(1, nElapse, NULL);
}


void CADFrame::KillStatusTimer()
{
	KillTimer(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -