📄 checkdlg.cpp
字号:
// CheckDlg.cpp : implementation file
//
#include "stdafx.h"
#include "SUNTEK.h"
#include "CheckDlg.h"
#include "MessageDlg.h"
#include "math.h"
//add necessary head files
#include "RecsetTBound.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CCheckDlg dialog
CCheckDlg::CCheckDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCheckDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCheckDlg)
m_TypeSelect = _T("29SF");
m_myCALT1 = 0.0f;
m_myCALT2 = 0.0f;
m_myCALROTATION = 0.0f;
m_myVERT1 = 0.0f;
m_myVERT2 = 0.0f;
m_myVERROTATION = 0.0f;
m_UPT1 = 0.0f;
m_UPT2 = 0.0f;
m_UPT3 = 0.0f;
m_DOWNT1 = 0.0f;
m_DOWNT2 = 0.0f;
m_DOWNT3 = 0.0f;
m_edit_t1 = _T("0");
m_edit_t2 = _T("0");
m_edit_t3 = _T("0");
m_myCALT3 = 0.0f;
m_myVERT3 = 0.0f;
//}}AFX_DATA_INIT
bfirst=true;
bauto=true;
bInMessage=true;
bCalVal=true;
m_myVERT3=0;
m_myCALT3=0;
// nLower=0;
// nUpper=2400;
bChangePos=false;
nMessageStep=0;
bfirstchange=false;
nStartMessage=0;
}
void CCheckDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCheckDlg)
DDX_Control(pDX, IDC_MANCHECK3_1, m_ManCheck3_1);
DDX_Control(pDX, IDC_END_CHANGEPOS, m_CtrlEndChangPos);
DDX_Control(pDX, IDC_STRAT_CHANGEPOS, m_CtrlStartChangPos);
DDX_Control(pDX, IDC_PROGRESS_T3, m_Progress_T3);
DDX_Control(pDX, IDC_PROGRESS_T2, m_Progress_T2);
DDX_Control(pDX, IDC_PROGRESS_T1, m_Progress_T1);
DDX_Control(pDX, IDC_COMBO1_TYPE, m_TypeSelectCtrl);
DDX_Control(pDX, IDC_AUTOCHECKEND, m_AutoCheckEnd);
DDX_Control(pDX, IDOK, m_Ok);
DDX_Control(pDX, IDCANCEL, m_Cancel);
DDX_Control(pDX, IDC_AUTOCHECK1, m_AutoCheck);
DDX_Control(pDX, IDC_MANCHECK5, m_ManCheck5);
DDX_Control(pDX, IDC_MANCHECK4, m_ManCheck4);
DDX_Control(pDX, IDC_MANCHECK3, m_ManCheck3);
DDX_Control(pDX, IDC_MANCHECK2, m_ManCheck2);
DDX_Control(pDX, IDC_MANCHECK1, m_ManCheck1);
DDX_Control(pDX, IDC_DAQDICTRL1, m_DAQDICtrl);
DDX_Control(pDX, IDC_DAQDOCTRL1, m_DAQDOCtrl);
DDX_Control(pDX, IDC_MSCOMM1, m_Com);
DDX_CBString(pDX, IDC_COMBO1_TYPE, m_TypeSelect);
DDX_Text(pDX, IDC_CALT1, m_myCALT1);
DDX_Text(pDX, IDC_CALT2, m_myCALT2);
DDX_Text(pDX, IDC_CALROTATION, m_myCALROTATION);
DDX_Text(pDX, IDC_VERT1, m_myVERT1);
DDX_Text(pDX, IDC_VERT2, m_myVERT2);
DDX_Text(pDX, IDC_VERROTATION, m_myVERROTATION);
DDX_Text(pDX, IDC_UPT1, m_UPT1);
DDX_Text(pDX, IDC_UPT2, m_UPT2);
DDX_Text(pDX, IDC_UPT3, m_UPT3);
DDX_Text(pDX, IDC_DOWNT1, m_DOWNT1);
DDX_Text(pDX, IDC_DOWNT2, m_DOWNT2);
DDX_Text(pDX, IDC_DOWNT3, m_DOWNT3);
DDX_Text(pDX, IDC_EDIT_T1, m_edit_t1);
DDX_Text(pDX, IDC_EDIT_T2, m_edit_t2);
DDX_Text(pDX, IDC_EDIT_T3, m_edit_t3);
DDX_Text(pDX, IDC_CALT3, m_myCALT3);
DDX_Text(pDX, IDC_VERT3, m_myVERT3);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCheckDlg, CDialog)
//{{AFX_MSG_MAP(CCheckDlg)
ON_BN_CLICKED(IDC_AUTOCHECK1, OnAutocheck1)
ON_BN_CLICKED(IDC_MANCHECK1, OnMancheck1)
ON_BN_CLICKED(IDC_MANCHECK2, OnMancheck2)
ON_BN_CLICKED(IDC_MANCHECK3, OnMancheck3)
ON_BN_CLICKED(IDC_MANCHECK4, OnMancheck4)
ON_BN_CLICKED(IDC_MANCHECK5, OnMancheck5)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_AUTOCHECKEND, OnAutocheckend)
ON_WM_CTLCOLOR()
ON_BN_CLICKED(IDC_STRAT_CHANGEPOS, OnStratChangepos)
ON_BN_CLICKED(IDC_END_CHANGEPOS, OnEndChangepos)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_MANCHECK3_1, OnMancheck31)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCheckDlg message handlers
void CCheckDlg::OnAutocheck1()
{
// TODO: Add your control notification handler code here
m_AutoCheckEnd.EnableWindow(true);
m_AutoCheck.EnableWindow(false);
m_ManCheck1.EnableWindow(false);
m_ManCheck2.EnableWindow(false);
m_ManCheck3.EnableWindow(false);
m_ManCheck4.EnableWindow(false);
m_ManCheck5.EnableWindow(false);
// m_Ok.EnableWindow(false);
// m_Cancel.EnableWindow(false);
////////////////////////////////////////
bauto=true;
m_DAQDICtrl.OpenDevice();
m_DAQDICtrl.SetBit(0);
m_DAQDICtrl.EnableBitScan(true);
m_DAQDICtrl.SetScanTime(50);
m_DAQDICtrl.CloseDevice();
}
void CCheckDlg::OnMancheck1()
{
// TODO: Add your control notification handler code here
m_ManCheck1.EnableWindow(false);
m_AutoCheck.EnableWindow(false);
m_AutoCheckEnd.EnableWindow(false);
m_Ok.EnableWindow(false);
// m_Cancel.EnableWindow(false);
/////////////////////////////
bauto=false;
/////////////////////////////
m_DAQDOCtrl.OpenDevice();
m_DAQDOCtrl.SetBit(2);
m_DAQDOCtrl.BitOutput(1);
m_DAQDOCtrl.CloseDevice();
m_ManCheck2.EnableWindow(true);
m_ManCheck2.SetFocus();
// m_CtrlStartChangPos.EnableWindow(true);
}
void CCheckDlg::OnMancheck2()
{
// TODO: Add your control notification handler code here
m_ManCheck2.EnableWindow(false);
m_AutoCheck.EnableWindow(false);
m_AutoCheckEnd.EnableWindow(false);
m_Ok.EnableWindow(false);
// m_Cancel.EnableWindow(false);
/////////////////////////////
bauto=false;
/////////////////////////////
m_DAQDOCtrl.OpenDevice();
m_DAQDOCtrl.SetBit(1);
m_DAQDOCtrl.BitOutput(1);
m_DAQDOCtrl.CloseDevice();
m_ManCheck3.EnableWindow(true);
m_ManCheck3.SetFocus();
}
void CCheckDlg::OnMancheck3()
{
// TODO: Add your control notification handler code here
m_ManCheck3.EnableWindow(false);
m_AutoCheck.EnableWindow(false);
m_AutoCheckEnd.EnableWindow(false);
m_Ok.EnableWindow(false);
// m_Cancel.EnableWindow(false);
///////////////////////////
bauto=false;
//////////////////////////
m_DAQDOCtrl.OpenDevice();
m_DAQDOCtrl.SetBit(0);
m_DAQDOCtrl.BitOutput(1);
for(int i=0;i<20000;i++)
{
;
for(int k=0;k<30000;k++)
{
;
}
}
/////////////////////////////////
/* m_DAQDICtrl.OpenDevice();
m_DAQDICtrl.SetBit(5);
bool bSenso1=m_DAQDICtrl.BitInput();
m_DAQDICtrl.SetBit(6);
bool bSenso2=m_DAQDICtrl.BitInput();
m_DAQDICtrl.SetBit(7);
bool bSenso3=m_DAQDICtrl.BitInput();
m_DAQDICtrl.CloseDevice();
/////////////////////////////////
if(bSenso1&&bSenso2&&bSenso3)
{
m_DAQDOCtrl.SetBit(3);
m_DAQDOCtrl.BitOutput(1);
}
*/
m_DAQDOCtrl.CloseDevice();
m_ManCheck3_1.EnableWindow(true);
m_ManCheck3_1.SetFocus();
}
void CCheckDlg::OnMancheck31()
{
// TODO: Add your control notification handler code here
m_ManCheck3_1.EnableWindow(false);
m_DAQDOCtrl.OpenDevice();
m_DAQDICtrl.OpenDevice();
m_DAQDICtrl.SetBit(5);
bool bSenso1=m_DAQDICtrl.BitInput();
m_DAQDICtrl.SetBit(6);
bool bSenso2=m_DAQDICtrl.BitInput();
m_DAQDICtrl.SetBit(7);
bool bSenso3=m_DAQDICtrl.BitInput();
m_DAQDICtrl.CloseDevice();
/////////////////////////////////
if(bSenso1&&bSenso2&&bSenso3)
{
m_DAQDOCtrl.SetBit(3);
m_DAQDOCtrl.BitOutput(1);
}
m_DAQDOCtrl.CloseDevice();
if(!bfirstchange)
{
m_CtrlStartChangPos.EnableWindow(true);
m_CtrlStartChangPos.SetFocus();
bfirstchange=true;
}
else
{
m_ManCheck4.EnableWindow(true);
m_ManCheck4.SetFocus();
}
}
void CCheckDlg::OnMancheck4()
{
// TODO: Add your control notification handler code here
m_ManCheck4.EnableWindow(false);
m_AutoCheck.EnableWindow(false);
m_AutoCheckEnd.EnableWindow(false);
m_Ok.EnableWindow(false);
// m_Cancel.EnableWindow(false);
///////////////////////////////////
bauto=false;
////////////////////////////////////
m_DAQDOCtrl.OpenDevice();
m_DAQDOCtrl.SetBit(0);
m_DAQDOCtrl.BitOutput(0);
m_DAQDOCtrl.CloseDevice();
/////////////////////////////
// m_DAQDICtrl.OpenDevice();
// m_DAQDOCtrl.CloseDevice();
//////////////////////////////向TASR发送控制字
for(int k=0;k<20000;k++)
{
;
for(int j=0;j<20000;j++)
{
;
}
}
BYTE TxData[]={0x02,0x4c,0x50,0x53,0x30,0x30,0x37,0x30,0x30,0x30,0x30,0x32,0x30,0x31,0x03};
CByteArray array;
array.RemoveAll();
array.SetSize(15);
for(int i=0;i<15;i++)
{
array.SetAt(i,TxData[i]);
}
m_Com.SetOutput(COleVariant(array));
Sleep(100);
m_CtrlStartChangPos.EnableWindow(false);
m_ManCheck5.EnableWindow(true);
m_ManCheck5.SetFocus();
nStartMessage++;
}
void CCheckDlg::OnMancheck5()
{
// TODO: Add your control notification handler code here
m_ManCheck5.EnableWindow(false);
m_AutoCheck.EnableWindow(false);
m_AutoCheckEnd.EnableWindow(false);
m_ManCheck1.EnableWindow(false);
m_ManCheck2.EnableWindow(false);
m_ManCheck3.EnableWindow(false);
m_ManCheck4.EnableWindow(false);
m_ManCheck5.EnableWindow(false);
// m_Cancel.EnableWindow(false);
///////////////////////////////////
bauto=false;
///////////////////////////////////
m_DAQDICtrl.OpenDevice();
m_DAQDOCtrl.OpenDevice();
//////////////////////////////////
m_DAQDICtrl.SetBit(3);
// if(m_DAQDICtrl.BitInput())//气缸3在进位位
// {
m_DAQDOCtrl.SetBit(0);
m_DAQDOCtrl.BitOutput(1);
/////////////////////////////////
for(int ii=0;ii<20000;ii++)
{
;
for(int kk=0;kk<20000;kk++)
{
;
}
}
m_DAQDICtrl.SetBit(5);
bool bSenso1=m_DAQDICtrl.BitInput();
m_DAQDICtrl.SetBit(6);
bool bSenso2=m_DAQDICtrl.BitInput();
m_DAQDICtrl.SetBit(7);
bool bSenso3=m_DAQDICtrl.BitInput();
/////////////////////////////////
// if(bSenso1&&bSenso2&&bSenso3)
// {
for(int i=0;i<20000;i++)
{
for(int j=0;j<10000;j++)
;
}
m_DAQDOCtrl.SetBit(3);
m_DAQDOCtrl.BitOutput(0);
// }
for(int k=0;k<20000;k++)
{
for(int l=0;l<10000;l++)
;
}
m_DAQDOCtrl.SetBit(0);
m_DAQDOCtrl.BitOutput(0);
// }
/////////////////////////////////
for(int m=0;m<20000;m++)
{
for(int n=0;n<10000;n++)
;
}
m_DAQDOCtrl.SetBit(1);
m_DAQDOCtrl.BitOutput(0);
for(int o=0;o<10000;o++)
{
for(int p=0;p<20000;p++)
;
}
m_DAQDOCtrl.SetBit(2);
m_DAQDOCtrl.BitOutput(0);
//////////////////////////////////
m_DAQDOCtrl.CloseDevice();
m_DAQDICtrl.CloseDevice();
///////////////////////////////////
m_AutoCheck.EnableWindow(true);
m_AutoCheckEnd.EnableWindow(false);
// if(!bCalVal)
// {
// m_Ok.EnableWindow(false);
// }
// else
// {
// }
// m_Cancel.EnableWindow(true);
// m_ManCheck2.EnableWindow(true);
// m_ManCheck3.EnableWindow(true);
// m_ManCheck4.EnableWindow(true);
// m_ManCheck5.EnableWindow(true);
m_ManCheck1.EnableWindow(true);
if(nStartMessage==2)
{
m_Ok.EnableWindow(true);
m_Ok.SetFocus();
}
else
m_ManCheck1.SetFocus();
}
BOOL CCheckDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
//BOUND SETTING
if(chkRecsetTBound.IsOpen())
{
chkRecsetTBound.Close();
}
chkRecsetTBound.Open();
m_UPT1=chkRecsetTBound.m_upT1;
m_UPT2=chkRecsetTBound.m_upT2;
m_UPT3=chkRecsetTBound.m_upT3;
m_DOWNT1=chkRecsetTBound.m_downT1;
m_DOWNT2=chkRecsetTBound.m_downT2;
m_DOWNT3=chkRecsetTBound.m_downT3;
UpdateData(false);
chkRecsetTBound.Close();
//BACKGROUND COLOR
newbrush.CreateSolidBrush(RGB(58,110,165));
m_DlgbkColor=(HBRUSH)newbrush;
//////////////////////////
m_Ok.EnableWindow(false);
/////////////////////////////
if(m_Com.GetPortOpen())
m_Com.SetPortOpen(false);
m_Com.SetCommPort(2);
m_Com.SetInBufferSize(1024);
m_Com.SetOutBufferSize(512);
if(!m_Com.GetPortOpen())
m_Com.SetPortOpen(true);
m_Com.SetInputMode(1);
m_Com.SetSettings("9600,E,7,1");
m_Com.SetRThreshold(1);
m_Com.SetDTREnable(1);
m_Com.SetRTSEnable(1);
/////////////////////////
m_ManCheck2.EnableWindow(false);
m_ManCheck3.EnableWindow(false);
m_ManCheck4.EnableWindow(false);
m_ManCheck5.EnableWindow(false);
m_ManCheck3_1.EnableWindow(false);
//初始化进度条
CRecsetTBound RecsetTBound;
if(RecsetTBound.IsOpen())
{
RecsetTBound.Close();
}
RecsetTBound.Open();
upT1=1000*RecsetTBound.m_upT1;
upT2=1000*RecsetTBound.m_upT2;
upT3=1000*RecsetTBound.m_upT3;
downT1=1000*RecsetTBound.m_downT1;
downT2=1000*RecsetTBound.m_downT2;
downT3=1000*RecsetTBound.m_downT3;
RecsetTBound.Close();
m_Progress_T1.SetRange(0,upT1-downT1);
m_Progress_T1.SetPos(0);
m_Progress_T2.SetRange(0,upT2-downT2);
m_Progress_T2.SetPos(0);
m_Progress_T3.SetRange(0,upT3-downT3);
m_Progress_T3.SetPos(0);
//CHANGEPOS按钮
m_CtrlStartChangPos.EnableWindow(false);
m_CtrlEndChangPos.EnableWindow(false);
m_AutoCheckEnd.EnableWindow(false);
m_Com.SetInputLen(0);
m_Com.GetInput();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
BEGIN_EVENTSINK_MAP(CCheckDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CCheckDlg)
ON_EVENT(CCheckDlg, IDC_MSCOMM1, 1 /* OnComm */, OnOnCommMscomm1, VTS_NONE)
ON_EVENT(CCheckDlg, IDC_DAQDICTRL1, 2 /* OnBitScan */, OnOnBitScanDaqdictrl1, VTS_BOOL)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void CCheckDlg::OnOnCommMscomm1()
{
// TODO: Add your control notification handler code here
ft1=ft2=ft3=0.0;
CRecsetTBound RecsetTBound;
float upT1,downT1,upT2,downT2,upT3,downT3;
if(RecsetTBound.IsOpen())
{
RecsetTBound.Close();
}
RecsetTBound.Open();
upT1=1000*RecsetTBound.m_upT1;
upT2=1000*RecsetTBound.m_upT2;
upT3=1000*RecsetTBound.m_upT3;
downT1=1000*RecsetTBound.m_downT1;
downT2=1000*RecsetTBound.m_downT2;
downT3=1000*RecsetTBound.m_downT3;
RecsetTBound.Close();
/////////////////////////////////////////////////////////////
VARIANT vResponse;
char c;
char *str;
int nEvent;
CString t1="";
CString t2="";
CString t3="";
nEvent=m_Com.GetCommEvent();
if(nEvent==2)
{
// if(bfirst)
// {
// m_Com.SetInputLen(0);
// m_Com.GetInput();
// bfirst=false;
// return;
// }
if(bfirst)
{
m_Com.SetInputLen(1);
do
{
vResponse=m_Com.GetInput();
str=(char*)(unsigned char*)vResponse.parray->pvData;
c=str[0];
}while(c!='R');
m_Com.SetInputLen(5);
m_Com.GetInput();
m_Com.SetInputLen(1);
//第一次校验值开始
//////////////////读第一个传感器数据
do
{
vResponse=m_Com.GetInput();
str=(char*)(unsigned char*)vResponse.parray->pvData;
c=str[0];
if(c==' ')
break;
t1=t1+c;
}while(c!=' ');
////////////////读第二个传感器数据
do
{
vResponse=m_Com.GetInput();
str=(char*)(unsigned char*)vResponse.parray->pvData;
c=str[0];
if(c==' ')
break;
t2=t2+c;
}while(c!=' ');
//////////////////读第三个传感器数据
do
{
vResponse=m_Com.GetInput();
str=(char*)(unsigned char*)vResponse.parray->pvData;
c=str[0];
if(c==' ')
break;
t3=t3+c;
}while(c!=' ');
//////////////////读结束符
do
{
vResponse=m_Com.GetInput();
str=(char*)(unsigned char*)vResponse.parray->pvData;
c=str[0];
}while(c!=03);
}
////////////////////////发送ACK
CByteArray array;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -