Compare commits

...

2 Commits
main ... 981CS

@ -93,7 +93,7 @@ BOOL DCOverrollDlg::OnInitDialog()
((CComboBox *)GetDlgItem(IDC_DC_CHOSET))->InsertString(0, "13所吊舱控制");
((CComboBox *)GetDlgItem(IDC_DC_CHOSET))->InsertString(1, "天进吊舱控制");
((CComboBox *)GetDlgItem(IDC_DC_CHOSET))->SetCurSel(0);
((CComboBox *)GetDlgItem(IDC_DC_CHOSET))->SetCurSel(1);
((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(true);
@ -120,22 +120,23 @@ BOOL DCOverrollDlg::CreateAllDlg()
ScreenToClient(&m_crect2);
//吊舱新的控制方式 默认显示
//吊舱新的控制方式 默认显示
if(!m_13InstituteDCNewDlg.GetSafeHwnd())
{
m_13InstituteDCNewDlg.Create(IDD_DIALOG_DC_13INSTITUTE_NEW,this);
}
m_13InstituteDCNewDlg.MoveWindow(m_crect2);//将IDD_DIALOG_DC_13INSTITUTE_NEW移到IDC_STATIC_DC_PUBLCI所在的位置
m_13InstituteDCNewDlg.ShowWindow(SW_SHOW);
m_13InstituteDCNewDlg.ShowWindow(SW_HIDE);
//默认显示
if(!m_WHTJDCNewDlg.GetSafeHwnd())
{
m_WHTJDCNewDlg.Create(IDD_DIALOG_DC_WuHanTJ_NEW,this);
}
m_WHTJDCNewDlg.MoveWindow(m_crect2);//将IDD_DIALOG_DC_13INSTITUTE_NEW移到IDC_STATIC_DC_PUBLCI所在的位置
m_WHTJDCNewDlg.ShowWindow(SW_HIDE);
m_WHTJDCNewDlg.ShowWindow(SW_SHOW);
CRect m_RectShow; //显示部分的面积区域
GetWindowRect(&m_RectLarge);

@ -48,6 +48,8 @@ DlgWHTJDCNew::DlgWHTJDCNew(CWnd* pParent /*=NULL*/)
, m_DirSCanSetRange(_T(""))
, m_PitchSCanSetCentre(_T(""))
, m_PitchSCanSetRange(_T(""))
, m_SCanModelRange(_T(""))
, m_SCanModelSpeed(_T(""))
{
CharacterSuperpositionSet = 0;
FogThroughMode = 0;
@ -108,6 +110,7 @@ void DlgWHTJDCNew::DoDataExchange(CDataExchange* pDX)
DDX_Control(pDX, IDC_BTN_WHTJDC_NEW43, DC13InsBtn[42]);
DDX_Control(pDX, IDC_BTN_WHTJDC_NEW44, DC13InsBtn[43]);
DDX_Control(pDX, IDC_BTN_WHTJDC_NEW45, DC13InsBtn[44]);
DDX_Control(pDX, IDC_BTN_WHTJDC_NEW46, DC13InsBtn[45]);
//DDX_Text(pDX, IDC_EDIT_Pitch_Param, Param1);
//DDX_Text(pDX, IDC_EDIT_Dir_Param, Param2);
@ -137,6 +140,8 @@ void DlgWHTJDCNew::DoDataExchange(CDataExchange* pDX)
DDX_Text(pDX, IDC_EDIT_WHTD_9, m_DirSCanSetRange);
DDX_Text(pDX, IDC_EDIT_WHTD_10, m_PitchSCanSetCentre);
DDX_Text(pDX, IDC_EDIT_WHTD_11, m_PitchSCanSetRange);
DDX_Text(pDX, IDC_EDIT_WHTD_12, m_SCanModelRange);
DDX_Text(pDX, IDC_EDIT_WHTD_13, m_SCanModelSpeed);
}
BOOL DlgWHTJDCNew::OnInitDialog()
@ -148,7 +153,7 @@ BOOL DlgWHTJDCNew::OnInitDialog()
CFont m_oFont;//字体
m_oFont.CreatePointFont(80, _T("Times New Roman"),NULL);
for(int i = 0;i<45;++i)
for(int i = 0;i<46;++i)
{
//DC13InsBtn[i].SetTextColor(RGB(255,255,255));
//DC13InsBtn[i].SetFont(&m_oFont);
@ -219,6 +224,15 @@ BOOL DlgWHTJDCNew::OnInitDialog()
pWnd12->SetFont(&m_font2);
GetDlgItem(IDC_EDIT_WHTD_11)->SetWindowText("50");
CWnd* pWnd13 = GetDlgItem(IDC_EDIT_WHTD_12);
pWnd13->SetFont(&m_font2);
GetDlgItem(IDC_EDIT_WHTD_12)->SetWindowText("100");
CWnd* pWnd14 = GetDlgItem(IDC_EDIT_WHTD_13);
pWnd14->SetFont(&m_font2);
GetDlgItem(IDC_EDIT_WHTD_13)->SetWindowText("5");
((CComboBox * )GetDlgItem(IDC_COMBO_TJDC_1))->InsertString(0,_TEXT("自定义大小"));
((CComboBox * )GetDlgItem(IDC_COMBO_TJDC_1))->InsertString(1,_TEXT("小模版(16*16)"));
((CComboBox * )GetDlgItem(IDC_COMBO_TJDC_1))->InsertString(2,_TEXT("中模版(32*32)"));
@ -397,6 +411,9 @@ afx_msg LRESULT DlgWHTJDCNew::OnUpdateWHTJDCFrame(WPARAM wParam, LPARAM lParam)
case 45:
UpdateFrame45((int&)lParam);
break;
case 46:
UpdataFrame46((int&)lParam);
break;
case 100:
UpdateFrame100((int&)lParam);
break;
@ -689,6 +706,12 @@ void DlgWHTJDCNew::UpdateWHTJDCCmdBuffer(HWND hwnd)
hCheckThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadWHTJDCNew, NULL, 0, &ThreadCheckIDRegion);//开启线程
CloseHandle(hCheckThread);
}
if(hwnd ==GetDlgItem(IDC_BTN_WHTJDC_NEW46)->m_hWnd)
{
g_WHTJDCCmdNum = 46;
hCheckThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadWHTJDCNew, NULL, 0, &ThreadCheckIDRegion);//开启线程
CloseHandle(hCheckThread);
}
}
void DlgWHTJDCNew::UpdateDataZ70_TJDC()
{
@ -714,6 +737,50 @@ void DlgWHTJDCNew::UpdateDataZ70_TJDC()
g_MUDPCamera.SendToY(DCFrameCkCmdWHTJ.Addr(), 20);
}
/******************模拟发送天进吊舱控制指令************************/
BYTE DCBufferCmd[44];
DCBufferCmd[0] = 0xFB;//帧头
DCBufferCmd[1] = 0x2C;//帧头
DCBufferCmd[2] = TJDCCmdBuffer[1];
DCBufferCmd[3] = TJDCCmdBuffer[2];
DCBufferCmd[4] = TJDCCmdBuffer[3];
DCBufferCmd[5] = TJDCCmdBuffer[4];
DCBufferCmd[6] = TJDCCmdBuffer[5];
for(int i=7;i<13;++i)
{
DCBufferCmd[i] = 0x00;
}
/*精确到毫秒级*/
SYSTEMTIME st;
GetLocalTime(&st);
DCBufferCmd[13] = st.wYear - 2000;
DCBufferCmd[14] = st.wMonth;
DCBufferCmd[15] = st.wDay;
DCBufferCmd[16] = st.wHour;
DCBufferCmd[17] = st.wMinute;
DCBufferCmd[18] = st.wSecond;
DCBufferCmd[19] = st.wMilliseconds;
for(int i=20;i<37;++i)
{
DCBufferCmd[i] = 0x00;
}
DCBufferCmd[37] = TJDCCmdBuffer[6];
DCBufferCmd[38] = TJDCCmdBuffer[7];
DCBufferCmd[39] = TJDCCmdBuffer[8];
DCBufferCmd[40] = TJDCCmdBuffer[9];
DCBufferCmd[41] = TJDCCmdBuffer[10];
BYTE S2 = DCBufferCmd[2];
BYTE S3 = DCBufferCmd[3];
for(int i = 4;i<41;++i)
{
S3 = S3^S2;
S2 = DCBufferCmd[i];
}
DCBufferCmd[42] = S3;
DCBufferCmd[43]=0xF0;
WHTJCmdGCSUDPSocket.WriteBuffer(DCBufferCmd,44);
//TJDCCmdBuffer清空
memset(TJDCCmdBuffer,0,sizeof(TJDCCmdBuffer));
@ -1607,6 +1674,50 @@ void DlgWHTJDCNew::UpdateFrame45(int &sendEnd)
}
}
//扫描设置 130吊舱
void DlgWHTJDCNew::UpdataFrame46(int &sendEnd)
{
if(sendEnd==0)
{
if(!UpdateData(TRUE))//更新对话框对应的变量内容
{
MessageBox(_T("请输入正确数据!!!"));
return;
}
if(!IsPositiveInteger(m_SCanModelRange)||!IsPositiveInteger(m_SCanModelSpeed))
{
MessageBox(_T("请输入正整数!"));
return;
}
UINT16 SCanModelRange,SCanModelSpeed;
SCanModelRange = _ttoi(m_SCanModelRange);
SCanModelSpeed = _ttoi(m_SCanModelSpeed);
if(SCanModelRange<0||SCanModelRange>360)
{
MessageBox(_T("扫描角度设置范围[0,360]"));
return;
}
if(SCanModelSpeed<0||SCanModelSpeed>100)
{
MessageBox(_T("扫描速度设置范围[0,100]"));
return;
}
TJDCCmdBuffer[0]=0x02;
TJDCCmdBuffer[1]=0x79;
TJDCCmdBuffer[2]=SCanModelRange;
TJDCCmdBuffer[3]=SCanModelRange>>8;
TJDCCmdBuffer[4]=SCanModelSpeed;
TJDCCmdBuffer[5]=SCanModelSpeed>>8;
UpdateDataZ70_TJDC();
g_bBindData = true;
}
else
{
g_bBindData = false;
}
}
void DlgWHTJDCNew::UpdateFrame100(int &sendEnd)
{
UpdateFrame28(sendEnd);//垂直下视

@ -28,7 +28,7 @@ protected:
public:
CCMDBtn m_DCFlyCmd[12];
CMFCButton DC13InsBtn[45];
CMFCButton DC13InsBtn[46];
BYTE TJDCCmdBuffer[15];
public:
UINT8 SwitchCmd; //开关指令
@ -54,6 +54,10 @@ public:
CString m_PitchSCanSetCentre;//俯仰扫描设置 中心
CString m_PitchSCanSetRange;//俯仰扫描设置 范围
int FocalDistanceSIZE;//调焦/变倍等级1-7
CString m_SCanModelRange;//ɨÃ跶ΧÉèÖÃ130µõ²Õ
CString m_SCanModelSpeed;//ɨÃèËÙ¶ÈÉèÖÃ130µõ²Õ
public:
void UpdateWHTJDCCmdBuffer(HWND);//更新控制指令到吊舱协议
void DlgWHTJDCNew::UpdateDataZ70_TJDC();//更新数据注入指令Z70
@ -104,6 +108,9 @@ public:
void UpdateFrame44(int&); //俯仰扫描设置
void UpdateFrame45(int&); //自动调焦
void UpdataFrame46(int&); //µõ²ÕɨÃèÉèÖÃ130µõ²Õ
void UpdateFrame100(int&); //吊舱行为1
void UpdateFrame101(int&); //吊舱行为2
void UpdateTJDCAction(int); //吊舱行为控制
@ -121,7 +128,6 @@ public:
CDCFrameCkCmdFrame DCFrameCkCmdWHTJ;//数据注入指令从控发送数据帧---武汉天进吊舱
afx_msg void OnCbnSelchangeComboTjdc2();//伺服控制步长选择
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
};

