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

📄 monicontroldlg.cpp

📁 云台及镜头控制系统 云台及镜头控制系统
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	}
	else
	{
		m_Small.SetIcon(hIconS_N);
	}
	//【大】光圈,微调
	if(m_CRect_BM.PtInRect(myPoint))
	{
		m_BigMicro.SetIcon(hIconB_O);
	}
	else
	{
		m_BigMicro.SetIcon(hIconB_N);
	}
	//【小】光圈,微调
	if(m_CRect_SM.PtInRect(myPoint))
	{
		m_SmallMicro.SetIcon(hIconS_O);
	}
	else
	{
		m_SmallMicro.SetIcon(hIconS_N);
	}
	//【远】景深
	if(m_CRect_F.PtInRect(myPoint))
	{
		m_Far.SetIcon(hIconF_O);
	}
	else
	{
		m_Far.SetIcon(hIconF_N);
	}
	//【远】景深,微调
	if(m_CRect_FM.PtInRect(myPoint))
	{
		m_FarMicro.SetIcon(hIconF_O);
	}
	else
	{
		m_FarMicro.SetIcon(hIconF_N);
	}
	//【近】景深
	if(m_CRect_N.PtInRect(myPoint))
	{
		m_Near.SetIcon(hIconN_O);
	}
	else
	{
		m_Near.SetIcon(hIconN_N);
	}
	//【近】景深,微调
	if(m_CRect_NM.PtInRect(myPoint))
	{
		m_NearMicro.SetIcon(hIconN_O);
	}
	else
	{
		m_NearMicro.SetIcon(hIconN_N);
	}
	//【长】焦距
	if(m_CRect_LG.PtInRect(myPoint))
	{
		m_Long.SetIcon(hIconLG_O);
	}
	else
	{
		m_Long.SetIcon(hIconLG_N);
	}
	//【长】焦距,微调
	if(m_CRect_LGM.PtInRect(myPoint))
	{
		m_LongMicro.SetIcon(hIconLG_O);
	}
	else
	{
		m_LongMicro.SetIcon(hIconLG_N);
	}
	//【短】焦距
	if(m_CRect_SH.PtInRect(myPoint))
	{
		m_Short.SetIcon(hIconSH_O);
	}
	else
	{
		m_Short.SetIcon(hIconSH_N);
	}
	//【短】焦距,微调
	if(m_CRect_SHM.PtInRect(myPoint))
	{
		m_ShortMicro.SetIcon(hIconSH_O);
	}
	else
	{
		m_ShortMicro.SetIcon(hIconSH_N);
	}
	//【开】雨刷
	if(m_CRect_OB.PtInRect(myPoint))
	{
		m_OpenBrush.SetIcon(hIconO_O);
	}
	else
	{
		m_OpenBrush.SetIcon(hIconO_N);
	}
	//【关】雨刷
	if(m_CRect_CB.PtInRect(myPoint))
	{
		m_CloseBrush.SetIcon(hIconC_O);
	}
	else
	{
		m_CloseBrush.SetIcon(hIconC_N);
	}
	//【开】射灯
	if(m_CRect_OL.PtInRect(myPoint))
	{
		m_OpenLight.SetIcon(hIconO_O);
	}
	else
	{
		m_OpenLight.SetIcon(hIconO_N);
	}
	//【关】射灯
	if(m_CRect_CL.PtInRect(myPoint))
	{
		m_CloseLight.SetIcon(hIconC_O);
	}
	else
	{
		m_CloseLight.SetIcon(hIconC_N);
	}

	CDialog::OnMouseMove(nFlags, point);
}
void CMoniControlDlg::SendCommand(int iType)
{
	int		i=0;
	BYTE	bytXor=0;    //存放校验字节内容
	BYTE	bytCommand;  //存放命令字节内容

	//根据iType,设置命令值bytCommand
	switch(iType)
	{
	case 10100:
		{
			//更新操作显示信息文本
			m_ActStatus.SetWindowText("向上调节云台!");
			UpdateData(false);
			bytCommand=0x92;                     //设置命令字节内容
			break;
		}
	case 10101:
		{
			m_ActStatus.SetWindowText("无操作!");//停止向上调节云台!
			UpdateData(false);
			bytCommand=0x93;
			break;
		}
	case 10200:
		{
			m_ActStatus.SetWindowText("向下调节云台!");
			UpdateData(false);
			bytCommand=0x94;
			break;
		}
	case 10201:
		{
			m_ActStatus.SetWindowText("无操作!");//停止向下调节云台!
			UpdateData(false);
			bytCommand=0x93;
			break;
		}
	case 10300:
		{
			m_ActStatus.SetWindowText("向左调节云台!");
			UpdateData(false);
			bytCommand=0x96;
			break;
		}
	case 10301:
		{
			m_ActStatus.SetWindowText("无操作!");//停止向左调节云台!
			UpdateData(false);
			bytCommand=0x97;
			break;
		}
	case 10400:
		{
			m_ActStatus.SetWindowText("向右调节云台!");
			UpdateData(false);
			bytCommand=0x98;
			break;
		}
	case 10401:
		{
			m_ActStatus.SetWindowText("无操作!");//停止向右调节云台!
			UpdateData(false);
			bytCommand=0x97;
			break;
		}

	case 10110:
		{
			m_ActStatus.SetWindowText("向上调节云台,微调!");
			UpdateData(false);
			bytCommand=0xB8;
			break;
		}
	case 10210:
		{
			m_ActStatus.SetWindowText("向下调节云台,微调!");
			UpdateData(false);
			bytCommand=0xB9;
			break;
		}
	case 10310:
		{
			m_ActStatus.SetWindowText("向左调节云台,微调!");
			UpdateData(false);
			bytCommand=0xB6;
			break;
		}
	case 10410:
		{
			m_ActStatus.SetWindowText("向右调节云台,微调!");
			UpdateData(false);
			bytCommand=0xB7;
			break;
		}

	case 13100:
		{
			m_ActStatus.SetWindowText("向左上调节云台!");
			UpdateData(false);
			bytCommand=0xA4;
			break;
		}
	case 13101:
		{
			m_ActStatus.SetWindowText("无操作!");//停止向左上调节云台!
			UpdateData(false);
			bytCommand=0xA8;
			break;
		}
	case 13200:
		{
			m_ActStatus.SetWindowText("向左下调节云台!");
			UpdateData(false);
			bytCommand=0xA5;
			break;
		}
	case 13201:
		{
			m_ActStatus.SetWindowText("无操作!");//停止向左下调节云台!
			UpdateData(false);
			bytCommand=0xA8;
			break;
		}
	case 14100:
		{
			m_ActStatus.SetWindowText("向右上调节云台!");
			UpdateData(false);
			bytCommand=0xA6;
			break;
		}
	case 14101:
		{
			m_ActStatus.SetWindowText("无操作!");//停止向右上调节云台!
			UpdateData(false);
			bytCommand=0xA8;
			break;
		}
	case 14200:
		{
			m_ActStatus.SetWindowText("向右下调节云台!");
			UpdateData(false);
			bytCommand=0xA7;
			break;
		}
	case 14201:
		{
			m_ActStatus.SetWindowText("无操作!");//停止向右下调节云台!
			UpdateData(false);
			bytCommand=0xA8;
			break;
		}
	case 20100:
		{
			m_ActStatus.SetWindowText("增大光圈!");
			UpdateData(false);
			bytCommand=0x86;
			break;
		}
	case 20101:
		{
			m_ActStatus.SetWindowText("无操作!");//停止增大光圈!
			UpdateData(false);
			bytCommand=0x87;
			break;
		}
	case 20200:
		{
			m_ActStatus.SetWindowText("减小光圈!");
			UpdateData(false);
			bytCommand=0x88;
			break;
		}
	case 20201:
		{
			m_ActStatus.SetWindowText("无操作!");//停止减小光圈!
			UpdateData(false);
			bytCommand=0x87;
			break;
		}
	case 20300:
		{
			m_ActStatus.SetWindowText("增大景深!");
			UpdateData(false);
			bytCommand=0x8A;
			break;
		}
	case 20301:
		{
			m_ActStatus.SetWindowText("无操作!");//停止增大景深!
			UpdateData(false);
			bytCommand=0x8B;
			break;
		}
	case 20400:
		{
			m_ActStatus.SetWindowText("减小景深!");
			UpdateData(false);
			bytCommand=0x8C;
			break;
		}
	case 20401:
		{
			m_ActStatus.SetWindowText("无操作!");//停止减小景深!
			UpdateData(false);
			bytCommand=0x8B;
			break;
		}
	case 20500:
		{
			m_ActStatus.SetWindowText("焦距加长!");
			UpdateData(false);
			bytCommand=0x8E;
			break;
		}
	case 20501:
		{
			m_ActStatus.SetWindowText("无操作!");//停止焦距加长!
			UpdateData(false);
			bytCommand=0x8F;
			break;
		}
	case 20600:
		{
			m_ActStatus.SetWindowText("焦距缩短!");
			UpdateData(false);
			bytCommand=0x90;
			break;
		}
	case 20601:
		{
			m_ActStatus.SetWindowText("无操作!");//停止焦距缩短!
			UpdateData(false);
			bytCommand=0x8F;
			break;
		}
	case 20110:
		{
			m_ActStatus.SetWindowText("增大光圈,微调!");
			UpdateData(false);
			bytCommand=0xB0;
			break;
		}
	case 20210:
		{
			m_ActStatus.SetWindowText("减小光圈,微调!");
			UpdateData(false);
			bytCommand=0xB1;
			break;
		}
	case 20310:
		{
			m_ActStatus.SetWindowText("增大景深,微调!");
			UpdateData(false);
			bytCommand=0xB2;
			break;
		}
	case 20410:
		{
			m_ActStatus.SetWindowText("减小景深,微调!");
			UpdateData(false);
			bytCommand=0xB3;
			break;
		}
	case 20510:
		{
			m_ActStatus.SetWindowText("焦距加长,微调!");
			UpdateData(false);
			bytCommand=0xB4;
			break;
		}
	case 20610:
		{
			m_ActStatus.SetWindowText("焦距缩短,微调!");
			UpdateData(false);
			bytCommand=0xB5;
			break;
		}
	case 30100:
		{
			m_ActStatus.SetWindowText("打开雨刷!");
			UpdateData(false);
			bytCommand=0xA0;
			break;
		}
	case 30200:
		{
			m_ActStatus.SetWindowText("关闭雨刷!");
			UpdateData(false);
			bytCommand=0xA1;
			break;
		}
	case 30300:
		{
			m_ActStatus.SetWindowText("打开射灯!");
			UpdateData(false);
			bytCommand=0xA2;
			break;
		}
	case 30400:
		{
			m_ActStatus.SetWindowText("关闭射灯!");
			UpdateData(false);
			bytCommand=0xA3;
			break;
		}
	}

	//根据iType发送具体的命令
	if(iType==40100)
	{
		m_ActStatus.SetWindowText("选择设备地址!");
		UpdateData(false);
		if(m_Address!=0)
		{
			//发送切换设备地址的命令
			sendArray.SetAt(6,0);
			sendArray.SetAt(10,m_Address);
			sendArray.SetAt(11,0x80);
			bytXor=0;
			for(i=4;i<=11;i++)
			{
				bytXor^=sendArray.GetAt(i);
			}
			sendArray.SetAt(12,bytXor);
			if(myComm.GetPortOpen())
			{
				myComm.SetOutput(COleVariant(sendArray));
			}
			else
			{
				m_ActStatus.SetWindowText("请先打开串口!");
				UpdateData(false);
			}

		}
	}
	else
	{
		//发送设备操作命令
		if(m_Address==0 && iType<30000)
		{
			m_ActStatus.SetWindowText("云台、镜头不能广播操作!");
			UpdateData(false);
			return;
		}
		sendArray.SetAt(6,1);
		sendArray.SetAt(10,m_Address);
		sendArray.SetAt(11,bytCommand);
		bytXor=0;
		for(i=4;i<=11;i++)
		{
			bytXor^=sendArray.GetAt(i);
		}
		sendArray.SetAt(12,bytXor);
		if(myComm.GetPortOpen())
		{
			myComm.SetOutput(COleVariant(sendArray));
		}
		else
		{
			m_ActStatus.SetWindowText("请先打开串口!");
			UpdateData(false);
		}

	}

}


void CMoniControlDlg::OnClose() 
{
	// TODO: Add your message handler code here and/or call default
	//若串口是打开的,则关闭它。
	if(myComm.GetPortOpen())
	{
		myComm.SetPortOpen(0);
	}
	CDialog::OnClose();
}

int CMoniControlDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	// TODO: Add your specialized creation code here
	//创建控件的实例
	DWORD style=WS_VISIBLE|WS_CHILD;
	if (!myComm.Create(NULL,style,CRect(0,0,0,0),this,IDC_MSCOMM1))
	{
		AfxMessageBox("创建MSComm控件失败!");
		m_OpenCom.EnableWindow(false);        //使打开串口按钮无效
		m_CloseCom.EnableWindow(false);       //使关闭串口按钮无效
		return -1;
	}	
	return 0;
}

⌨️ 快捷键说明

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