基本信息
源码名称:c++ 串口助手源码下载(云台控制程序)
源码大小:1.54M
文件格式:.rar
开发语言:C/C++
更新时间:2016-06-21
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
// MoniControlDlg.cpp : implementation file // #include "stdafx.h" #include "MoniControl.h" #include "MoniControlDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMoniControlDlg dialog CMoniControlDlg::CMoniControlDlg(CWnd* pParent /*=NULL*/) : CDialog(CMoniControlDlg::IDD, pParent) { //{{AFX_DATA_INIT(CMoniControlDlg) m_Address = 0; m_BaudRate = 0; m_Com = 0; //}}AFX_DATA_INIT // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CMoniControlDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CMoniControlDlg) DDX_Control(pDX, IDC_UPMICRO, m_UpMicro); DDX_Control(pDX, IDC_UP, m_Up); DDX_Control(pDX, IDC_SMALLMICRO, m_SmallMicro); DDX_Control(pDX, IDC_SMALL, m_Small); DDX_Control(pDX, IDC_SHORTMICRO, m_ShortMicro); DDX_Control(pDX, IDC_SHORT, m_Short); DDX_Control(pDX, IDC_RIGHTUP, m_RightUp); DDX_Control(pDX, IDC_RIGHTMICRO, m_RightMicro); DDX_Control(pDX, IDC_RIGHTDOWN, m_RightDown); DDX_Control(pDX, IDC_RIGHT, m_Right); DDX_Control(pDX, IDC_OPENLIGHT, m_OpenLight); DDX_Control(pDX, IDC_OPENCOM, m_OpenCom); DDX_Control(pDX, IDC_OPENBRUSH, m_OpenBrush); DDX_Control(pDX, IDC_NEARMICRO, m_NearMicro); DDX_Control(pDX, IDC_NEAR, m_Near); DDX_Control(pDX, IDC_LONGMICRO, m_LongMicro); DDX_Control(pDX, IDC_LONG, m_Long); DDX_Control(pDX, IDC_LEFTUP, m_LeftUp); DDX_Control(pDX, IDC_LEFTMICRO, m_LeftMicro); DDX_Control(pDX, IDC_LEFTDOWN, m_LeftDown); DDX_Control(pDX, IDC_LEFT, m_Left); DDX_Control(pDX, IDC_FARMICRO, m_FarMicro); DDX_Control(pDX, IDC_FAR, m_Far); DDX_Control(pDX, IDC_DOWNMICRO, m_DownMicro); DDX_Control(pDX, IDC_DOWN, m_Down); DDX_Control(pDX, IDC_CLOSELIGHT, m_CloseLight); DDX_Control(pDX, IDC_CLOSECOM, m_CloseCom); DDX_Control(pDX, IDC_CLOSEBRUSH, m_CloseBrush); DDX_Control(pDX, IDC_BIGMICRO, m_BigMicro); DDX_Control(pDX, IDC_BIG, m_Big); DDX_Control(pDX, IDC_ACTSTATUS, m_ActStatus); DDX_CBIndex(pDX, IDC_COMBO_ADDRESS, m_Address); DDX_CBIndex(pDX, IDC_COMBO_BAUDRATE, m_BaudRate); DDX_CBIndex(pDX, IDC_COMBO_COM, m_Com); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CMoniControlDlg, CDialog) //{{AFX_MSG_MAP(CMoniControlDlg) ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_WM_LBUTTONDOWN() ON_BN_CLICKED(IDC_OPENCOM, OnOpencom) ON_BN_CLICKED(IDC_CLOSECOM, OnClosecom) ON_CBN_CLOSEUP(IDC_COMBO_ADDRESS, OnCloseupComboAddress) ON_WM_MOVE() ON_WM_MOUSEMOVE() ON_WM_CLOSE() ON_WM_CREATE() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMoniControlDlg message handlers BOOL CMoniControlDlg::OnInitDialog() { CDialog::OnInitDialog(); // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here int i=0; //加载各个按钮的图标 hIconU_N=AfxGetApp()->LoadIcon(IDI_ICON_UP_N); hIconU_O=AfxGetApp()->LoadIcon(IDI_ICON_UP_O); hIconU_P=AfxGetApp()->LoadIcon(IDI_ICON_UP_P); hIconD_N=AfxGetApp()->LoadIcon(IDI_ICON_DOWN_N); hIconD_O=AfxGetApp()->LoadIcon(IDI_ICON_DOWN_O); hIconD_P=AfxGetApp()->LoadIcon(IDI_ICON_DOWN_P); hIconL_N=AfxGetApp()->LoadIcon(IDI_ICON_LEFT_N); hIconL_O=AfxGetApp()->LoadIcon(IDI_ICON_LEFT_O); hIconL_P=AfxGetApp()->LoadIcon(IDI_ICON_LEFT_P); hIconR_N=AfxGetApp()->LoadIcon(IDI_ICON_RIGHT_N); hIconR_O=AfxGetApp()->LoadIcon(IDI_ICON_RIGHT_O); hIconR_P=AfxGetApp()->LoadIcon(IDI_ICON_RIGHT_P); hIconLU_N=AfxGetApp()->LoadIcon(IDI_ICON_LEFTUP_N); hIconLU_O=AfxGetApp()->LoadIcon(IDI_ICON_LEFTUP_O); hIconLU_P=AfxGetApp()->LoadIcon(IDI_ICON_LEFTUP_P); hIconLD_N=AfxGetApp()->LoadIcon(IDI_ICON_LEFTDOWN_N); hIconLD_O=AfxGetApp()->LoadIcon(IDI_ICON_LEFTDOWN_O); hIconLD_P=AfxGetApp()->LoadIcon(IDI_ICON_LEFTDOWN_P); hIconRU_N=AfxGetApp()->LoadIcon(IDI_ICON_RIGHTUP_N); hIconRU_O=AfxGetApp()->LoadIcon(IDI_ICON_RIGHTUP_O); hIconRU_P=AfxGetApp()->LoadIcon(IDI_ICON_RIGHTUP_P); hIconRD_N=AfxGetApp()->LoadIcon(IDI_ICON_RIGHTDOWN_N); hIconRD_O=AfxGetApp()->LoadIcon(IDI_ICON_RIGHTDOWN_O); hIconRD_P=AfxGetApp()->LoadIcon(IDI_ICON_RIGHTDOWN_P); hIconB_N=AfxGetApp()->LoadIcon(IDI_ICON_BIG_N); hIconB_O=AfxGetApp()->LoadIcon(IDI_ICON_BIG_O); hIconB_P=AfxGetApp()->LoadIcon(IDI_ICON_BIG_P); hIconS_N=AfxGetApp()->LoadIcon(IDI_ICON_SMALL_N); hIconS_O=AfxGetApp()->LoadIcon(IDI_ICON_SMALL_O); hIconS_P=AfxGetApp()->LoadIcon(IDI_ICON_SMALL_P); hIconF_N=AfxGetApp()->LoadIcon(IDI_ICON_FAR_N); hIconF_O=AfxGetApp()->LoadIcon(IDI_ICON_FAR_O); hIconF_P=AfxGetApp()->LoadIcon(IDI_ICON_FAR_P); hIconN_N=AfxGetApp()->LoadIcon(IDI_ICON_NEAR_N); hIconN_O=AfxGetApp()->LoadIcon(IDI_ICON_NEAR_O); hIconN_P=AfxGetApp()->LoadIcon(IDI_ICON_NEAR_P); hIconLG_N=AfxGetApp()->LoadIcon(IDI_ICON_LONG_N); hIconLG_O=AfxGetApp()->LoadIcon(IDI_ICON_LONG_O); hIconLG_P=AfxGetApp()->LoadIcon(IDI_ICON_LONG_P); hIconSH_N=AfxGetApp()->LoadIcon(IDI_ICON_SHORT_N); hIconSH_O=AfxGetApp()->LoadIcon(IDI_ICON_SHORT_O); hIconSH_P=AfxGetApp()->LoadIcon(IDI_ICON_SHORT_P); hIconO_N=AfxGetApp()->LoadIcon(IDI_ICON_OPEN_N); hIconO_O=AfxGetApp()->LoadIcon(IDI_ICON_OPEN_O); hIconO_P=AfxGetApp()->LoadIcon(IDI_ICON_OPEN_P); hIconC_N=AfxGetApp()->LoadIcon(IDI_ICON_CLOSE_N); hIconC_O=AfxGetApp()->LoadIcon(IDI_ICON_CLOSE_O); hIconC_P=AfxGetApp()->LoadIcon(IDI_ICON_CLOSE_P); //初始化发送命令数据sendArray sendArray.RemoveAll(); sendArray.SetSize(16); for(i=0;i<=3;i ) { sendArray.SetAt(i,0xFF); } for(i=4;i<=10;i ) { sendArray.SetAt(i,0); } sendArray.SetAt(13,0xFF); sendArray.SetAt(14,0xEE); sendArray.SetAt(15,0xEE); m_CloseCom.EnableWindow(false); //使关闭串口按钮无效 return TRUE; // return TRUE unless you set the focus to a control } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CMoniControlDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon 1) / 2; int y = (rect.Height() - cyIcon 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CMoniControlDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon; } void CMoniControlDlg::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default POINT myPoint; myPoint.x=point.x; myPoint.y=point.y; ClientToScreen(&myPoint); //按下【上】按钮 if(m_CRect_U.PtInRect(myPoint)) { m_Up.SetIcon(hIconU_P); //设置图标为按下时的式样 SendCommand(10100); //发送上操作命令 MSG myMsg; this->SetCapture(); //锁定鼠标消息接收窗口 while(1) { //监视是否有WM_LBUTTONUP消息 if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); //命令间的间隔时间 m_Up.SetIcon(hIconU_O);//设置图标为经过时的式样 SendCommand(10101); //发送停止上操作命令 Sleep(20); //命令间的间隔时间 ::ReleaseCapture(); //取消对鼠标消息的锁定 break; } } } //按下【下】按钮 if(m_CRect_D.PtInRect(myPoint)) { m_Down.SetIcon(hIconD_P); SendCommand(10200); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_Down.SetIcon(hIconD_O); SendCommand(10201); Sleep(20); ::ReleaseCapture(); break; } } } //按下【左】按钮 if(m_CRect_L.PtInRect(myPoint)) { m_Left.SetIcon(hIconL_P); SendCommand(10300); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_Left.SetIcon(hIconL_O); SendCommand(10301); Sleep(20); ::ReleaseCapture(); break; } } } //按下【右】按钮 if(m_CRect_R.PtInRect(myPoint)) { m_Right.SetIcon(hIconR_P); SendCommand(10400); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_Right.SetIcon(hIconR_O); SendCommand(10401); Sleep(20); ::ReleaseCapture(); break; } } } //按下【左上】按钮 if(m_CRect_LU.PtInRect(myPoint)) { m_LeftUp.SetIcon(hIconLU_P); SendCommand(13100); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_LeftUp.SetIcon(hIconLU_O); SendCommand(13101); Sleep(20); ::ReleaseCapture(); break; } } } //按下【左下】按钮 if(m_CRect_LD.PtInRect(myPoint)) { m_LeftDown.SetIcon(hIconLD_P); SendCommand(13200); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_LeftDown.SetIcon(hIconLD_O); SendCommand(13201); Sleep(20); ::ReleaseCapture(); break; } } } //按下【右上】按钮 if(m_CRect_RU.PtInRect(myPoint)) { m_RightUp.SetIcon(hIconRU_P); SendCommand(14100); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_RightUp.SetIcon(hIconRU_O); SendCommand(14101); Sleep(20); ::ReleaseCapture(); break; } } } //按下【右下】按钮 if(m_CRect_RD.PtInRect(myPoint)) { m_RightDown.SetIcon(hIconRD_P); SendCommand(14200); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_RightDown.SetIcon(hIconRD_O); SendCommand(14201); Sleep(20); ::ReleaseCapture(); break; } } } //按下【上】微调按钮 if(m_CRect_UM.PtInRect(myPoint)) { m_UpMicro.SetIcon(hIconU_P); SendCommand(10110); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_UpMicro.SetIcon(hIconU_O); m_ActStatus.SetWindowText("无操作!"); //SendCommand('U'); //Sleep(20); ::ReleaseCapture(); break; } } } //按下【下】微调按钮 if(m_CRect_DM.PtInRect(myPoint)) { m_DownMicro.SetIcon(hIconD_P); SendCommand(10210); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_DownMicro.SetIcon(hIconD_O); m_ActStatus.SetWindowText("无操作!"); //SendCommand('D'); //Sleep(20); ::ReleaseCapture(); break; } } } //按下【左】微调按钮 if(m_CRect_LM.PtInRect(myPoint)) { m_LeftMicro.SetIcon(hIconL_P); SendCommand(10310); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_LeftMicro.SetIcon(hIconL_O); m_ActStatus.SetWindowText("无操作!"); //SendCommand('L'); //Sleep(20); ::ReleaseCapture(); break; } } } //按下【右】微调按钮 if(m_CRect_RM.PtInRect(myPoint)) { m_RightMicro.SetIcon(hIconR_P); SendCommand(10410); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_RightMicro.SetIcon(hIconR_O); m_ActStatus.SetWindowText("无操作!"); //SendCommand('R'); //Sleep(20); ::ReleaseCapture(); break; } } } //按下【大】按钮 if(m_CRect_B.PtInRect(myPoint)) { m_Big.SetIcon(hIconB_P); SendCommand(20100); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_Big.SetIcon(hIconB_O); SendCommand(20101); Sleep(20); ::ReleaseCapture(); break; } } } //按下【小】按钮 if(m_CRect_S.PtInRect(myPoint)) { m_Small.SetIcon(hIconS_P); SendCommand(20200); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_Small.SetIcon(hIconS_O); SendCommand(20201); Sleep(20); ::ReleaseCapture(); break; } } } //按下【远】按钮 if(m_CRect_F.PtInRect(myPoint)) { m_Far.SetIcon(hIconF_P); SendCommand(20300); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_Far.SetIcon(hIconF_O); SendCommand(20301); Sleep(20); ::ReleaseCapture(); break; } } } //按下【近】按钮 if(m_CRect_N.PtInRect(myPoint)) { m_Near.SetIcon(hIconN_P); SendCommand(20400); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_Near.SetIcon(hIconN_O); SendCommand(20401); Sleep(20); ::ReleaseCapture(); break; } } } //按下【长】按钮 if(m_CRect_LG.PtInRect(myPoint)) { m_Long.SetIcon(hIconLG_P); SendCommand(20500); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_Long.SetIcon(hIconLG_O); SendCommand(20501); Sleep(20); ::ReleaseCapture(); break; } } } //按下【短】按钮 if(m_CRect_SH.PtInRect(myPoint)) { m_Short.SetIcon(hIconSH_P); SendCommand(20600); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_Short.SetIcon(hIconSH_O); SendCommand(20601); Sleep(20); ::ReleaseCapture(); break; } } } //按下【大】微调按钮 if(m_CRect_BM.PtInRect(myPoint)) { m_BigMicro.SetIcon(hIconB_P); SendCommand(20110); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_BigMicro.SetIcon(hIconB_O); m_ActStatus.SetWindowText("无操作!"); //SendCommand(20111); //Sleep(20); ::ReleaseCapture(); break; } } } //按下【小】微调按钮 if(m_CRect_SM.PtInRect(myPoint)) { m_SmallMicro.SetIcon(hIconS_P); SendCommand(20210); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_SmallMicro.SetIcon(hIconS_O); m_ActStatus.SetWindowText("无操作!"); //SendCommand(20211); //Sleep(20); ::ReleaseCapture(); break; } } } //按下【远】微调按钮 if(m_CRect_FM.PtInRect(myPoint)) { m_FarMicro.SetIcon(hIconF_P); SendCommand(20310); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_FarMicro.SetIcon(hIconF_O); m_ActStatus.SetWindowText("无操作!"); //SendCommand(20311); //Sleep(20); ::ReleaseCapture(); break; } } } //按下【近】微调按钮 if(m_CRect_NM.PtInRect(myPoint)) { m_NearMicro.SetIcon(hIconN_P); SendCommand(20410); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_NearMicro.SetIcon(hIconN_O); m_ActStatus.SetWindowText("无操作!"); //SendCommand(20411); //Sleep(20); ::ReleaseCapture(); break; } } } //按下【长】微调按钮 if(m_CRect_LGM.PtInRect(myPoint)) { m_LongMicro.SetIcon(hIconLG_P); SendCommand(20510); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_LongMicro.SetIcon(hIconLG_O); m_ActStatus.SetWindowText("无操作!"); //SendCommand(20511); //Sleep(20); ::ReleaseCapture(); break; } } } //按下【短】微调按钮 if(m_CRect_SHM.PtInRect(myPoint)) { m_ShortMicro.SetIcon(hIconSH_P); SendCommand(20610); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_ShortMicro.SetIcon(hIconSH_O); m_ActStatus.SetWindowText("无操作!"); //SendCommand(20611); //Sleep(20); ::ReleaseCapture(); break; } } } //按下【开】雨刷按钮 if(m_CRect_OB.PtInRect(myPoint)) { m_OpenBrush.SetIcon(hIconO_P); SendCommand(30100); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_OpenBrush.SetIcon(hIconO_O); m_ActStatus.SetWindowText("无操作!"); //SendCommand(30101); //Sleep(20); ::ReleaseCapture(); break; } } } //按下【关】雨刷按钮 if(m_CRect_CB.PtInRect(myPoint)) { m_CloseBrush.SetIcon(hIconC_P); SendCommand(30200); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_CloseBrush.SetIcon(hIconC_O); m_ActStatus.SetWindowText("无操作!"); //SendCommand(30201); //Sleep(20); ::ReleaseCapture(); break; } } } //按下【开】射灯按钮 if(m_CRect_OL.PtInRect(myPoint)) { m_OpenLight.SetIcon(hIconO_P); SendCommand(30300); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_OpenLight.SetIcon(hIconO_O); m_ActStatus.SetWindowText("无操作!"); //SendCommand(30301); //Sleep(20); ::ReleaseCapture(); break; } } } //按下【关】射灯按钮 if(m_CRect_CL.PtInRect(myPoint)) { m_CloseLight.SetIcon(hIconC_P); SendCommand(30400); MSG myMsg; this->SetCapture(); while(1) { if(GetMessage(&myMsg,NULL,WM_LBUTTONUP,WM_LBUTTONUP)) { Sleep(20); m_CloseLight.SetIcon(hIconC_O); m_ActStatus.SetWindowText("无操作!"); //SendCommand(30401); //Sleep(20); ::ReleaseCapture(); break; } } } CDialog::OnLButtonDown(nFlags, point); } void CMoniControlDlg::OnOpencom() { // TODO: Add your control notification handler code here CComboBox *m_ComboCom=NULL; CComboBox *m_ComboBaudRate=NULL; UpdateData(true); //更新控件的数据 //计算串口通信参数 CString strPara; //串口参数字符串 myComm.SetCommPort(m_Com 1); //指定串口号 switch(m_BaudRate) { case 0: { strPara="9600"; break; } case 1: { strPara="4800"; break; } case 2: { strPara="2400"; break; } case 3: { strPara="1200"; break; } } strPara =",N,8,1"; myComm.SetSettings(strPara); //通信参数设置 myComm.SetInBufferSize(1024); //指定接收缓冲区大小 myComm.SetInBufferCount(0); //清空接收缓冲区 myComm.SetInputMode(1); //设置数据获取方式 myComm.SetInputLen(0); //设置每次读取长度 myComm.SetRThreshold(1); //设置接收OnComm事件门限值 myComm.SetPortOpen(1); //打开串口 m_OpenCom.EnableWindow(false); //使打开串口按钮无效 m_CloseCom.EnableWindow(true); //使关闭串口按钮生效 AfxMessageBox("串口打开成功!"); m_ComboCom=(CComboBox*)GetDlgItem(IDC_COMBO_COM); m_ComboCom->EnableWindow(false); //使端口选择框无效 m_ComboBaudRate=(CComboBox*)GetDlgItem(IDC_COMBO_BAUDRATE); m_ComboBaudRate->EnableWindow(false); //使波特率选择框无效 } void CMoniControlDlg::OnClosecom() { // TODO: Add your control notification handler code here CComboBox *m_ComboCom=NULL; CComboBox *m_ComboBaudRate=NULL; m_OpenCom.EnableWindow(true); //使打开串口按钮生效 m_CloseCom.EnableWindow(false); //使关闭串口按钮无效 myComm.SetPortOpen(0); AfxMessageBox("串口关闭成功!"); m_ComboCom=(CComboBox*)GetDlgItem(IDC_COMBO_COM); m_ComboCom->EnableWindow(true); //使端口选择框生效 m_ComboBaudRate=(CComboBox*)GetDlgItem(IDC_COMBO_BAUDRATE); m_ComboBaudRate->EnableWindow(true); //使波特率选择框生效 } void CMoniControlDlg::OnCloseupComboAddress() { // TODO: Add your control notification handler code here UpdateData(true); SendCommand(40100); //发送切换设备地址命令 Sleep(20); } //************************************ //*******获取静态按钮的位置数据******* //************************************ CRect CMoniControlDlg::GetRect(CStatic *pStatic) { RECT myRect; CRect myCRect; pStatic->GetWindowRect(&myRect); myCRect.top=myRect.top; myCRect.left=myRect.left; myCRect.right=myRect.right; myCRect.bottom=myRect.bottom; return myCRect; } void CMoniControlDlg::OnMove(int x, int y) { CDialog::OnMove(x, y); // TODO: Add your message handler code here bMoved=true; //置位主窗口移动过标志 } void CMoniControlDlg::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default POINT myPoint; myPoint.x=point.x; myPoint.y=point.y; //转换客户区坐标值到屏幕区 ClientToScreen(&myPoint); //若主对话框移动过,重新计算各按钮的位置 if(bMoved) { bMoved=false; //复位移动标志 m_CRect_U=GetRect(&m_Up); //获取上按钮位置 m_CRect_D=GetRect(&m_Down); m_CRect_L=GetRect(&m_Left); m_CRect_R=GetRect(&m_Right); m_CRect_UM=GetRect(&m_UpMicro); m_CRect_DM=GetRect(&m_DownMicro); m_CRect_LM=GetRect(&m_LeftMicro); m_CRect_RM=GetRect(&m_RightMicro); m_CRect_LU=GetRect(&m_LeftUp); m_CRect_LD=GetRect(&m_LeftDown); m_CRect_RU=GetRect(&m_RightUp); m_CRect_RD=GetRect(&m_RightDown); m_CRect_B=GetRect(&m_Big); m_CRect_BM=GetRect(&m_BigMicro); m_CRect_S=GetRect(&m_Small); m_CRect_SM=GetRect(&m_SmallMicro); m_CRect_F=GetRect(&m_Far); m_CRect_FM=GetRect(&m_FarMicro); m_CRect_N=GetRect(&m_Near); m_CRect_NM=GetRect(&m_NearMicro); m_CRect_LG=GetRect(&m_Long); m_CRect_LGM=GetRect(&m_LongMicro); m_CRect_SH=GetRect(&m_Short); m_CRect_SHM=GetRect(&m_ShortMicro); m_CRect_OB=GetRect(&m_OpenBrush); m_CRect_CB=GetRect(&m_CloseBrush); m_CRect_OL=GetRect(&m_OpenLight); m_CRect_CL=GetRect(&m_CloseLight); } //鼠标进入【上】按钮或离开【上】按钮 if(m_CRect_U.PtInRect(myPoint)) { m_Up.SetIcon(hIconU_O); } else { m_Up.SetIcon(hIconU_N); } //【下】 if(m_CRect_D.PtInRect(myPoint)) { m_Down.SetIcon(hIconD_O); } else { m_Down.SetIcon(hIconD_N); } //【左】 if(m_CRect_L.PtInRect(myPoint)) { m_Left.SetIcon(hIconL_O); } else { m_Left.SetIcon(hIconL_N); } //【右】 if(m_CRect_R.PtInRect(myPoint)) { m_Right.SetIcon(hIconR_O); } else { m_Right.SetIcon(hIconR_N); } //【左上】 if(m_CRect_LU.PtInRect(myPoint)) { m_LeftUp.SetIcon(hIconLU_O); } else { m_LeftUp.SetIcon(hIconLU_N); } //【左下】 if(m_CRect_LD.PtInRect(myPoint)) { m_LeftDown.SetIcon(hIconLD_O); } else { m_LeftDown.SetIcon(hIconLD_N); } //【右上】 if(m_CRect_RU.PtInRect(myPoint)) { m_RightUp.SetIcon(hIconRU_O); } else { m_RightUp.SetIcon(hIconRU_N); } //【右下】 if(m_CRect_RD.PtInRect(myPoint)) { m_RightDown.SetIcon(hIconRD_O); } else { m_RightDown.SetIcon(hIconRD_N); } //【上】,微调 if(m_CRect_UM.PtInRect(myPoint)) { m_UpMicro.SetIcon(hIconU_O); } else { m_UpMicro.SetIcon(hIconU_N); } //【下】,微调 if(m_CRect_DM.PtInRect(myPoint)) { m_DownMicro.SetIcon(hIconD_O); } else { m_DownMicro.SetIcon(hIconD_N); } //【左】,微调 if(m_CRect_LM.PtInRect(myPoint)) { m_LeftMicro.SetIcon(hIconL_O); } else { m_LeftMicro.SetIcon(hIconL_N); } //【右】,微调 if(m_CRect_RM.PtInRect(myPoint)) { m_RightMicro.SetIcon(hIconR_O); } else { m_RightMicro.SetIcon(hIconR_N); } //【大】光圈 if(m_CRect_B.PtInRect(myPoint)) { m_Big.SetIcon(hIconB_O); } else { m_Big.SetIcon(hIconB_N); } //【小】光圈 if(m_CRect_S.PtInRect(myPoint)) { m_Small.SetIcon(hIconS_O); } 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; }