@ -500,3 +500,9 @@ bool SelectPointTrack;//ѡ
HWND DlgDCOverroll_Hwnd; //DCOverrollDlg句柄
float m_wndShowEO_Position_Max_x; //图像显示区域的坐标最大值x
float m_wndShowEO_Position_Max_y; //图像显示区域的坐标最大值y
CString strSysIniName; //配置文件名
CString strCurDir; //工作目录名
CString g_strSoftwareWorkFolder; //软件工作目录
CUDPSocket WHTJCmdGCSUDPSocket; //天进吊舱控制-地面站UDP通信

@ -516,3 +516,9 @@ extern HWND DlgDCOverroll_Hwnd; //DCOverrollDlg
extern float m_wndShowEO_Position_Max_x; //图像显示区域的坐标最大值x
extern float m_wndShowEO_Position_Max_y; //图像显示区域的坐标最大值y
extern CString strSysIniName; // 配置文件名
extern CString strCurDir; // 工作目录名
extern CString g_strSoftwareWorkFolder; //软件工作目录
extern CUDPSocket WHTJCmdGCSUDPSocket; //天进吊舱控制-地面站UDP通信

@ -58,8 +58,11 @@ CMulticastSocketReceiveDlg::CMulticastSocketReceiveDlg(CWnd* pParent /*=NULL*/)
m_strSACUDPIPAddr = "";
m_nSACUDPRemotePort = 2203;
m_nSACUDPLocalPort = 8009;
m_sysSetComNumber = 0;//窜口数
//天进吊舱控制指令至地面站通信接口
m_WHTJCmdUDPRemotePort = 9000;
m_WHTJCmdUDPRemoteIPStr = "";
m_WHTJCmdUDPLocalPort = 9001;
}
CMulticastSocketReceiveDlg::~CMulticastSocketReceiveDlg()
@ -76,6 +79,11 @@ void CMulticastSocketReceiveDlg::DoDataExchange(CDataExchange* pDX)
DDX_CBString(pDX, IDC_COMBO_PORT_IMP, mComPortIMP);
DDX_CBString(pDX, IDC_COMBO_BAUD_IMP, mComBaudIMP);
//天进吊舱控制指令至地面站通信接口
DDX_Control(pDX, IDC_TJCmd_RemoteIP, m_WHTJCmdUDPRemoteIP);
DDX_Text(pDX, IDC_EDIT_TJCmd_RemotePort, m_WHTJCmdUDPRemotePort);
DDX_Text(pDX, IDC_EDIT_TJCmd_LocalPort, m_WHTJCmdUDPLocalPort);
}
@ -97,6 +105,7 @@ BEGIN_MESSAGE_MAP(CMulticastSocketReceiveDlg, CDialogEx)
ON_BN_CLICKED(IDC_RADIO_DC_13Ins, &CMulticastSocketReceiveDlg::OnBnClickedRadioDc13ins)
ON_BN_CLICKED(IDC_RADIO_DC_WHTJ, &CMulticastSocketReceiveDlg::OnBnClickedRadioDcWhtj)
ON_BN_CLICKED(IDC_RADIO_H264Data, &CMulticastSocketReceiveDlg::OnBnClickedRadioH264data)
ON_BN_CLICKED(IDC_BTN_TJCmd_Connect, &CMulticastSocketReceiveDlg::OnBnClickedBtnTjcmdConnect)
END_MESSAGE_MAP()
BOOL CMulticastSocketReceiveDlg::OnInitDialog()
@ -133,6 +142,28 @@ BOOL CMulticastSocketReceiveDlg::OnInitDialog()
((CButton *)GetDlgItem(IDC_RADIO_DC_WHTJ))->SetCheck(false);
((CButton *)GetDlgItem(IDC_RADIO_H264Data))->SetCheck(false);
char inBuf[100];
g_strSoftwareWorkFolder = GetSoftwareCurrentDirectory(); //当前工作目录
strSysIniName = g_strSoftwareWorkFolder + _T( "\\SysCfg.ini" );
GetPrivateProfileString( "天进吊舱控制-地面站UDP通信设置", "远端IP地址", "0.0.0.0", inBuf, 20, strSysIniName );
m_WHTJCmdUDPRemoteIPStr.Format( "%s", inBuf );
m_WHTJCmdUDPRemoteIP.SetWindowText(m_WHTJCmdUDPRemoteIPStr);
GetPrivateProfileString( "天进吊舱控制-地面站UDP通信设置", "远端端口号", "", inBuf, 20, strSysIniName );
m_WHTJCmdUDPRemotePort = atoi( inBuf );
GetPrivateProfileString( "天进吊舱控制-地面站UDP通信设置", "本地端口号", "", inBuf, 20, strSysIniName );
m_WHTJCmdUDPLocalPort = atoi( inBuf );
UpdateData(false);
CRect m_RectShow,m_RectShow2; //显示部分的面积区域
GetWindowRect(&m_RectShow);
GetDlgItem(IDC_STATIC_PART_AER)->GetWindowRect(&m_RectShow2);
m_RectShow.bottom = m_RectShow2.top;
SetWindowPos(NULL, 0, 0, m_RectShow.Width(), m_RectShow.Height(),SWP_NOMOVE|SWP_NOZORDER);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
@ -749,3 +780,43 @@ void CMulticastSocketReceiveDlg::OnBnClickedRadioH264data()
((CButton *)GetDlgItem(IDC_RADIO_DC_WHTJ))->SetCheck(false);
((CButton *)GetDlgItem(IDC_RADIO_H264Data))->SetCheck(true);
}
//天进吊舱控制-发送至地面站控制指令
void CMulticastSocketReceiveDlg::OnBnClickedBtnTjcmdConnect()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(true);
TCHAR inBuf[30];
m_WHTJCmdUDPRemoteIP.GetWindowText(m_WHTJCmdUDPRemoteIPStr);
WritePrivateProfileString( "天进吊舱控制-地面站UDP通信设置", "远端IP地址", m_WHTJCmdUDPRemoteIPStr, strSysIniName );
WritePrivateProfileString( "天进吊舱控制-地面站UDP通信设置", "本地IP地址", "0.0.0.0",strSysIniName );
itoa(m_WHTJCmdUDPRemotePort,inBuf,10);
WritePrivateProfileString( "天进吊舱控制-地面站UDP通信设置", "远端端口号", inBuf, strSysIniName );
itoa(m_WHTJCmdUDPLocalPort,inBuf,10);
WritePrivateProfileString( "天进吊舱控制-地面站UDP通信设置", "本地端口号", inBuf, strSysIniName );
CString str;
GetDlgItemText(IDC_BTN_TJCmd_Connect, str);
if(str == _T("断开"))
{
if(WHTJCmdGCSUDPSocket.StartListening())
{
WHTJCmdGCSUDPSocket.StopListening();
}
GetDlgItem(IDC_BTN_TJCmd_Connect)->SetWindowTextA("连接");
}
else if(str == _T("连接")){
WHTJCmdGCSUDPSocket.SetCallBack(NULL,nullptr);
WHTJCmdGCSUDPSocket.SetParams(_T("0.0.0.0"),m_WHTJCmdUDPLocalPort,m_WHTJCmdUDPRemoteIPStr,m_WHTJCmdUDPRemotePort);
if(!WHTJCmdGCSUDPSocket.StartListening())
{
MessageBox("吊舱UDP通信端口打开失败");
}
GetDlgItem(IDC_BTN_TJCmd_Connect)->SetWindowTextA("断开");
}
}

