You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

159 lines
3.3 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// 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;
}
}
}