225 lines
5.4 KiB
C++
225 lines
5.4 KiB
C++
|
|
// ADWaveView.cpp : implementation file
|
|||
|
|
//
|
|||
|
|
|
|||
|
|
#include "stdafx.h"
|
|||
|
|
#include "Sys.h"
|
|||
|
|
#include "ADWaveView.h"
|
|||
|
|
#include "MainFrm.h"
|
|||
|
|
#ifdef _DEBUG
|
|||
|
|
#define new DEBUG_NEW
|
|||
|
|
#undef THIS_FILE
|
|||
|
|
static char THIS_FILE[] = __FILE__;
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
///////////////////////////////////////////////////////////
|
|||
|
|
#include "ADStatusView.h"
|
|||
|
|
#include "ParaCfgView.h"
|
|||
|
|
extern CADStatusView* pADStatusView;
|
|||
|
|
extern CParaCfgView* pParaCfgView;
|
|||
|
|
///////////////////////
|
|||
|
|
static CPoint pointxy[32][8192];
|
|||
|
|
int WavePointX; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>Xλ<58><CEBB>
|
|||
|
|
BOOL bMeasureFreq=FALSE; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
|
|||
|
|
int StartX, EndX; // <20><>Ƶ<EFBFBD><C6B5>
|
|||
|
|
COLORREF pColor[]=
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
RGB(176,15,172),
|
|||
|
|
RGB(170,21,33),
|
|||
|
|
RGB(22,158,169),
|
|||
|
|
RGB(4,187,109),
|
|||
|
|
|
|||
|
|
RGB(176,15,172),
|
|||
|
|
RGB(170,21,33),
|
|||
|
|
RGB(22,158,169),
|
|||
|
|
RGB(4,187,109),
|
|||
|
|
|
|||
|
|
RGB(176,15,172),
|
|||
|
|
RGB(170,21,33),
|
|||
|
|
RGB(22,158,169),
|
|||
|
|
RGB(4,187,109),
|
|||
|
|
|
|||
|
|
RGB(176,15,172),
|
|||
|
|
RGB(170,21,33),
|
|||
|
|
RGB(22,158,169),
|
|||
|
|
RGB(4,187,109),
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
IMPLEMENT_DYNCREATE(CADWaveView, CScrollView)
|
|||
|
|
|
|||
|
|
CADWaveView::CADWaveView()
|
|||
|
|
{
|
|||
|
|
m_Draw=FALSE;
|
|||
|
|
|
|||
|
|
Offset=0;
|
|||
|
|
brush.CreateSolidBrush (RGB(255,255,255));
|
|||
|
|
CurrentProgress=0; // <20>òɼ<C3B2><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ0
|
|||
|
|
m_ScaleH_Width = 40;
|
|||
|
|
m_ScaleV_Width = 30;
|
|||
|
|
m_oldPoint.x =m_oldPoint.y =-1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CADWaveView::~CADWaveView()
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
BEGIN_MESSAGE_MAP(CADWaveView, CScrollView)
|
|||
|
|
//{{AFX_MSG_MAP(CADWaveView)
|
|||
|
|
ON_WM_SIZE()
|
|||
|
|
ON_WM_ERASEBKGND()
|
|||
|
|
ON_WM_MOUSEMOVE()
|
|||
|
|
ON_WM_KEYDOWN()
|
|||
|
|
ON_WM_LBUTTONUP()
|
|||
|
|
ON_WM_NCCALCSIZE()
|
|||
|
|
ON_WM_NCPAINT()
|
|||
|
|
ON_WM_LBUTTONDOWN()
|
|||
|
|
ON_WM_TIMER()
|
|||
|
|
ON_WM_LBUTTONDBLCLK()
|
|||
|
|
ON_MESSAGE(WM_SHOWWAVE, DrawPolyLine)
|
|||
|
|
//}}AFX_MSG_MAP
|
|||
|
|
END_MESSAGE_MAP()
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// CADWaveView drawing
|
|||
|
|
BOOL bCreate = FALSE;
|
|||
|
|
void CADWaveView::OnInitialUpdate()
|
|||
|
|
{
|
|||
|
|
CScrollView::OnInitialUpdate();
|
|||
|
|
|
|||
|
|
CADDoc* pDoc = (CADDoc*)GetDocument();
|
|||
|
|
pDoc->m_hWndWave=m_hWnd; // ȡ<><C8A1><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>DOC<4F>е<EFBFBD><D0B5>߳<EFBFBD>ʹ<EFBFBD><CAB9>
|
|||
|
|
CSize sizeTotal;
|
|||
|
|
// TODO: calculate the total size of this view
|
|||
|
|
const SIZE conPSize={200,1};
|
|||
|
|
const SIZE conLSize={20,1};
|
|||
|
|
sizeTotal.cx = 0;
|
|||
|
|
sizeTotal.cy = 0;
|
|||
|
|
SetScrollSizes(MM_TEXT, sizeTotal);
|
|||
|
|
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_CROSS));
|
|||
|
|
for(int i=0;i<16;i++)
|
|||
|
|
m_Pen[i].CreatePen(PS_SOLID,1,pColor[i]);
|
|||
|
|
////////////////////////////////////////////////////////////////////////
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
|
|||
|
|
CRect rect;
|
|||
|
|
GetClientRect(rect);
|
|||
|
|
m_ADScopeCtrl.Create(WS_CHILD | WS_VISIBLE, CRect(10, 0, 400, 600), this);
|
|||
|
|
m_ADScopeCtrl.SetXUnits(_T("X"));
|
|||
|
|
m_ADScopeCtrl.SetYUnits(_T("Y"));
|
|||
|
|
m_ADScopeCtrl.SetRange(-5, 5, 1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CADWaveView::OnDraw(CDC* pDC)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// CADWaveView diagnostics
|
|||
|
|
|
|||
|
|
#ifdef _DEBUG
|
|||
|
|
void CADWaveView::AssertValid() const
|
|||
|
|
{
|
|||
|
|
CScrollView::AssertValid();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CADWaveView::Dump(CDumpContext& dc) const
|
|||
|
|
{
|
|||
|
|
CScrollView::Dump(dc);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CADDoc* CADWaveView::GetDocument() // non-debug version is inline
|
|||
|
|
{
|
|||
|
|
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CADDoc)));
|
|||
|
|
return (CADDoc*)m_pDocument;
|
|||
|
|
}
|
|||
|
|
#endif //_DEBUG
|
|||
|
|
|
|||
|
|
void CADWaveView::AnalyzeAccurate()//<2F><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
|
|||
|
|
{
|
|||
|
|
int m_TemporyVolt;
|
|||
|
|
CString StrAllCount;
|
|||
|
|
CString StrOverCount;
|
|||
|
|
CString StrOverRatio;
|
|||
|
|
int m_TriggerLsb;
|
|||
|
|
m_TriggerLsb=(int)(m_TriggerVolt*(gl_fLsbCount/VOLT_RANGE));
|
|||
|
|
for(ULONG i=0;i<gl_ReadSizeWords;i++)
|
|||
|
|
{
|
|||
|
|
m_TemporyVolt=(int)((ADBuffer[CurrentIndex][i])-gl_MiddleLsb[i%MAX_CHANNEL_COUNT]);
|
|||
|
|
if(m_TemporyVolt>m_TriggerLsb)
|
|||
|
|
{
|
|||
|
|
m_OverLimitCount=m_OverLimitCount+1;
|
|||
|
|
}
|
|||
|
|
if(m_TemporyVolt<(-m_TriggerLsb))
|
|||
|
|
{
|
|||
|
|
m_OverLimitCount=m_OverLimitCount+1;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
m_AnalyzeAllCount=m_AnalyzeAllCount+gl_ReadSizeWords;
|
|||
|
|
StrAllCount.Format(_T("%3.2e"),m_AnalyzeAllCount);
|
|||
|
|
StrOverCount.Format(_T("%d"),m_OverLimitCount);
|
|||
|
|
StrOverRatio.Format(_T("%4.4f"),m_OverLimitCount*100/m_AnalyzeAllCount);
|
|||
|
|
StrOverRatio=StrOverRatio+"%";
|
|||
|
|
pADStatusView->m_nAnalyzeCount.SetWindowText(StrAllCount);
|
|||
|
|
pADStatusView->m_nOverRange.SetWindowText(StrOverCount);
|
|||
|
|
pADStatusView->m_nOverRatio.SetWindowText(StrOverRatio);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CADWaveView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
|
|||
|
|
{
|
|||
|
|
// TODO: Add your specialized code here and/or call the base class
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
BOOL CADWaveView::OnEraseBkgnd(CDC* pDC)
|
|||
|
|
{
|
|||
|
|
// TODO: Add your message handler code here and/or call default
|
|||
|
|
CBrush brush;
|
|||
|
|
CRect rect;
|
|||
|
|
GetClientRect(rect);
|
|||
|
|
brush.CreateSolidBrush(RGB(0, 0, 0));
|
|||
|
|
pDC->FillRect(rect, &brush);
|
|||
|
|
return TRUE;
|
|||
|
|
// return CScrollView::OnEraseBkgnd(pDC);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CADWaveView::OnSize(UINT nType, int cx, int cy)
|
|||
|
|
{
|
|||
|
|
CScrollView::OnSize(nType, cx, cy);
|
|||
|
|
// TODO: Add your message handler code here
|
|||
|
|
GetClientRect(&ClientRect);
|
|||
|
|
PerY=ClientRect.Height()*1.0/gl_nChannelCount;
|
|||
|
|
middle1=(float)((((gl_ScreenVolume)/VOLT_RANGE)*gl_fLsbCount)/(PerY-5));//ÿ<><C3BF><EFBFBD>ض<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ֵ
|
|||
|
|
CRect rect;
|
|||
|
|
GetClientRect(rect);
|
|||
|
|
if(::IsWindow(m_ADScopeCtrl))//bCreate)
|
|||
|
|
{
|
|||
|
|
m_ADScopeCtrl.SetWindowPos(NULL, 0, 0, cx, cy, SWP_DRAWFRAME);
|
|||
|
|
this->OnDrawPolyLine(gl_nDocDrawLen,gl_nDocDrawIdx);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
LRESULT CADWaveView::DrawPolyLine(WPARAM wParam, LPARAM lParam)
|
|||
|
|
{
|
|||
|
|
if(m_bProgress && gl_bDeviceADRun) // ˢ<><CBA2>ADDigitView<65><77>ͼʱ<CDBC><CAB1><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
{
|
|||
|
|
CADFrame* pShow=((CSysApp*)AfxGetApp())->m_ADFrame ; // ȡ<><C8A1><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
|
|||
|
|
pProgress=(CProgressCtrl*)(pShow->m_wndShowStatus.GetDlgItem(IDC_PROGRESS));
|
|||
|
|
pProgress->SetPos(CurrentProgress);
|
|||
|
|
CurrentProgress++;
|
|||
|
|
if(CurrentProgress>50) CurrentProgress=0;
|
|||
|
|
m_bProgress=FALSE;
|
|||
|
|
}
|
|||
|
|
OnDrawPolyLine((ULONG)wParam, (ULONG)lParam); // <20><>ʼ<EFBFBD><CABC>ʾͼ<CABE><CDBC>
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CADWaveView::OnDrawPolyLine(ULONG nDrawLen,ULONG nDrawIdx)
|
|||
|
|
{
|
|||
|
|
m_ADScopeCtrl.AppendPoly(nDrawIdx, glOffset, nDrawLen);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|