@ -91,6 +91,12 @@ public:
//const int MaxComPortNumber = 1024;
//const unsigned BAUDITEMNUM = 10; //波特率数目
//const unsigned NCOUNTER = 500; //失败尝试次数
//天进吊舱控制指令至地面站通信接口
CString m_WHTJCmdUDPRemoteIPStr; //远端IP 字符串
CIPAddressCtrl m_WHTJCmdUDPRemoteIP; //远端IP
int m_WHTJCmdUDPRemotePort; //远端端口号
int m_WHTJCmdUDPLocalPort; //本地端口号
private:
//添加系统串口到组合选择框
void AddPortNumberToComboBox();
@ -112,4 +118,5 @@ public:
afx_msg void OnBnClickedRadioDcWhtj();//吊舱类型选择-武汉天进吊舱
afx_msg void OnBnClickedRadioH264data();//吊舱类型选择-h264数据
int m_DCvideoTypeSelct;
afx_msg void OnBnClickedBtnTjcmdConnect();
};

@ -13,3 +13,6 @@
增加视频管理计算机指令(开关指令)发送
增加13所吊舱协议、天进吊舱协议、H264裸流视频协议解析选择
增加天进吊舱点击“单点跟踪”按钮后,双击图像区域发送吊舱跟踪坐标点
20240702
981cs需求适配
Loading…
Cancel
Save