// JoyStickControlDlg.cpp : 实现文件 // #include "stdafx.h" #include "CH91PayloadSoftware.h" #include "JoyStickControlDlg.h" #include "afxdialogex.h" #include "GlobalMember.h" #include "Global.h" #include "GlobalMessage.h" // CJoyStickControlDlg 对话框 IMPLEMENT_DYNAMIC(CJoyStickControlDlg, CDialogEx) CJoyStickControlDlg::CJoyStickControlDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CJoyStickControlDlg::IDD, pParent) { } CJoyStickControlDlg::~CJoyStickControlDlg() { } void CJoyStickControlDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CJoyStickControlDlg, CDialogEx) ON_WM_TIMER() END_MESSAGE_MAP() // CJoyStickControlDlg 消息处理程序 BOOL CJoyStickControlDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 获取窗口句柄 g_JoyStickControlDlgHwnd = GetSafeHwnd(); // 摇杆变量初始化 m_JoyStickListener = new JSParser::JoyStickListener(); m_JoyStickListener->init(g_JoyStickControlDlgHwnd); // 设定时间变量 SetTimer(1, 2000, nullptr); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void CJoyStickControlDlg::OnTimer(UINT_PTR nIDEvent) { //if (m_JoyStickListener->isInit()) //{ // // 更新摇杆主轴状态 // m_JoyStickListener->UpdateStick(stick_Height, stick_Width); // // 更新摇杆按键状态 // m_JoyStickListener->UpdateButtons(m_JoyStickButtons); // // 更新指令 // UpdateControl(); //} //else //{ // m_JoyStickListener->init(g_JoyStickControlDlgHwnd); //} CDialogEx::OnTimer(nIDEvent); } void CJoyStickControlDlg::UpdateControl() { if (g_bCtrlFromSoftware == FALSE) { // 手动跟踪,控制伺服 if (m_JoyStickButtons[0] == true) { g_payloadCtrlProtocol = 1002; g_ServoSpeedUpDown = (int)(0 - stick_Height * 512); g_ServoSpeedLeftRight = (int)(stick_Width * 512); //TRACE("X:%d Y:%d\n",g_ServoSpeedUpDown,g_ServoSpeedLeftRight); } // EO自动跟踪,控制波门 else if (m_JoyStickButtons[3] == true) { g_payloadCtrlProtocol = 16; g_TrackOffset.y = (int)(0 - stick_Height * 540); g_TrackOffset.x = (int)(stick_Width * 960); } // IR自动跟踪,控制波门 else if (m_JoyStickButtons[2] == true) { g_payloadCtrlProtocol = 17; g_TrackOffset.y = (int)(0 - stick_Height * 288); g_TrackOffset.x = (int)(stick_Width * 360); } // EO自动对焦 else if (m_JoyStickButtons[1] == true) { g_payloadCtrlProtocol = 69; } // IR自动对焦 else if (m_JoyStickButtons[4] == true) { g_payloadCtrlProtocol = 78; } // EO视场小 else if (m_JoyStickButtons[6] == true) { g_payloadCtrlProtocol = 60; } // EO视场大 else if (m_JoyStickButtons[8] == true) { g_payloadCtrlProtocol = 59; } // IR视场小 else if (m_JoyStickButtons[10] == true) { g_payloadCtrlProtocol = 81; } // IR视场大 else if (m_JoyStickButtons[12] == true) { g_payloadCtrlProtocol = 80; } // 波门上移 else if (m_JoyStickButtons[14] == true) { g_payloadCtrlProtocol = 34; } // 波门下移 else if (m_JoyStickButtons[16] == true) { g_payloadCtrlProtocol = 35; } // 波门右移 else if (m_JoyStickButtons[15] == true) { g_payloadCtrlProtocol = 32; } // 波门左移 else if (m_JoyStickButtons[17] == true) { g_payloadCtrlProtocol = 33; } // 其他操作,发送空指令 else { g_payloadCtrlProtocol = 0; } } }