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

📄 checkdlg.cpp

📁 这是工厂应用的软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -