📄 adfrm.cpp
字号:
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 + -