📄 cartestdlg.cpp
字号:
dc->MoveTo(i,330-left);
dc->LineTo(i+2,330-powerset.m_left2);
dc->SelectObject (&pen2);
dc->MoveTo(i,330-right);
dc->LineTo(i+2,330-powerset.m_right2);
var1.Format ("%f",powerset.m_left2);
var2.Format ("%f",powerset.m_right2);
mdc->TextOut(20,20,var1);
mdc0->TextOut(20,20,var2);
left=powerset.m_left2;
right=powerset.m_right2;
::Sleep(50);
i+=2;
leftpower[k]=left;
rightpower[k]=right;
arrar[k]=left-right;
k++;
powerset.MoveNext();
}while(!powerset.IsEOF());
powerset.Close();
int c,flag=0;
float leftmax=0,rightmax=0,arrarmax=0,leftmm=0,rightmm=0,temp=0,leftzu=0,rightzu=0 ;
for(c=1;c<170;c++)
{
if(leftpower[c-1]<leftpower[c])
leftmax=leftpower[c];
else
{
temp=leftpower[c-1];
leftpower[c-1]=leftpower[c];
leftpower[c]=temp;
leftmax=leftpower[c];
}
if(rightpower[c-1]<rightpower[c])
rightmax=rightpower[c];
else
{
temp=rightpower[c-1];
rightpower[c-1]=rightpower[c];
rightpower[c]=temp;
rightmax=rightpower[c];
}
if(arrar[c-1]<arrar[c])
{arrarmax=arrar[c];
flag=c;}
else
{
temp=arrar[c-1];
arrar[c-1]=arrar[c];
arrar[c]=temp;
arrarmax=arrar[c];
}
}
leftmm=leftpower[flag];
rightmm=rightpower[flag];
leftzu=arrarmax/leftmax;
rightzu=arrarmax/rightmax;
//////////////////算不平衡率
CString t1,t2;
t1.Format ("%f",100*arrarmax/rightmax);
t2.Format ("%f",100*arrarmax/leftmax);
str1.Format ("%f",leftmax);
str2.Format("%f",rightmax);
str3.Format ("%f",leftmm);
str4.Format("%f",rightmm);
str5.Format ("%f",100*leftzu);
str6.Format ("%f",100*rightzu);
if(fbflag==1)
{
if(leftmax<rightmax)
m_list.SetItemText (0,7,t1);
else
m_list.SetItemText (0,7,t2);
m_list.SetItemText(0,2,str1);
m_list.SetItemText(0,3,str2);
m_list.SetItemText(0,4,str3);
m_list.SetItemText(0,5,str4);
m_list.SetItemText (0,8,str5);
m_list.SetItemText(0,9,str6);
}
else
{
if(leftmax<rightmax)
m_list.SetItemText (1,7,t1);
else
m_list.SetItemText (1,7,t2);
m_list.SetItemText(1,2,str1);
m_list.SetItemText(1,3,str2);
m_list.SetItemText(1,4,str3);
m_list.SetItemText(1,5,str4);
m_list.SetItemText (1,8,str5);
m_list.SetItemText(1,9,str6);
}
dc->SelectObject (&oldpen);
/////////////////////屏幕提示栏
if(fbflag==1)
{
if(leftzu<0.2|rightzu<0.2)
controldc->TextOut(0,0,"检测完毕,合格!");
else
controldc->TextOut(0,0,"制动力过大,不合格!");
}
else
{
if(leftzu<0.24|rightzu<0.24)
controldc->TextOut(0,0,"检测完毕,合格!");
else
controldc->TextOut(0,0,"制动力过大不合格");
}
}
else
{
/*dc=GetDlgItem(IDC_G)->GetDC();
GetDlgItem(IDC_BUTTON4)->EnableWindow(true);
GetDlgItem(IDC_BUTTON3)->EnableWindow(false);
////////////////////////画坐标系
dc->TextOut (-15,333,"原点");
dc->TextOut(2,-5,"100N");
dc->TextOut(410,333,"时间:0.1S");
dc->TextOut(2,10,"红线为左制动力,绿线为右制动力");
//画坐标轴
dc->MoveTo (2,0);
dc->LineTo (2,330);
dc->LineTo (400,330);
dc->MoveTo (0,4);
dc->LineTo (2,0);
dc->LineTo (4,4);
dc->MoveTo (396,328);
dc->LineTo (400,330);
dc->LineTo(396,332);
//画刻度
long i,j;
for (i=0;i<66;i++)
{
dc->MoveTo (2,330-5*i);
dc->LineTo (4,330-5*i);
}
for (j=0;j<79;j++)
{
dc->MoveTo (2+5*j,330);
dc->LineTo (2+5*j,328);
}
//////////////////////抛物线模拟
CPen *oldpen;
CPen pen1,pen2;
pen1.CreatePen (PS_DASH,2,RGB(255,0,0));
pen2.CreatePen (PS_DASH,2,RGB(0,255,0));
float px=0,py=0;
float k=0,temp,temp1;
CString var3,var4;
mdc=GetDlgItem(IDC_Lr)->GetDC();
mdc0=GetDlgItem(IDC_Lr2)->GetDC();
while(k<240)
{
var3.Format ("%ld",px);
var4.Format ("%ld",py);
mdc->TextOut(20,20,var3);
mdc0->TextOut(20,20,var4);
dc->SelectObject (&pen1);
dc->MoveTo(k,330-px);
dc->LineTo(k+2,330-(2.7*k-0.01*k*k));
dc->SelectObject (&pen2);
dc->MoveTo(k,330-py);
dc->LineTo(k+2,330-(3.45*k-0.012*k*k));
::Sleep (50);
k=k+0.5;
if (px<2.7*k-0.01*k*k)
{
temp=2.7*k-0.01*k*k;
}
else
{
temp=px;
}
if (py<3.45*k-0.012*k*k)
{
temp1=3.45*k-0.012*k*k;
}
else
{
temp1=py;
}
}*/
}
/* data p;
p.dc=dc;
p.powerset=&powerset;*/
// AfxBeginThread(ThreadProc,&p);
// TODO: Add your control notification handler code here
}
void CCartestDlg::OnButton3()
{
CFont font;
GetDlgItem(IDC_BUTTON3)->EnableWindow(false);
GetDlgItem(IDC_BUTTON4)->EnableWindow(true);
GetDlgItem(IDC_BUTTON1)->EnableWindow(true);
SetDlgItemText(IDC_Title,"待命检测........");
GetDlgItem(IDC_Title)->SetFont(&font);
// TODO: Add your control notification handler code here
}
void CCartestDlg::OnButton2()
{
//TODO: Add your control notification handler code here
}
void CCartestDlg::OnButton1()
{
CAboutDlg sys;
sys.DoModal ();
// TODO: Add your control notification handler code here
}
void CCartestDlg::OnButton5()
{
MESSAGEDIALOG dlg;
dlg.DoModal ();
// TODO: Add your control notification handler code here
}
void CCartestDlg::OnButton6()
{
CCartestDlg dlg;
CString s;
m_set.m_strFilter.Format("[车主名]='%s'",number[0]);
if(m_set.IsOpen())
m_set.Requery();
else
m_set.Open();
m_set.AddNew();
m_set.m_column1=number[0];
m_set.m_column2=number[1];
m_set.m_column3=number[2];
m_set.m_column4=number[3];
m_set.m_column5=number[4];
m_set.m_column6=number[5];
m_set.Update();
m_set.m_strFilter="";
MessageBox("保存成功!","恭喜",MB_OK);
m_set.Close();
}
void CCartestDlg::SetPrinterSettings(CDC *pDC, HDC hdcPrn)
{
short cxPage, cyPage;
cxPage = ::GetDeviceCaps (hdcPrn, HORZRES) ;
cyPage = ::GetDeviceCaps (hdcPrn, VERTRES) ;
pDC->SetMapMode (MM_ISOTROPIC) ;
pDC->SetWindowExt ( 1000, 1000) ;
pDC->SetViewportExt (cxPage / 2, -cyPage / 2) ;
pDC->SetViewportOrg (cxPage / 2, cyPage / 2) ;
pDC->SetTextAlign (TA_BASELINE | TA_CENTER) ;
}
void CCartestDlg::OnPRintG()
{
// TODO: Add your control notification handler code here
CString szContents;
GetDlgItemText( IDC_G, szContents );
HDC hdcPrn ;
CPrintDialog *printDlg =
new CPrintDialog(FALSE, PD_ALLPAGES | PD_RETURNDC, NULL);
printDlg->m_pd.nMinPage = printDlg->m_pd.nMaxPage = 1;
printDlg->m_pd.nFromPage = printDlg->m_pd.nToPage = 1;
printDlg->DoModal();
hdcPrn = printDlg->GetPrinterDC();
if (hdcPrn != NULL)
{
CDC *pDC = new CDC;
pDC->Attach (hdcPrn);
pDC->StartDoc("My Printer Dialog");
pDC->StartPage();
SetPrinterSettings(pDC, hdcPrn);
pDC->TextOut(10, 10, szContents);
pDC->EndPage();
pDC->EndDoc();
pDC->Detach();
delete pDC;
}
delete printDlg;
}
void CAboutDlg::OnStart()
{
// TODO: Add your control notification handler code here
MessageBox("没有获得左电机信息!","电机控制",MB_OKCANCEL);
GetDlgItem(IDC_Stop)->EnableWindow(true);
}
void CAboutDlg::OnStart3()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_Stop)->EnableWindow(true);
MessageBox("没有获得右电机的信息!","电机控制",MB_OKCANCEL);
}
void CAboutDlg::OnStop()
{
// TODO: Add your control notification handler code here
}
BOOL CAboutDlg::OnInitDialog()
{
CDialog::OnInitDialog();
GetDlgItem(IDC_Stop)->EnableWindow(false);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//画图函数,在控件PICTRUE上画曲线
//开始检测开线程的回调函数
UINT ThreadProc(LPVOID pPar)
{
data * temp=(data *)pPar;
CDC *dc=(CDC *)(temp->dc);
CPowerSet *powerset=(CPowerSet *)(temp->powerset);
CString s;
//while(!powerset->IsEOF())
// powerset->MoveFirst();
AfxMessageBox("ready to open!");
if(!powerset->IsOpen())
powerset->Open();
powerset->MoveFirst();
if(!powerset->IsEOF())
{
AfxMessageBox("ready catch data!");
for(int i=0;i<3;i++)
{
//AfxMessageBox("ready catch data!");
s.Format("%ld,%ld",powerset->m_column3,powerset->m_column4);
// AfxMessageBox("ready catch data!");
AfxMessageBox(s);
powerset->MoveNext();
}
}
/*
dc->MoveTo(10,10);
for(int i=0;i<10;i++)
{
dc->LineTo(20+i,30-2*i);
::Sleep(100);
} */
::Sleep(100);
return 0;
}
void CCartestDlg::OnOK()
{
EndDialog(0);
}
void CAboutDlg::OnJs()
{
// TODO: Add your control notification handler code here
MessageBox("没有获得举升器信息","举升器控制",MB_OKCANCEL);
}
void CAboutDlg::OnJj()
{
MessageBox("没有获得举升器信息","举升器控制",MB_OKCANCEL);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -