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

📄 dlqview.cpp

📁 齿轮检测软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			for(int y=40;y<=440;y=y+5)pDC->SetPixelV(i*5+40,y,RGB(0,0,255));
			for(int y2=490;y2<=890;y2=y2+5)pDC->SetPixelV(i*5+40,y2,RGB(0,0,255));
	}}
	for(i=0;i<=170;i++){
		if((i%10)==0){
			pDC->SelectObject(&pen2);
		 
		 pDC->MoveTo(40,i*5+40);
		 pDC->LineTo(640,i*5+40);}
		
	}
	pDC->SelectObject(oldpen);
	pen1.DeleteObject();
	pen2.DeleteObject();
	d=0;
	m_ComPort.SetRThreshold(2);
	sendmode(3);
	sendbegin(480);
	m_ComPort.SetInputLen(0);

}

void CDlqView::drawline()
{
	CClientDC dc(this);
	float r;
	int x,y;
	CPen pen;
	pen.CreatePen(0,2,RGB(0,255,0));
	CPen *oldpen=dc.SelectObject(&pen);
	dc.SetROP2(R2_XORPEN);
	if(d){dc.MoveTo(300,300);
	dc.LineTo(oldpoint.x,oldpoint.y);}
	dc.MoveTo(300,300);
	if(input<zero){r=zero-input;
	x=300-290*sin(r*0.128*3.14/180);
	y=300-290*cos(r*0.128
		*3.14/180);}
	else {r=input-zero;
		x=300+290*sin(r*0.128*3.14/180);
	y=300-290*cos(r*0.128
		*3.14/180);}
	dc.LineTo(x,y);
	oldpoint.x=x;oldpoint.y=y;
	dc.SetROP2(R2_COPYPEN);
	dc.SelectObject(oldpen);
	pen.DeleteObject();d=1;
}


void CDlqView::OnInitialUpdate() 
{
	CView::OnInitialUpdate();
	SetScrollSizes(MM_TEXT,GetDocument()->GetDocSize());
	// TODO: Add your specialized code here and/or call the base class
	
}

void CDlqView::OnDisOrRec() 
{
	x=!x;if((!x)&&(!istimer2)){SetTimer(1,50,NULL);sendmode(1);istimer2=1;}
	if(x){KillTimer(1);sendmode(3);istimer2=0;}
	Invalidate();

	// TODO: Add your command handler code here
	
}

void CDlqView::drawdot(CDC *pDC,int i,bool p,int y1)
{
	CDlqDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	//CClientDC dc(this);
	//OnPrepareDC(&dc);
	CPoint p0,p1;int po;
	CPen pen;
	pen.CreatePen(0,1,RGB(255,0,0));
	CPen *oldpen=pDC->SelectObject(&pen);
	if(y1>5)po=480;else po=0;
	if(i>0){
	
		p0.x=(pDoc->data[y1][i-1]-pDoc->data[y1][0])/2+pDoc->start[y1];
		p0.y=i-1+40+po;
		p1.x=(pDoc->data[y1][i]-pDoc->data[y1][0])/2+pDoc->start[y1];
		p1.y=i+40+po;
	 	//	pDC->LPtoDP(&p0);dc.LPtoDP(&p1);
	pDC->MoveTo(p0);
	pDC->LineTo(p1);
	}
	pDC->SelectObject(oldpen);
	pen.DeleteObject();

}

void CDlqView::drawdot()
{
	CDlqDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	CClientDC dc(this);
	OnPrepareDC(&dc);
	CPoint p0,p1;int po;
	CPen pen;
	pen.CreatePen(0,1,RGB(255,0,0));
	CPen *oldpen=dc.SelectObject(&pen);
	if(pDoc->first>5)po=480;else po=0;
	if(pDoc->count>1){
		p0.x=(pDoc->data[pDoc->first][pDoc->count-2]-pDoc->data[pDoc->first][0])/2+pDoc->start[pDoc->first];
		p0.y=pDoc->count-2+40+po;
		p1.x=(pDoc->data[pDoc->first][pDoc->count-1]-pDoc->data[pDoc->first][0])/2+pDoc->start[pDoc->first];
		p1.y=pDoc->count-1+40+po;
		dc.LPtoDP(&p0);dc.LPtoDP(&p1);
	dc.MoveTo(p0);
	dc.LineTo(p1);
	}
	dc.SelectObject(oldpen);
	pen.DeleteObject();

}


void CDlqView::OnInputData() 
{
	CDlqDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	bool stop;long loop;
	stop=1;loop=0;int p1,p2;
	m_ComPort.SetRThreshold(0);
	if(x){m_ComPort.SetInputLen(0);//m_ComPort.GetInput();
		for(int j=0;j<400;j++)pDoc->data[pDoc->first][j]=0;
		pDoc->count=0;
		Invalidate();
		sendmode(3);
		sendtotle(610);
		while(stop){
		if(m_ComPort.GetInBufferCount()>=2){
		variant_inp.vt=VT_ARRAY ;
		variant_inp=m_ComPort.GetInput();
		safearray_inp=variant_inp;
		for(k=0;k<2;k++)
			safearray_inp.GetElement(&k,rxdata+k);
		for(k=0;k<2;k++)bt[k]=*(char*)(rxdata+k);
		p1=bt[0]*256+bt[1];
			if(pDoc->count<400){
				pDoc->data[pDoc->first][pDoc->count]=p1;
				pDoc->count++;
				drawdot();loop=0;
			if(pDoc->count>20){
				p2=pDoc->data[pDoc->first][15];
				if((p1>(p2+300))||((p1+300)<p2))stop=0;
							}
									}
			else stop=0;
											}
	else loop++;if(loop>600000)stop=0;
		}
	if(pDoc->first<11)pDoc->first++;else pDoc->first=0;pDoc->count=0;
	
	}
	sendtotle(0);
	m_ComPort.SetRThreshold(2);	
}

