📄 fibertestclientview.cpp
字号:
delete pPenRed;
delete pPenBlue;
delete pPenGreen;
delete pPenC;
/*#ifdef INPUT_DATA
if(!m_bIsSetReadPoint)//读串口
{
SetTimer(ID_TIMER_READ_POINT,TIME_DRAW,NULL);
m_bIsSetReadPoint = true;
}
#else
if(!m_bIsSetDrawPoint)//直接读数据库
{
SetTimer(ID_TIMER_DRAW_POINT,TIME_DRAW,NULL);
m_bIsSetDrawPoint = true;
}
#endif*/
return;
}
void CFiberTestClientView::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
// Do not call CFormView::OnPaint() for painting messages
CRect rect;
CWnd* pWnd = GetDlgItem(IDC_COORD);
pWnd->GetClientRect(&rect);
// 指针
pDC = pWnd->GetDC();
pWnd->Invalidate();
pWnd->UpdateWindow();
//pDC->Rectangle(&rect);
//内存绘图
CBitmap memBitmap;
CBitmap* pOldBmp = NULL;
memDC.CreateCompatibleDC(pDC);
memBitmap.CreateCompatibleBitmap(pDC,rect.right,rect.bottom);
pOldBmp = memDC.SelectObject(&memBitmap);
memDC.BitBlt(rect.left,rect.top,rect.right,rect.bottom,pDC,0,0,SRCCOPY);
DrawWave(&memDC);
pDC->BitBlt(rect.left,rect.top,rect.right,rect.bottom,&memDC,0,0,SRCCOPY);
memDC.SelectObject(pOldBmp);
memDC.DeleteDC();
memBitmap.DeleteObject();
m_datatime=GetTime();
UpdateData(FALSE);
}
void CFiberTestClientView::OnChangeYmin()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CFormView::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
if(m_bIsFinishDraw || NULL == m_uPointA)
{
UpdateData();
OnPaint() ;
}
else
{
UpdateData(FALSE);
AfxMessageBox("测试过程中不接收设定!");
}
}
void CFiberTestClientView::OnChangeYmax()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CFormView::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
if(m_bIsFinishDraw || NULL == m_uPointA)
{
UpdateData();
OnPaint() ;
}
else
{
UpdateData(FALSE);
AfxMessageBox("测试过程中不接收设定!");
}
}
void CFiberTestClientView::OnChangeTestTime()
{
// TODO: If this is a RICHEDIT control, the control will not
// send this notification unless you override the CFormView::OnInitDialog()
// function and call CRichEditCtrl().SetEventMask()
// with the ENM_CHANGE flag ORed into the mask.
// TODO: Add your control notification handler code here
if(m_bIsFinishDraw || NULL == m_uPointA)
{
UpdateData();
OnPaint() ;
}
else
{
UpdateData(FALSE);
AfxMessageBox("测试过程中不接收设定!");
}
}
CString CFiberTestClientView::GetTime()
{
CString strTime,str,strDate;
int t;
CTime time=CTime::GetCurrentTime();
t=time.GetHour();
str.Format("%d",t);
strTime=str;
t=time.GetMinute();
str.Format("%d",t);
strTime=strTime+":"+str;
t=time.GetSecond();
str.Format("%d",t);
strTime=strTime+":"+str;
t=time.GetYear();
str.Format("%d",t);
strDate=str;
t=time.GetMonth();
str.Format("%d",t);
strDate=strDate+"年"+str;
t=time.GetDay();
str.Format("%d",t);
strDate=strDate+"月"+str+"日";
return(strDate+" "+strTime);
}
void CFiberTestClientView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
switch(nIDEvent)
{
case ID_TIMER_DRAW_POINT:
DrawPoint();
break;
case ID_TIMER_READ_POINT:
ReadPoint();
break;
default:
break;
}
CFormView::OnTimer(nIDEvent);
}
void CFiberTestClientView::DrawPoint()//画数据曲线
{
//OnPaint();
static int iTimes=0;
if(m_bIsReTest)
{
iTimes = 0;
m_bIsReTest =false;
}
if(m_iPointCount <= iTimes)
{
KillTimer(ID_TIMER_DRAW_POINT);
m_bIsFinishDraw = true;
return ;
}
CPaintDC dc(this);
CDC *pMyDC = (GetDlgItem(IDC_COORD))->GetDC();
m_IntervalPan = (m_right-20 - m_left)/20;
if (m_IntervalPan < 1 ) m_IntervalPan =1;
m_Interval = (m_bottom - m_top-20)/10;
int iBaseX = m_left;
//int iStepX = m_IntervalPan*10/150*TIME_DRAW/TIME_BASE;
int iBaseY = (m_bottom - m_top +2)/2 + m_Interval/2;
// int iStepY = m_Interval/2*TIME_DRAW/TIME_BASE;
CPen* pPenRed = new CPen;
pPenRed->CreatePen(PS_SOLID,1,RGB(255,0,0));
CGdiObject* pOldPen = pMyDC->SelectObject(pPenRed);
int iAx = iBaseX + iTimes*m_IntervalPan*10/150*TIME_DRAW/TIME_BASE*300/m_iPointCount;
// int iAy = iBaseY - m_uPointA[iTimes]*m_Interval/2;
int iAy = m_bottom - m_Interval/4 - (m_bottom - m_top-20)/(m_ymax - m_ymin)*(m_uPointA[iTimes] - m_ymin);
static int iOldAX = iAx;
static int iOldAY = iAy;
if(iTimes == 0)
{
iOldAX = iAx;
iOldAY = iAy;
}
TRACE("pointA:%d,%d\n",iAx,iAy);
pMyDC->MoveTo(iOldAX,iOldAY);
pMyDC->LineTo(iAx,iAy);
iOldAX =iAx;
iOldAY = iAy;
m_uDrawedPointA[iTimes] = m_uPointA[iTimes];
TRACE("iTimes=%d\n",iTimes);
CPen* pPenBlue = new CPen;
pPenBlue->CreatePen(PS_SOLID,1,RGB(0,0, 255));
pMyDC->SelectObject(pPenBlue);
int iBx = iBaseX + iTimes*m_IntervalPan*10/150*TIME_DRAW/TIME_BASE*300/m_iPointCount;
//int iBy = iBaseY - m_uPointB[iTimes]*m_Interval/2;
int iBy = m_bottom - m_Interval/4 - (m_bottom - m_top-20)/(m_ymax - m_ymin)*(m_uPointB[iTimes] - m_ymin);
static int iOldBX = iBx;
static int iOldBY = iBy;
if(iTimes == 0)
{
iOldBX = iBx;
iOldBY = iBy;
}
TRACE("pointB:%d,%d\n",iBx,iBy);
pMyDC->MoveTo(iOldBX,iOldBY);
pMyDC->LineTo(iBx,iBy);
iOldBX =iBx;
iOldBY = iBy;
m_uDrawedPointB[iTimes] = m_uPointB[iTimes];
CPen* pPenC = new CPen;
pPenC->CreatePen(PS_SOLID,1,RGB(0,0,0));
pMyDC->SelectObject(pPenC);
int iCx = iBaseX + iTimes*m_IntervalPan*10/150*TIME_DRAW/TIME_BASE*300/m_iPointCount;
//int iCy = iBaseY - m_uPointC[iTimes]*m_Interval/2;
int iCy = m_bottom - m_Interval/4 - (m_bottom - m_top-20)/(m_ymax - m_ymin)*(m_uPointC[iTimes] - m_ymin);
//(m_bottom - m_top +2)/2 + m_Interval/2;
static int iOldCX = iCx;
static int iOldCY = iCy;
if(iTimes == 0)
{
iOldCX = iCx;
iOldCY = iCy;
}
TRACE("pointC:%d,%d\n",iCx,iCy);
pMyDC->MoveTo(iOldCX,iOldCY);
pMyDC->LineTo(iCx,iCy);
iOldCX =iCx;
iOldCY = iCy;
m_uDrawedPointC[iTimes] = m_uPointC[iTimes];
pMyDC->SelectObject(pOldPen);
delete pPenRed;
delete pPenBlue;
delete pPenC;
iTimes++;
}
void CFiberTestClientView::ReadPoint() //从暂存中读取数据,并写数据库
{
static int iTimes=0;
if(m_iPointCount <= iTimes)
{
KillTimer(ID_TIMER_READ_POINT);
return;
}
// m_uTempPointA = m_uTempPointB = m_uTempPointC = 8;
//读暂存
m_uPointA[iTimes] = m_uTempPointA;
m_uPointB[iTimes] = m_uTempPointB;
m_uPointC[iTimes] = m_uTempPointC;
//开启绘A,B,C曲线的定时器
if(!m_bIsSetDrawPoint)
{
SetTimer(ID_TIMER_DRAW_POINT,TIME_DRAW,NULL);
m_bIsSetDrawPoint = true;
}
}
void CFiberTestClientView::InitData()
{
if(NULL != m_uPointA && !m_bIsFinishDraw)
{
AfxMessageBox("正在测试!");
return;
}
if(NULL != m_uPointA && m_bIsFinishDraw)
{
if(NULL != m_uPointA)
{
delete []m_uPointA;
m_uPointA = NULL;
}
if(NULL != m_uPointB)
{
delete []m_uPointB;
m_uPointB = NULL;
}
if(NULL != m_uPointC)
{
delete []m_uPointC;
m_uPointC = NULL;
}
if(NULL != m_uDrawedPointA)
{
delete []m_uDrawedPointA;
m_uDrawedPointA = NULL;
}
if(NULL != m_uDrawedPointB)
{
delete []m_uDrawedPointB;
m_uDrawedPointB = NULL;
}
if(NULL != m_uDrawedPointC)
{
delete []m_uDrawedPointC;
m_uDrawedPointC = NULL;
}
m_bIsSetReadPoint = false;
m_bIsSetDrawPoint = false;
m_bIsFinishDraw = false;
m_bIsReTest =true;
}
if(NULL == m_uPointA)
{
m_xtime = m_xtime1;
OnPaint() ;
m_iPointCount = (m_xtime * 1000)/TIME_DRAW;
m_uPointA = new UINT[m_iPointCount]; //A点的数据
m_uPointB = new UINT[m_iPointCount]; //B....
m_uPointC = new UINT[m_iPointCount]; //C....
m_uDrawedPointA = new UINT[m_iPointCount];//已画过的A点的数据;
m_uDrawedPointB = new UINT[m_iPointCount];//........B.......
m_uDrawedPointC = new UINT[m_iPointCount];//........C.......
for(int i=0; i<m_iPointCount; i++)
{
*(m_uPointA+i) = POINT_NULL;
}
//memcpy(m_uPointB,m_uPointA,m_iPointCount*sizeof(UINT));
memcpy(m_uPointC,m_uPointA,m_iPointCount*sizeof(UINT));
memcpy(m_uPointB,m_uPointA,m_iPointCount*sizeof(UINT));
memcpy(m_uDrawedPointA,m_uPointA,m_iPointCount*sizeof(UINT));
memcpy(m_uDrawedPointB,m_uPointA,m_iPointCount*sizeof(UINT));
memcpy(m_uDrawedPointC,m_uPointA,m_iPointCount*sizeof(UINT));
OnPaint();
if(NULL != m_uPointA
&& NULL != m_uPointB
&& NULL != m_uPointC
&& NULL != m_uDrawedPointA
&& NULL != m_uDrawedPointB
&& NULL != m_uDrawedPointC)
{
Read();
#ifdef INPUT_DATA
if(!m_bIsSetReadPoint)//读串口
{
SetTimer(ID_TIMER_READ_POINT,TIME_DRAW,NULL);
m_bIsSetReadPoint = true;
}
/*#else
if(!m_bIsSetDrawPoint)//直接读数据库
{
SetTimer(ID_TIMER_DRAW_POINT,TIME_DRAW,NULL);
m_bIsSetDrawPoint = true;
}
*/#endif
}
else
{
AfxMessageBox("内存申请失败!");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -