欢迎来到虫虫下载站 | 资源下载 资源专辑 关于我们
虫虫下载站

commwizarddlg.cpp

实现网络+串口 红外接收、发送
CPP
第 1 页 / 共 5 页
字号:

	//清除接收缓冲区准备接收应答信息
	for(i=0;i<512;i++)
	{
		byTemp[i] = 0xAA;//
	}
	///////

	st.Format("%s",strTp);
	if(!m_bSerialSet)
		SendCmd(st);//发送命令
	else
	{

		m_bSerSendFlag = 1;//置位发送命令,开始发送
 	//AfxMessageBox(st);
		AfxBeginThread(Serial_WriteThead,&SocketPr);//
	}
				/*
				CString ssy,sk=_T("");
				for(i=0;i<99;i++)
				{
				   ssy.Format("%02x ",SendSerData[i]);
				   sk=sk+ssy;
				}
				AfxMessageBox(sk);
				*/	
	//进度指示
	m_ctPsupdown.SetRange(1,40);
	m_ctPsupdown.SetPos(count_d + 1);    


#endif
}

void CCommWizardDlg::SendCmd(CString cmd)
{
	CString strSend;

	if(m_nInputMode > 1)
	{
		CByteArray hexdata;
		int len=String2Hex(cmd ,hexdata);
		m_Com.SetOutput(COleVariant(hexdata));

	}
	else
		m_Com.SetOutput(COleVariant(cmd));//发送数据

}

//通道选择
void CCommWizardDlg::OnSelchangeChannelsel() 
{
	CString str;
	m_nChannelNum = m_ctrlChannelSel.GetCurSel();
	str.Format("%d",m_nChannelNum);
	::WritePrivateProfileString("AIR_CHANNEL","CHANNEL_NUM", str,	".\\irda.ini");	
}

void CCommWizardDlg::OnCheckDownen() 
{
	UpdateData(true);
	if(m_bDownOneEn)
	{
		GetDlgItem(IDC_DATADOWN)->EnableWindow(true);
	}
	else
	{
		GetDlgItem(IDC_DATADOWN)->EnableWindow(false);
	}
}
//开始查徇
void CCommWizardDlg::OnStartlook() 
{
	bLook = !bLook;
	if(bLook)
	{
		m_ctrStartLook.SetWindowText(_T("停止查徇"));
		SetTimer(4,1000,NULL);//时间为1000毫秒
		//SetTimer(6,100,NULL);
	}
	else
	{
		m_ctrStartLook.SetWindowText(_T("循环查徇"));
		KillTimer(4);  //取消定时
		//KillTimer(6);  //取消定时
		//timers = 0;
	}		
	//StartLook();
}
//查徇
void CCommWizardDlg::StartLook()
{
	CString strcmd,stAA,str,strDown,strTp,st,stx;
	unsigned int CRC  = 0;
	unsigned int nCRC=0;
	unsigned char CRCL = 0;
	unsigned char CRCH = 0;
	char hexdata[512];
	short H1,H2,L1,L2;
	float D1,D2,U1,U2;
	//unsigned char relen;
	//unsigned char tm;
	int i,j,k=0;
	int nx,ny,nz;

	strTp.Empty();
	strcmd.Empty();
	stAA.Empty();
	str.Empty();
	strDown.Empty();
	st.Empty();
	stx.Empty();

	for(i=0;i<512;i++)
	{
		hexdata[i] = 0x00;
		byTemp[i] = 0X00;
	}
	for(i=0;i<150;i++)
	{
		SendSerData[i] = 0;
	}

	switch(m_ctrHisChannel.GetCurSel())
	{
	case 0:
		nx = 1;
		ny = 1;
		break;
	case 1:
		nx = 2;
		ny = 2;
		break;
	case 2:
		nx = 4;
		ny = 3;
		break;
	case 3:
		nx = 8;
		ny = 4;
		break;
	default:
		break;
	}
	switch(m_ctrDataType.GetCurSel())
	{
	case 0:
		nz = 0x00;
		break;
	case 1:
		nz = 0x02;
		break;
	case 2:
		nz = 0x03;
		break;
	case 3:
		nz = 0x08;//设置参数
		break;
	case 4:
		nz = 0x09;////查询告警参数
		break;
	default:
		break;
	}

	hexdata[0] = 0x7e;
	hexdata[1] = 0x7e;
	hexdata[2] = atoi(m_sAirModelAddr);//0x01;//空调模块地址
	hexdata[3] = 0x00;//PC机地址
	nx = nx<<4;
	hexdata[4] = (unsigned char)nx;//通道号
	hexdata[5] = 0x01;
	hexdata[6] = nz; //0x02;//查徇命令

	if(nz == 0x08)
	{
		UpdateData(true);
		hexdata[5] = 0x11;
		hexdata[7] = atoi(m_sMAUp) >>8;
		hexdata[8] = atoi(m_sMAUp) & 0x00ff;
		hexdata[9] = atoi(m_sMADown) >> 8;
		hexdata[10] = atoi(m_sMADown) & 0x00ff;

		hexdata[11] = atoi(m_sMBUp) >> 8;
		hexdata[12] = atoi(m_sMBUp) & 0x00ff;
		hexdata[13] = atoi(m_sMBDown) >> 8;
		hexdata[14] = atoi(m_sMBDown) & 0x00ff;

		hexdata[15] = atoi(m_sAlarmAUp) >> 8;
		hexdata[16] = atoi(m_sAlarmAUp) & 0x00ff;
		hexdata[17] = atoi(m_sAlarmBUp) >> 8;
		hexdata[18] = atoi(m_sAlarmBUp) & 0x00ff;

		hexdata[19] = atoi(m_sAlarmADown) >> 8;
		hexdata[20] = atoi(m_sAlarmADown) & 0x00ff;
		hexdata[21] = atoi(m_sAlarmBDown) >> 8;
		hexdata[22] = atoi(m_sAlarmBDown) & 0x00ff;

	//告警
	::WritePrivateProfileString("ALARM_A_UP","A_UP", m_sAlarmAUp,	".\\irda.ini");	
	::WritePrivateProfileString("ALARM_A_DOWN","A_DOWN", m_sAlarmADown,	".\\irda.ini");	
	::WritePrivateProfileString("ALARM_B_UP","B_UP", m_sAlarmBUp,	".\\irda.ini");	
	::WritePrivateProfileString("ALARM_B_DOWN","B_DOWN", m_sAlarmBDown,	".\\irda.ini");	
	//测量
	::WritePrivateProfileString("ME_A_UP","A_UP", m_sMAUp,	".\\irda.ini");	
	::WritePrivateProfileString("ME_A_DOWN","A_DOWN", m_sMADown,	".\\irda.ini");	
	::WritePrivateProfileString("ME_B_UP","B_UP", m_sMBUp,	".\\irda.ini");	
	::WritePrivateProfileString("ME_B_DOWN","B_DOWN", m_sMBDown,	".\\irda.ini");	

		for(int i = 2;i<23;i++)
		{
			nCRC = nCRC + (unsigned char)hexdata[i];
		}
	}

	if(nz == 0x09)
	{
		UpdateData(true);
//		U2 = m_nBu = atoi(m_sMBUp);
//		D2 = m_nBd = atoi(m_sMBDown);
//		U1 = m_nAu = atoi(m_sMAUp);
//		D1 = m_nAd = atoi(m_sMADown);

		H2 = atoi(m_sMBUp);
		L2 = atoi(m_sMBDown);
		H1 = atoi(m_sMAUp);
		L1 = atoi(m_sMADown);

		D1 = (48*H1+202*L1)/250;
		U1 = (24*H1+L1)/25;
		D2 = (48*H2+202*L2)/250;
		U2 = (24*H2+L2)/25;

		m_nBu =U2 ;
		m_nBd =D2  ;
		m_nAu =U1 ;
		m_nAd =D1 ;

		UpdateData(false);
	}
	if(nz == 0x00 || nz == 0x02 ||nz == 0x03 || nz == 0x09)
	{
		nCRC = (unsigned char)hexdata[2] + (unsigned char)hexdata[3] + (unsigned char)hexdata[4] + (unsigned char)hexdata[5] + (unsigned char)hexdata[6]; 
	}


	CRCL = nCRC&0x00ff;
	CRC = nCRC >> 8;
	CRCH = CRC&0x00ff;
	if(nz == 0x08)
	{
		for(j=0;j<23;j++)
		{
			strDown.Format("%02x ",(unsigned char)hexdata[j]);
			strTp = strTp + strDown;
			strDown= _T("");

		SendSerData[j+1] = (unsigned char)hexdata[j];    //格式化网络数据命令  2008.06.23 ZQL
		SendSerData[0] ++;
		}
	}
	else
	{
		for(j=0;j<7;j++)
		{
			strDown.Format("%02x ",(unsigned char)hexdata[j]);
			strTp = strTp + strDown;
			strDown= _T("");

		SendSerData[j+1] =( unsigned char)hexdata[j];    //格式化网络数据命令  2008.06.23 ZQL
		SendSerData[0] ++;
		}
	}
	//校验
	strDown.Format("%02x ",CRCH);
	strTp = strTp + strDown;
		SendSerData[SendSerData[0] + 1] =CRCH;    //格式化网络数据命令  2008.06.23 ZQL
		SendSerData[0] ++;
	if(strDown == _T("7e "))
	{
		strTp = strTp + _T("81 ");

		SendSerData[SendSerData[0] + 1] = 0x81;    //格式化网络数据命令  2008.06.23 ZQL
		SendSerData[0] ++;
	}
	strDown= _T("");

	strDown.Format("%02x ",CRCL);
	strTp = strTp + strDown;
		SendSerData[SendSerData[0] + 1] =CRCL;    //格式化网络数据命令  2008.06.23 ZQL
		SendSerData[0] ++;
	if(strDown == _T("7e "))
	{
		strTp = strTp + _T("81 ");

		SendSerData[SendSerData[0] + 1] = 0x81;    //格式化网络数据命令  2008.06.23 ZQL
		SendSerData[0] ++;
	}
	strDown= _T("");


	//贞尾 7e 7e
	strDown.Format("%02x ",(unsigned char)hexdata[0]);
	strTp = strTp + strDown;
	strDown= _T("");
		SendSerData[SendSerData[0] + 1] = (unsigned char)hexdata[0];    //格式化网络数据命令  2008.06.23 ZQL
		SendSerData[0] ++;

	strDown.Format("%02x ",(unsigned char)hexdata[0]);
	strTp = strTp + strDown;
	strDown= _T("");
		SendSerData[SendSerData[0] + 1] = (unsigned char)hexdata[0];    //格式化网络数据命令  2008.06.23 ZQL
		SendSerData[0] ++;


	st.Format("%s",strTp);
	if(!m_bSerialSet)
		SendCmd(st);//发送命令
	else
	{

		m_bSerSendFlag = 1;  //置位发送命令标志
		AfxBeginThread(Serial_WriteThead,&SocketPr);//
	}
	//CString ss;
	//ss.Format("%d",SendSerData[0]);
 	//AfxMessageBox(ss);

	SetTimer(5,350,NULL);
	timers = 0;

}

void CCommWizardDlg::OnSelchangeHischannel() 
{
	CString str;
	str.Format("%d",m_ctrHisChannel.GetCurSel());
	::WritePrivateProfileString("AIR_LOOK_CHANNEL","CH_NUM", str,	".\\irda.ini");
}

void CCommWizardDlg::OnSelchangeHistorydata() 
{
	CString str;
	str.Format("%d",m_ctrDataType.GetCurSel());
	::WritePrivateProfileString("AIR_LOOK_CHANNEL","DATATYPE", str,	".\\irda.ini");	



				switch(m_ctrDataType.GetCurSel())
				{
				case 0:
					{
						
						GetDlgItem(IDC_SET_ALARM_AUP)->ShowWindow(false);
						GetDlgItem(IDC_SET_ALARM_ADOWN)->ShowWindow(false);
						GetDlgItem(IDC_SET_ALARM_BUP)->ShowWindow(false);
						GetDlgItem(IDC_SET_ALARM_BDOWN)->ShowWindow(false);

						GetDlgItem(IDC_SET_ME_AUP)->ShowWindow(false);
						GetDlgItem(IDC_SET_ME_ADOWN)->ShowWindow(false);
						GetDlgItem(IDC_SET_ME_BUP)->ShowWindow(false);
						GetDlgItem(IDC_SET_ME_BDOWN)->ShowWindow(false);
						

						GetDlgItem(IDC_STATIC1)->ShowWindow(true);
						GetDlgItem(IDC_STATIC2)->ShowWindow(true);
						GetDlgItem(IDC_STATIC3)->ShowWindow(true);
						GetDlgItem(IDC_STATIC4)->ShowWindow(true);
						GetDlgItem(IDC_STATIC5)->ShowWindow(true);
						GetDlgItem(IDC_STATIC6)->ShowWindow(true);
						GetDlgItem(IDC_STATIC7)->ShowWindow(true);
						GetDlgItem(IDC_STATIC8)->ShowWindow(true);
						GetDlgItem(IDC_STATIC9)->ShowWindow(true);
						GetDlgItem(IDC_STATIC10)->ShowWindow(true);

						//GetDlgItem(IDC_STATIC11)->ShowWindow(true);

						
					}
					break;
				case 1:
					{
						
						GetDlgItem(IDC_SET_ALARM_AUP)->ShowWindow(false);
						GetDlgItem(IDC_SET_ALARM_ADOWN)->ShowWindow(false);
						GetDlgItem(IDC_SET_ALARM_BUP)->ShowWindow(false);
						GetDlgItem(IDC_SET_ALARM_BDOWN)->ShowWindow(false);

						GetDlgItem(IDC_SET_ME_AUP)->ShowWindow(false);
						GetDlgItem(IDC_SET_ME_ADOWN)->ShowWindow(false);
						GetDlgItem(IDC_SET_ME_BUP)->ShowWindow(false);
						GetDlgItem(IDC_SET_ME_BDOWN)->ShowWindow(false);
						


						GetDlgItem(IDC_STATIC1)->ShowWindow(true);
						GetDlgItem(IDC_STATIC2)->ShowWindow(true);
						GetDlgItem(IDC_STATIC3)->ShowWindow(true);
						GetDlgItem(IDC_STATIC4)->ShowWindow(true);
						GetDlgItem(IDC_STATIC5)->ShowWindow(true);
						GetDlgItem(IDC_STATIC6)->ShowWindow(true);
						GetDlgItem(IDC_STATIC7)->ShowWindow(true);
						GetDlgItem(IDC_STATIC8)->ShowWindow(true);
						GetDlgItem(IDC_STATIC9)->ShowWindow(true);
						GetDlgItem(IDC_STATIC10)->ShowWindow(true);

						//GetDlgItem(IDC_STATIC11)->ShowWindow(true);
					}
					break;
				case 2:
					{
						
						GetDlgItem(IDC_SET_ALARM_AUP)->ShowWindow(false);
						GetDlgItem(IDC_SET_ALARM_ADOWN)->ShowWindow(false);
						GetDlgItem(IDC_SET_ALARM_BUP)->ShowWindow(false);
						GetDlgItem(IDC_SET_ALARM_BDOWN)->ShowWindow(false);

						GetDlgItem(IDC_SET_ME_AUP)->ShowWindow(false);
						GetDlgItem(IDC_SET_ME_ADOWN)->ShowWindow(false);
						GetDlgItem(IDC_SET_ME_BUP)->ShowWindow(false);
						GetDlgItem(IDC_SET_ME_BDOWN)->ShowWindow(false);
						


						GetDlgItem(IDC_STATIC1)->ShowWindow(true);
						GetDlgItem(IDC_STATIC2)->ShowWindow(true);
						GetDlgItem(IDC_STATIC3)->ShowWindow(true);
						GetDlgItem(IDC_STATIC4)->ShowWindow(true);
						GetDlgItem(IDC_STATIC5)->ShowWindow(true);
						GetDlgItem(IDC_STATIC6)->ShowWindow(true);
						GetDlgItem(IDC_STATIC7)->ShowWindow(true);
						GetDlgItem(IDC_STATIC8)->ShowWindow(true);
						GetDlgItem(IDC_STATIC9)->ShowWindow(true);
						GetDlgItem(IDC_STATIC10)->ShowWindow(true);

						//GetDlgItem(IDC_STATIC11)->ShowWindow(true);
					}
					break;
				case 3:
					{
						
						GetDlgItem(IDC_SET_ALARM_AUP)->ShowWindow(true);
						GetDlgItem(IDC_SET_ALARM_ADOWN)->ShowWindow(true);
						GetDlgItem(IDC_SET_ALARM_BUP)->ShowWindow(true);
						GetDlgItem(IDC_SET_ALARM_BDOWN)->ShowWindow(true);
				
						GetDlgItem(IDC_SET_ME_AUP)->ShowWindow(true);
						GetDlgItem(IDC_SET_ME_ADOWN)->ShowWindow(true);
						GetDlgItem(IDC_SET_ME_BUP)->ShowWindow(true);
						GetDlgItem(IDC_SET_ME_BDOWN)->ShowWindow(true);
						

						GetDlgItem(IDC_STATIC1)->ShowWindow(true);
						GetDlgItem(IDC_STATIC2)->ShowWindow(true);
						GetDlgItem(IDC_STATIC3)->ShowWindow(true);
						GetDlgItem(IDC_STATIC4)->ShowWindow(true);
						GetDlgItem(IDC_STATIC5)->ShowWindow(true);
						GetDlgItem(IDC_STATIC6)->ShowWindow(true);
						GetDlgItem(IDC_STATIC7)->ShowWindow(true);
						GetDlgItem(IDC_STATIC8)->ShowWindow(true);
						GetDlgItem(IDC_STATIC9)->ShowWindow(true);
						GetDlgItem(IDC_STATIC10)->ShowWindow(true);

						//GetDlgItem(IDC_STATIC11)->ShowWindow(false);
					
					}
					break;
				case 4:
					{
						
						GetDlgItem(IDC_SET_ALARM_AUP)->ShowWindow(true);
						GetDlgItem(IDC_SET_ALARM_ADOWN)->ShowWindow(true);
						GetDlgItem(IDC_SET_ALARM_BUP)->ShowWindow(true);
						GetDlgItem(IDC_SET_ALARM_BDOWN)->ShowWindow(true);
				
						GetDlgItem(IDC_SET_ME_AUP)->ShowWindow(true);
						GetDlgItem(IDC_SET_ME_ADOWN)->ShowWindow(true);
						GetDlgItem(IDC_SET_ME_BUP)->ShowWindow(true);
						GetDlgItem(IDC_SET_ME_BDOWN)->ShowWindow(true);
						

						GetDlgItem(IDC_STATIC1)->ShowWindow(true);
						GetDlgItem(IDC_STATIC2)->ShowWindow(true);
						GetDlgItem(IDC_STATIC3)->ShowWindow(true);
						GetDlgItem(IDC_STATIC4)->ShowWindow(true);
						GetDlgItem(IDC_STATIC5)->ShowWindow(true);
						GetDlgItem(IDC_STATIC6)->ShowWindow(true);
						GetDlgItem(IDC_STATIC7)->ShowWindow(true);
						GetDlgItem(IDC_STATIC8)->ShowWindow(true);
						GetDlgItem(IDC_STATIC9)->ShowWindow(true);
						GetDlgItem(IDC_STATIC10)->ShowWindow(true);

						//GetDlgItem(IDC_STATIC11)->ShowWindow(false);
					
					}
					break;
				}

}

void CCommWizardDlg::OnStartlookSig() 
{
	StartLook();	
}


HBRUSH CCommWizardDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	switch(nCtlColor)
	{
	case CTLCOLOR_EDIT:// IDC_EDIT_RECEIVE:
		{
			pDC->SetBkMode(TRANSPARENT);
			static  HBRUSH B = ::CreateSolidBrush(RGB(136,191,255));

			return (HBRUSH) B;
		}
		break;
	case CTLCOLOR_STATIC:// IDC_EDIT_RECEIVE:
		{
			pDC->SetBkMode(TRANSPARENT);
			HBRUSH B = CreateSolidBrush(RGB(210,213,132));

			return (HBRUSH) B;
		}
		break;
	default:

⌨️ 快捷键说明

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