void CDlqView::sendmode(unsigned char mode)
{
	CByteArray array;
	BYTE tx[3];
	array.RemoveAll();
	array.SetSize(3); 
	tx[0]=0xff;tx[1]=0xaa;
	tx[2]=mode;
	for(int i=0;i<3;i++)array.SetAt(i,tx[i]);
	m_ComPort.SetOutput(COleVariant(array));
}

void CDlqView::sendtotle(int totle)
{
	CByteArray array;
	BYTE tx[4];
	array.RemoveAll();
	array.SetSize(4); 
	tx[0]=0xff;tx[1]=0xab;
	tx[2]=totle/256;tx[3]=totle%256;
	for(int i=0;i<4;i++)array.SetAt(i,tx[i]);
	m_ComPort.SetOutput(COleVariant(array));
}

void CDlqView::sendbegin(int begin)
{
	CByteArray array;
	BYTE tx[4];
	array.RemoveAll();
	array.SetSize(4); 
	tx[0]=0xff;tx[1]=0xac;
	tx[2]=begin/256;tx[3]=begin%256;
	for(int i=0;i<4;i++)array.SetAt(i,tx[i]);
	m_ComPort.SetOutput(COleVariant(array));
}

void CDlqView::sendinterval(int interval)
{
	CByteArray array;
	BYTE tx[4];
	array.RemoveAll();
	array.SetSize(4); 
	tx[0]=0xff;tx[1]=0xad;
	tx[2]=interval/256;tx[3]=interval%256;
	for(int i=0;i<4;i++)array.SetAt(i,tx[i]);
	m_ComPort.SetOutput(COleVariant(array));
}


void CDlqView::drawstart(CDC *pDC)
{
	CDlqDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	CPen pen;int po;
	pen.CreatePen(0,3,RGB(0,0,255));
	CPen *oldpen=pDC->SelectObject(&pen);
	if(pDoc->first>5)po=450;else po=0;
	pDC->MoveTo(pDoc->start[pDoc->first],10+po);
	pDC->LineTo(pDoc->start[pDoc->first],38+po); 
	pDC->SelectObject(oldpen);
	pen.DeleteObject();


}

void CDlqView::OnSelLine() 
{
	m_ComPort.SetInputLen(0);
	CDlqDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	Cclrdlg  dlg;int j;
	dlg.m_select=pDoc->first;
	if(dlg.DoModal()==IDOK){
		pDoc->first=dlg.m_select;
		for(j=0;j<400;j++)pDoc->data[pDoc->first][j]=0;
			pDoc->count=0;
	
		Invalidate();
	
	}	delete dlg;
	// TODO: Add your command handler code here
	
}

/*BOOL CDlqView::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{
	
		SetCursor(AfxGetApp()->LoadStandardCursor(IDC_CROSS);
		SetCursor(hCursor);
		return TRUE;
	
	}
	return CDlqView::OnSetCursor(pWnd,nHitTest,message);
}
*/
void CDlqView::OnLButtonDown(UINT nFlags, CPoint point) 
{
if(x){CDlqDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	CClientDC dc(this);
	OnPrepareDC(&dc);dc.DPtoLP(&point);
	pDoc->start[pDoc->first]=point.x;
	Invalidate();}	
}

void CDlqView::OnStopInput() 
{
	if(x){CDlqDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	pDoc->count=0;
	if(pDoc->first<11)pDoc->first++;else pDoc->first=0;}
	Invalidate();
}

void CDlqView::sendbeili(unsigned char beili)
{
	CByteArray array;
	BYTE tx[3];
	array.RemoveAll();
	array.SetSize(3); 
	tx[0]=0xff;tx[1]=0xae;
	tx[2]=beili;
	for(int i=0;i<3;i++)array.SetAt(i,tx[i]);
	m_ComPort.SetOutput(COleVariant(array));
}

void CDlqView::OnSendLength() 
{
	Cbilidlg dlg;
	int x;
	if(dlg.DoModal()==IDOK){
		x=dlg.m_bili*14;
		sendinterval(x);
	}
	delete dlg;
	// TODO: Add your command handler code here
	
}

void CDlqView::sendci(unsigned char ci)
{
	CByteArray array;
	BYTE tx[3];
	array.RemoveAll();
	array.SetSize(3); 
	tx[0]=0xff;tx[1]=0xaf;
	tx[2]=ci;
	for(int i=0;i<3;i++)array.SetAt(i,tx[i]);
	m_ComPort.SetOutput(COleVariant(array));
}

void CDlqView::OnSendCi() 
{
	// TODO: Add your command handler code here
Cbilidlg dlg;
	unsigned char x;
//	dlg.SetWindowText("请输入平均取次数");
	if(dlg.DoModal()==IDOK){
		x=dlg.m_bili;
		sendci(x);
	}
	delete dlg;	
}

void CDlqView::OnValiJiyuan() 
{
	CDlqDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	Cvalidlg dlg;
	dlg.a=pDoc->m_aa;dlg.b=pDoc->m_bb;
	dlg.z=pDoc->m_zz;dlg.m=pDoc->m_momo;
	dlg.fx=pDoc->m_fxfx;
	dlg.DoModal();
	delete dlg;
	// TODO: Add your command handler code here
	
}

⌨️ 快捷键说明

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