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