|
|
|
|
// MulticastSocketReceiveDlg.cpp : ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
#include "CH91PayloadSoftware.h"
|
|
|
|
|
#include "CH91PayloadSoftwareDlg.h"
|
|
|
|
|
#include "afxdialogex.h"
|
|
|
|
|
#include "Global.h"
|
|
|
|
|
#include "GlobalMessage.h"
|
|
|
|
|
#include "GlobalMember.h"
|
|
|
|
|
#include "GetElevation.h"
|
|
|
|
|
#include "MulticastSocketReceiveDlg.h"
|
|
|
|
|
#include <opencv2\opencv.hpp>
|
|
|
|
|
#include <WinSock2.h>
|
|
|
|
|
|
|
|
|
|
// CMulticastSocketReceiveDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
|
|
|
|
|
|
|
|
|
|
//<2F><>ͨUDPͨ<50>Ŷ˿ڽ<CBBF><DABD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ݻص<DDBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void CALLBACK OnReadFromUDPSACKU( const void* rxdata, int lLen, LPVOID Param )
|
|
|
|
|
{
|
|
|
|
|
if ( lLen > 0)
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
SocketReceiveFH96Data(rxdata, lLen);
|
|
|
|
|
CTime t = GetCurrentTime();
|
|
|
|
|
TRACE(_T("%d,%d,%d\n"), lLen,t.GetMinute(), t.GetSecond());
|
|
|
|
|
//SocketReceiveH264VideoData(rxdata, lLen);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_DYNAMIC(CMulticastSocketReceiveDlg, CDialogEx)
|
|
|
|
|
|
|
|
|
|
CMulticastSocketReceiveDlg::CMulticastSocketReceiveDlg(CWnd* pParent /*=NULL*/)
|
|
|
|
|
: CDialogEx(CMulticastSocketReceiveDlg::IDD, pParent)
|
|
|
|
|
, m_iVideoSrc(0)
|
|
|
|
|
, mComPortIMP(_T(""))
|
|
|
|
|
, mComBaudIMP(_T(""))
|
|
|
|
|
{
|
|
|
|
|
//, mStrCDPayLoadIPAddr(_T("0.0.0.0"))
|
|
|
|
|
|
|
|
|
|
// WinSoc
|
|
|
|
|
m_hThread_GetFH96DataFromNet = NULL;
|
|
|
|
|
m_ThreadID_GetFH96DataFromNet = 0;
|
|
|
|
|
// <20>鲥IP
|
|
|
|
|
str_LocalIP_ReceiveMUDP = _T("");
|
|
|
|
|
str_MulticastSocketIP = "233.0.0.1";
|
|
|
|
|
m_MulticastSocketPortFH96Data = 8080;
|
|
|
|
|
str_MulticastSocketInfoReceive = "<EFBFBD>ȴ<EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD>\r\n";
|
|
|
|
|
//FJ<46><4A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʼ<EFBFBD><CABC>
|
|
|
|
|
m_bFJDataShow = FALSE;
|
|
|
|
|
//L<><4C><EFBFBD><EFBFBD>
|
|
|
|
|
m_strLLinkMultiCastIP = "";
|
|
|
|
|
m_nLLinkMulticastPort = 8000;
|
|
|
|
|
//<2F><>ͨ<EFBFBD>鲥
|
|
|
|
|
m_strSACMulticastIPAddr = "";
|
|
|
|
|
m_nSACMulticastRemotePort = 8001;
|
|
|
|
|
//<2F><>ͨUDP<44><50><EFBFBD><EFBFBD>
|
|
|
|
|
m_strSACUDPIPAddr = "";
|
|
|
|
|
m_nSACUDPRemotePort = 2203;
|
|
|
|
|
m_nSACUDPLocalPort = 8009;
|
|
|
|
|
|
|
|
|
|
m_sysSetComNumber = 0;//<2F>ܿ<EFBFBD><DCBF><EFBFBD>
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CMulticastSocketReceiveDlg::~CMulticastSocketReceiveDlg()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CMulticastSocketReceiveDlg::DoDataExchange(CDataExchange* pDX)
|
|
|
|
|
{
|
|
|
|
|
CDialogEx::DoDataExchange(pDX);
|
|
|
|
|
DDX_Control(pDX, IDC_IPADDRESS4,m_IPAddress_MultiCastIP);
|
|
|
|
|
|
|
|
|
|
DDX_Radio(pDX, IDC_RADIO_L, m_iVideoSrc);
|
|
|
|
|
|
|
|
|
|
DDX_CBString(pDX, IDC_COMBO_PORT_IMP, mComPortIMP);
|
|
|
|
|
DDX_CBString(pDX, IDC_COMBO_BAUD_IMP, mComBaudIMP);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CMulticastSocketReceiveDlg, CDialogEx)
|
|
|
|
|
ON_BN_CLICKED(IDC_BTN_MULTISOCKET_CONNECT, &CMulticastSocketReceiveDlg::OnBnClickedBtnMultisocketConnect)
|
|
|
|
|
ON_BN_CLICKED(IDC_BTN_MULTISOCKET_DISCONNECT, &CMulticastSocketReceiveDlg::OnBnClickedBtnMultisocketDisconnect)
|
|
|
|
|
ON_MESSAGE(WN_SHOW_CH96_FJDATA, &CMulticastSocketReceiveDlg::ShowCH96FJData)
|
|
|
|
|
ON_BN_CLICKED(IDC_CHECK1, &CMulticastSocketReceiveDlg::OnBnClickedCheck1)
|
|
|
|
|
|
|
|
|
|
ON_BN_CLICKED(IDC_RADIO_L, &CMulticastSocketReceiveDlg::OnRadioBtnVideoSrcClicked)
|
|
|
|
|
ON_BN_CLICKED(IDC_RADIO_SAC1, &CMulticastSocketReceiveDlg::OnRadioBtnVideoSrcClicked)
|
|
|
|
|
ON_BN_CLICKED(IDC_RADIO_SAC2, &CMulticastSocketReceiveDlg::OnRadioBtnVideoSrcClicked)
|
|
|
|
|
|
|
|
|
|
ON_CBN_SELCHANGE(IDC_COMBO_PORT_IMP, &CMulticastSocketReceiveDlg::OnCbnSelchangePortIMP)//<2F><><EFBFBD>ں<EFBFBD>
|
|
|
|
|
ON_CBN_SELCHANGE(IDC_COMBO_BAUD_IMP, &CMulticastSocketReceiveDlg::OnCbnSelchangePortIMP)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
ON_BN_CLICKED(IDC_BTN_IMP_SERIAL_CONNECT, &CMulticastSocketReceiveDlg::OnBnClickedBtnImpSerialConnect)
|
|
|
|
|
ON_BN_CLICKED(IDC_BTN_IMP_SERIAL_DISCONNECT, &CMulticastSocketReceiveDlg::OnBnClickedBtnImpSerialDisconnect)
|
|
|
|
|
|
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
BOOL CMulticastSocketReceiveDlg::OnInitDialog()
|
|
|
|
|
{
|
|
|
|
|
CDialogEx::OnInitDialog();
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>
|
|
|
|
|
g_MulticastSocketReceiveDlgHwnd = GetSafeHwnd();
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
//CString str_LocalIP_Receive;
|
|
|
|
|
GetHostAddress(str_LocalIP_ReceiveMUDP);
|
|
|
|
|
GetDlgItem(IDC_EDIT_LOCALIP_RECEIVE)->SetWindowText(str_LocalIP_ReceiveMUDP);
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
m_IPAddress_MultiCastIP.SetWindowText(str_MulticastSocketIP);
|
|
|
|
|
GetDlgItem(IDC_EDIT_MULTISOCKETPORT_RECEIVE)->SetWindowText("8080");
|
|
|
|
|
GetDlgItem(IDC_EDIT_LOCALPORT_RECEIVE)->SetWindowTextA("8082");
|
|
|
|
|
GetDlgItem(IDC_EDIT_MULTICASTSOCKETINFORECEIVE)->SetWindowText(str_MulticastSocketInfoReceive);
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ð<EFBFBD>ť״̬
|
|
|
|
|
GetDlgItem(IDC_BTN_MULTISOCKET_CONNECT)->EnableWindow(TRUE);
|
|
|
|
|
|
|
|
|
|
m_strServerPayLoadIPSend = _T("192.168.1.20"); // udp<64><70><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>IP
|
|
|
|
|
|
|
|
|
|
m_nServerSendLocalPort = 60302;
|
|
|
|
|
m_nServerSendObjectPort = 13001; // Զ<>˶˿<CBB6>
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>Ӵ<EFBFBD><D3B4>ںŵ<DABA><C5B5>б<EFBFBD><D0B1><EFBFBD>
|
|
|
|
|
AddPortNumberToComboBox();
|
|
|
|
|
//<2F><><EFBFBD>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>б<EFBFBD><D0B1><EFBFBD>
|
|
|
|
|
AddBaudNumberToComboBox();
|
|
|
|
|
|
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
|
|
|
// <20>쳣: OCX <20><><EFBFBD><EFBFBD>ҳӦ<D2B3><D3A6><EFBFBD><EFBFBD> FALSE
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>
|
|
|
|
|
void CMulticastSocketReceiveDlg::OnBnClickedBtnMultisocketConnect()
|
|
|
|
|
{
|
|
|
|
|
UpdateData(TRUE);
|
|
|
|
|
switch(m_iVideoSrc)
|
|
|
|
|
{
|
|
|
|
|
case 0: //L<><4C><EFBFBD><EFBFBD> <09>ι<EFBFBD><CEB9><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD>Ͷ˿ں<CBBF>
|
|
|
|
|
m_IPAddress_MultiCastIP.GetWindowText(m_strLLinkMultiCastIP); //L<><4C><EFBFBD><EFBFBD><EFBFBD>鲥IP
|
|
|
|
|
str_MulticastSocketIP = m_strLLinkMultiCastIP;
|
|
|
|
|
CString _str;
|
|
|
|
|
GetDlgItem(IDC_EDIT_MULTISOCKETPORT_RECEIVE)->GetWindowText(_str); //<2F><><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ж<EFBFBD>ȡԶ<C8A1>˶˿<CBB6>
|
|
|
|
|
m_nLLinkMulticastPort = _ttoi(_str);
|
|
|
|
|
m_MulticastSocketPortFH96Data = m_nLLinkMulticastPort;
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>鲥<EFBFBD><E9B2A5><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
CreateMulticastSocketFH96Data();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 1: //<2F><>ͨUDP<44><50><EFBFBD><EFBFBD> <20>ι<EFBFBD><CEB9><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD>Ͷ˿ں<CBBF>
|
|
|
|
|
m_IPAddress_MultiCastIP.GetWindowTextA(m_strSACUDPIPAddr); //<2F><>ͨUDP<44><50><EFBFBD><EFBFBD>Զ<EFBFBD>˵<EFBFBD>ַ
|
|
|
|
|
CString _str;
|
|
|
|
|
GetDlgItem(IDC_EDIT_MULTISOCKETPORT_RECEIVE)->GetWindowTextA(_str); //<2F><><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ж<EFBFBD>ȡԶ<C8A1>˶˿<CBB6>
|
|
|
|
|
m_nSACUDPRemotePort = _ttoi(_str);
|
|
|
|
|
GetDlgItem(IDC_EDIT_LOCALPORT_RECEIVE)->GetWindowTextA(_str); //<2F><><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ض˿<D8B6>
|
|
|
|
|
m_nSACUDPLocalPort = _ttoi(_str);
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>UDP<44><50><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
CreateUDPSocketReceiveData();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 2: //<2F><>ͨ<EFBFBD>鲥 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>IP<49><50>ַ<EFBFBD>Ͷ˿ں<CBBF>
|
|
|
|
|
m_IPAddress_MultiCastIP.GetWindowText(m_strSACMulticastIPAddr);
|
|
|
|
|
str_MulticastSocketIP = m_strSACMulticastIPAddr;
|
|
|
|
|
CString _str;
|
|
|
|
|
GetDlgItem(IDC_EDIT_MULTISOCKETPORT_RECEIVE)->GetWindowText(_str); //<2F><><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>ж<EFBFBD>ȡԶ<C8A1>˶˿<CBB6>
|
|
|
|
|
m_nSACMulticastRemotePort = _ttoi(_str);
|
|
|
|
|
m_MulticastSocketPortFH96Data = m_nSACMulticastRemotePort;
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>鲥<EFBFBD><E9B2A5><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>H264
|
|
|
|
|
CreateMulticastSocketFH96Data();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>İ<EFBFBD>ť״̬
|
|
|
|
|
GetDlgItem(IDC_BTN_MULTISOCKET_CONNECT)->EnableWindow(FALSE);
|
|
|
|
|
GetDlgItem(IDC_BTN_MULTISOCKET_DISCONNECT)->EnableWindow(TRUE);
|
|
|
|
|
GetDlgItem(IDC_RADIO_L)->EnableWindow(FALSE);
|
|
|
|
|
GetDlgItem(IDC_RADIO_SAC1)->EnableWindow(FALSE);
|
|
|
|
|
GetDlgItem(IDC_RADIO_SAC2)->EnableWindow(FALSE);
|
|
|
|
|
|
|
|
|
|
//UDP<44><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
g_UDPTrans2Server.SetCallBack(NULL, this);
|
|
|
|
|
CString strLocalIPAddr = _T("0.0.0.0");
|
|
|
|
|
g_UDPTrans2Server.SetParams(strLocalIPAddr, m_nServerSendLocalPort, m_strServerPayLoadIPSend, m_nServerSendObjectPort);
|
|
|
|
|
if (g_UDPTrans2Server.StartListening())
|
|
|
|
|
{
|
|
|
|
|
g_udpStarted = true;
|
|
|
|
|
CString strPassword = _T("FP-WRJ-98");
|
|
|
|
|
g_UDPTrans2Server.WriteBuffer((BYTE*)strPassword.GetBuffer(), strPassword.GetLength());
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
g_udpStarted = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><>ʾCH96FJ<46><4A><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
LRESULT CMulticastSocketReceiveDlg::ShowCH96FJData(WPARAM wParam, LPARAM lParam)
|
|
|
|
|
{
|
|
|
|
|
if (m_bFJDataShow == TRUE)
|
|
|
|
|
{
|
|
|
|
|
// <20><>ʾFJ<46><4A><EFBFBD><EFBFBD>150<35>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
BYTE _FJData[150];
|
|
|
|
|
WaitForSingleObject(g_hMutex_SaveFJData, INFINITE);
|
|
|
|
|
memcpy(_FJData, &g_CH96FJData, 150);
|
|
|
|
|
ReleaseMutex(g_hMutex_SaveFJData);
|
|
|
|
|
CString _strByte;
|
|
|
|
|
_strByte = "";
|
|
|
|
|
CString _strFJDataShow;
|
|
|
|
|
_strFJDataShow = "";
|
|
|
|
|
for (int i = 0; i < 150; i++)
|
|
|
|
|
{
|
|
|
|
|
_strByte.Format("%02X",_FJData[i]);
|
|
|
|
|
_strFJDataShow = _strFJDataShow + _strByte + "\t";
|
|
|
|
|
if ( 0 == (i+1)%8 )
|
|
|
|
|
{
|
|
|
|
|
_strFJDataShow += "\r\n";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
GetDlgItem(IDC_EDIT_FJDATASHOW)->SetWindowText(_strFJDataShow);
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>鲥<EFBFBD><E9B2A5><EFBFBD><EFBFBD>
|
|
|
|
|
void CMulticastSocketReceiveDlg::CreateMulticastSocketFH96Data()
|
|
|
|
|
{
|
|
|
|
|
if (g_socketFH96Data != INVALID_SOCKET)
|
|
|
|
|
{
|
|
|
|
|
// <20>ر<EFBFBD><D8B1><EFBFBD><D7BD><EFBFBD>
|
|
|
|
|
closesocket(g_socketFH96Data);
|
|
|
|
|
g_socketFH96Data = -1;
|
|
|
|
|
}
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BD><EFBFBD>
|
|
|
|
|
SetUpWinSocketFH96Data();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>WinSocket<65><EFBFBD><D7BD><EFBFBD>
|
|
|
|
|
void CMulticastSocketReceiveDlg::SetUpWinSocketFH96Data()
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BD>ֿ<EFBFBD>
|
|
|
|
|
WSADATA WSAData;
|
|
|
|
|
WSAStartup(WINSOCK_VERSION, &WSAData);
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BD><EFBFBD>
|
|
|
|
|
g_socketFH96Data = socket(AF_INET, // <20><>ַ<EFBFBD><D6B7>
|
|
|
|
|
SOCK_DGRAM, // socket <20><><EFBFBD><EFBFBD>
|
|
|
|
|
IPPROTO_UDP); // Э<><D0AD>
|
|
|
|
|
|
|
|
|
|
if (g_socketFH96Data == INVALID_SOCKET)
|
|
|
|
|
{
|
|
|
|
|
CString receiverData = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鲥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>!";
|
|
|
|
|
receiverData += "\r\n";
|
|
|
|
|
str_MulticastSocketInfoReceive += receiverData;
|
|
|
|
|
|
|
|
|
|
// <20><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
ShowMulticastSocketInfoReceive();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
int ret = 0;
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BD><EFBFBD>
|
|
|
|
|
sockaddr_in local;
|
|
|
|
|
local.sin_family = AF_INET;
|
|
|
|
|
local.sin_port = htons(m_MulticastSocketPortFH96Data);
|
|
|
|
|
local.sin_addr.s_addr = INADDR_ANY;
|
|
|
|
|
ret = ::bind(g_socketFH96Data, (struct sockaddr*)&local, sizeof(local));
|
|
|
|
|
if(ret == SOCKET_ERROR)
|
|
|
|
|
{
|
|
|
|
|
CString receiverData = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鲥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ְ<EFBFBD><EFBFBD><EFBFBD>portʧ<EFBFBD><EFBFBD>!";
|
|
|
|
|
receiverData += "\r\n";
|
|
|
|
|
str_MulticastSocketInfoReceive += receiverData;
|
|
|
|
|
// <20><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
ShowMulticastSocketInfoReceive();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ý<EFBFBD><C3BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|
|
|
|
int length = 512000 ;
|
|
|
|
|
ret = setsockopt(g_socketFH96Data,SOL_SOCKET,SO_RCVBUF,(const char*)&length, sizeof(int));
|
|
|
|
|
if (ret == SOCKET_ERROR)
|
|
|
|
|
{
|
|
|
|
|
CString receiverData = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鲥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>!";
|
|
|
|
|
receiverData += "\r\n";
|
|
|
|
|
str_MulticastSocketInfoReceive += receiverData;
|
|
|
|
|
// <20><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
ShowMulticastSocketInfoReceive();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int nNetTimeout = 1000; // 1S <20><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
ret = setsockopt(g_socketFH96Data,SOL_SOCKET,SO_RCVTIMEO,(const char*)&nNetTimeout, sizeof(int));
|
|
|
|
|
if (ret == SOCKET_ERROR)
|
|
|
|
|
{
|
|
|
|
|
CString receiverData = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鲥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>!";
|
|
|
|
|
receiverData += "\r\n";
|
|
|
|
|
str_MulticastSocketInfoReceive += receiverData;
|
|
|
|
|
|
|
|
|
|
// <20><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
ShowMulticastSocketInfoReceive();
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct ip_mreq mcast_addr;
|
|
|
|
|
mcast_addr.imr_multiaddr.s_addr = inet_addr(str_MulticastSocketIP);
|
|
|
|
|
mcast_addr.imr_interface.s_addr = INADDR_ANY;
|
|
|
|
|
ret = setsockopt(g_socketFH96Data, IPPROTO_IP,IP_ADD_MEMBERSHIP, (char*)&mcast_addr, sizeof(mcast_addr));
|
|
|
|
|
if (ret == SOCKET_ERROR)
|
|
|
|
|
{
|
|
|
|
|
CString receiverData = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鲥<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ְ<EFBFBD><EFBFBD><EFBFBD>IPʧ<EFBFBD><EFBFBD>!";
|
|
|
|
|
receiverData += "\r\n";
|
|
|
|
|
str_MulticastSocketInfoReceive += receiverData;
|
|
|
|
|
|
|
|
|
|
// <20><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
ShowMulticastSocketInfoReceive();
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
CString receiverData = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鲥<EFBFBD><EFBFBD><EFBFBD>մ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>!";
|
|
|
|
|
receiverData += "\r\n";
|
|
|
|
|
str_MulticastSocketInfoReceive += receiverData;
|
|
|
|
|
// <20><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
ShowMulticastSocketInfoReceive();
|
|
|
|
|
switch(m_iVideoSrc)
|
|
|
|
|
{
|
|
|
|
|
case 0: //L<><4C><EFBFBD><EFBFBD><EFBFBD>鲥
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>̲߳<DFB3><CCB2><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
|
|
|
|
|
m_hThread_GetFH96DataFromNet = CreateThread(NULL, 0,
|
|
|
|
|
(LPTHREAD_START_ROUTINE)GetFH96DataFromNet,
|
|
|
|
|
nullptr, // <20><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
|
|
|
|
|
0, // <20>̴߳<DFB3><CCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ<EFBFBD><E1B1BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>
|
|
|
|
|
&m_ThreadID_GetFH96DataFromNet);
|
|
|
|
|
break;
|
|
|
|
|
case 1: //<2F><>ͨUDP<44><50><EFBFBD><EFBFBD>
|
|
|
|
|
break;
|
|
|
|
|
case 2: //<2F><>ͨ<EFBFBD>鲥
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>̲߳<DFB3><CCB2><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
|
|
|
|
|
m_hThread_GetFH96DataFromNet = CreateThread(NULL, 0,
|
|
|
|
|
(LPTHREAD_START_ROUTINE)GetH264VideoDataFromNet,
|
|
|
|
|
nullptr, // <20><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>
|
|
|
|
|
0, // <20>̴߳<DFB3><CCB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ<EFBFBD><E1B1BB><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD>
|
|
|
|
|
&m_ThreadID_GetFH96DataFromNet);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CMulticastSocketReceiveDlg::ShowMulticastSocketInfoReceive()
|
|
|
|
|
{
|
|
|
|
|
GetDlgItem(IDC_EDIT_MULTICASTSOCKETINFORECEIVE)->SetWindowText(str_MulticastSocketInfoReceive);
|
|
|
|
|
GetDlgItem(IDC_EDIT_MULTICASTSOCKETINFORECEIVE)->SendMessage(WM_VSCROLL,SB_BOTTOM,0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>IP
|
|
|
|
|
void CMulticastSocketReceiveDlg::GetHostAddress(CString &strIP)
|
|
|
|
|
{
|
|
|
|
|
char HostName[100];
|
|
|
|
|
gethostname(HostName, sizeof(HostName)); // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
hostent* hn;
|
|
|
|
|
hn = gethostbyname(HostName); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶõ<C6B5><C3B5><EFBFBD><EFBFBD><EFBFBD>IP
|
|
|
|
|
strIP = inet_ntoa(*(struct in_addr *)hn->h_addr_list[0]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CMulticastSocketReceiveDlg::OnBnClickedBtnMultisocketDisconnect()
|
|
|
|
|
{
|
|
|
|
|
// <20>ر<EFBFBD><D8B1>鲥
|
|
|
|
|
// <20>ر<EFBFBD><D8B1><EFBFBD><D7BD><EFBFBD>
|
|
|
|
|
if (INVALID_SOCKET != g_socketFH96Data)
|
|
|
|
|
{
|
|
|
|
|
closesocket(g_socketFH96Data);
|
|
|
|
|
g_socketFH96Data = -1;
|
|
|
|
|
// ж<><D0B6>socket<65><74>
|
|
|
|
|
WSACleanup();
|
|
|
|
|
}
|
|
|
|
|
//<2F>ر<EFBFBD><D8B1><EFBFBD>ͨUDP<44><50><EFBFBD><EFBFBD>
|
|
|
|
|
m_nSACUDPSocket.SetCallBack(NULL, nullptr);
|
|
|
|
|
m_nSACUDPSocket.StopListening();
|
|
|
|
|
|
|
|
|
|
g_udpStarted = false;
|
|
|
|
|
g_UDPTrans2Server.SetCallBack(NULL, nullptr);
|
|
|
|
|
g_UDPTrans2Server.StopListening();
|
|
|
|
|
|
|
|
|
|
if (NULL != m_hThread_GetFH96DataFromNet)
|
|
|
|
|
{
|
|
|
|
|
TerminateThread(m_hThread_GetFH96DataFromNet, 0);
|
|
|
|
|
m_hThread_GetFH96DataFromNet = NULL;
|
|
|
|
|
m_ThreadID_GetFH96DataFromNet = 0;
|
|
|
|
|
}
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
str_MulticastSocketInfoReceive = str_MulticastSocketInfoReceive + "<EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѶϿ<EFBFBD><EFBFBD><EFBFBD>\r\n" + "<EFBFBD>ȴ<EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD>\r\n";
|
|
|
|
|
ShowMulticastSocketInfo();
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>İ<EFBFBD>ť״̬
|
|
|
|
|
// <20><><EFBFBD>ð<EFBFBD>ť״̬
|
|
|
|
|
GetDlgItem(IDC_BTN_MULTISOCKET_CONNECT)->EnableWindow(TRUE);
|
|
|
|
|
GetDlgItem(IDC_BTN_MULTISOCKET_DISCONNECT)->EnableWindow(FALSE);
|
|
|
|
|
GetDlgItem(IDC_RADIO_L)->EnableWindow(TRUE);
|
|
|
|
|
GetDlgItem(IDC_RADIO_SAC1)->EnableWindow(TRUE);
|
|
|
|
|
GetDlgItem(IDC_RADIO_SAC2)->EnableWindow(TRUE);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
void CMulticastSocketReceiveDlg::ShowMulticastSocketInfo()
|
|
|
|
|
{
|
|
|
|
|
GetDlgItem(IDC_EDIT_MULTICASTSOCKETINFORECEIVE)->SetWindowText(str_MulticastSocketInfoReceive);
|
|
|
|
|
GetDlgItem(IDC_EDIT_MULTICASTSOCKETINFORECEIVE)->SendMessage(WM_VSCROLL,SB_BOTTOM,0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CMulticastSocketReceiveDlg::OnBnClickedCheck1()
|
|
|
|
|
{
|
|
|
|
|
m_bFJDataShow = !m_bFJDataShow;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
|
|
|
|
|
BOOL CMulticastSocketReceiveDlg::PreTranslateMessage(MSG* pMsg)
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
if (pMsg->message == WM_KEYDOWN)
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ESC<53>ͻس<CDBB><D8B3><EFBFBD>
|
|
|
|
|
if (pMsg->wParam == VK_ESCAPE || pMsg->wParam == VK_RETURN)
|
|
|
|
|
{
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
|
// F3<46><33><EFBFBD><EFBFBD><EFBFBD>ơ<EFBFBD><C6A1>鲥<EFBFBD><E9B2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>ʵ/<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
if (pMsg->wParam == VK_F3)
|
|
|
|
|
{
|
|
|
|
|
// <20>رմ<D8B1><D5B4><EFBFBD>
|
|
|
|
|
OnOK();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return CDialogEx::PreTranslateMessage(pMsg);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CMulticastSocketReceiveDlg::OnRadioBtnVideoSrcClicked()
|
|
|
|
|
{
|
|
|
|
|
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
UpdateData(TRUE);
|
|
|
|
|
|
|
|
|
|
if (0 == m_iVideoSrc)//L<><4C>·SPI<50><49><EFBFBD><EFBFBD> UDP<44>鲥
|
|
|
|
|
{
|
|
|
|
|
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP
|
|
|
|
|
GetDlgItem(IDC_EDIT_LOCALIP_RECEIVE)->SetWindowText(str_LocalIP_ReceiveMUDP);
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
m_IPAddress_MultiCastIP.SetWindowText(str_MulticastSocketIP);
|
|
|
|
|
GetDlgItem(IDC_EDIT_MULTISOCKETPORT_RECEIVE)->SetWindowText("8080");
|
|
|
|
|
GetDlgItem(IDC_EDIT_LOCALPORT_RECEIVE)->SetWindowTextA("8082");
|
|
|
|
|
}else if (1 == m_iVideoSrc)//<2F><>ͨ<EFBFBD><CDA8>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> UDP<44><50><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50><EFBFBD><EFBFBD>ʾ
|
|
|
|
|
CString str_LocalIP_Receive;
|
|
|
|
|
str_LocalIP_Receive = _T("192.168.0.4"); // <20><><EFBFBD><EFBFBD>չʾ<D5B9><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨIP
|
|
|
|
|
GetDlgItem(IDC_EDIT_LOCALIP_RECEIVE)->SetWindowText(str_LocalIP_Receive);
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|
|
|
|
CString str_RemoteIP_Connect;
|
|
|
|
|
str_RemoteIP_Connect = _T("192.168.0.180"); // <20><><EFBFBD><EFBFBD>չʾIP
|
|
|
|
|
m_IPAddress_MultiCastIP.SetWindowText(str_RemoteIP_Connect);
|
|
|
|
|
GetDlgItem(IDC_EDIT_MULTISOCKETPORT_RECEIVE)->SetWindowText("8080");
|
|
|
|
|
GetDlgItem(IDC_EDIT_LOCALPORT_RECEIVE)->SetWindowTextA("8080");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CMulticastSocketReceiveDlg::CreateUDPSocketReceiveData()
|
|
|
|
|
{
|
|
|
|
|
//<2F><>ͨUDP<44><50><EFBFBD><EFBFBD>
|
|
|
|
|
m_nSACUDPSocket.SetCallBack(OnReadFromUDPSACKU, this);
|
|
|
|
|
CString strLocalIPAddr = _T("192.168.1.20"); // <20><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>IP
|
|
|
|
|
m_nSACUDPSocket.SetParams(strLocalIPAddr, m_nSACUDPLocalPort, m_strSACUDPIPAddr, m_nSACUDPRemotePort);
|
|
|
|
|
if (m_nSACUDPSocket.StartListening())
|
|
|
|
|
{
|
|
|
|
|
CString receiverData = "<EFBFBD>ι<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD>!";
|
|
|
|
|
receiverData += "\r\n";
|
|
|
|
|
str_MulticastSocketInfoReceive += receiverData;
|
|
|
|
|
// <20><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
ShowMulticastSocketInfoReceive();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
CString receiverData = "<EFBFBD>ι<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>!";
|
|
|
|
|
receiverData += "\r\n";
|
|
|
|
|
str_MulticastSocketInfoReceive += receiverData;
|
|
|
|
|
// <20><>ʾ<EFBFBD><CABE>Ϣ
|
|
|
|
|
ShowMulticastSocketInfoReceive();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
|
|
|
|
|
void CMulticastSocketReceiveDlg::AddPortNumberToComboBox()
|
|
|
|
|
{
|
|
|
|
|
int *comPortList = new int[MaxComPortNumber];
|
|
|
|
|
memset( comPortList, 0, MaxComPortNumber );
|
|
|
|
|
|
|
|
|
|
//ϵͳ<CFB5><CDB3><EFBFBD>õĴ<C3B5><C4B4><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
|
|
|
|
int sysSetComNumber = 0;
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>ǰ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>comPortList<73><74>
|
|
|
|
|
BOOL bScanPort = ScanPCCom( comPortList, sysSetComNumber );
|
|
|
|
|
m_sysSetComNumber = sysSetComNumber;
|
|
|
|
|
|
|
|
|
|
if ( !bScanPort ) //<2F><>ȡʧ<C8A1><CAA7>
|
|
|
|
|
{
|
|
|
|
|
if ( comPortList != NULL )
|
|
|
|
|
{
|
|
|
|
|
delete[]comPortList;
|
|
|
|
|
comPortList = NULL;
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
OrderComPortList( comPortList, sysSetComNumber );
|
|
|
|
|
|
|
|
|
|
//д<><D0B4><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD>CComboBox<6F><78>
|
|
|
|
|
CString str;
|
|
|
|
|
for ( int i = 0; i < sysSetComNumber; ++i )
|
|
|
|
|
{
|
|
|
|
|
str.Format( "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>%d", comPortList[i] );
|
|
|
|
|
|
|
|
|
|
( ( CComboBox * ) GetDlgItem( IDC_COMBO_PORT_IMP ) )->InsertString( i, str ); //IMP<4D><50><EFBFBD>ں<EFBFBD>
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int setComPos = 0;
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
SetComboBoxCurSel( IDC_COMBO_PORT_IMP, comPortList, sysSetComNumber, mComPortIMP );
|
|
|
|
|
|
|
|
|
|
if ( comPortList != NULL )
|
|
|
|
|
{
|
|
|
|
|
delete[]comPortList;
|
|
|
|
|
comPortList = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD>Ӵ<EFBFBD><D3B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
|
|
|
|
|
void CMulticastSocketReceiveDlg::AddBaudNumberToComboBox()
|
|
|
|
|
{
|
|
|
|
|
int iCount0=( ( CComboBox * ) GetDlgItem( IDC_COMBO_BAUD_IMP ) )->GetCount(); //IMP<4D><50><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if(iCount0 < 1)
|
|
|
|
|
{
|
|
|
|
|
for(int i = 0; i < BAUDITEMNUM; ++i ){
|
|
|
|
|
( ( CComboBox * ) GetDlgItem( IDC_COMBO_BAUD_IMP ) )->InsertString( i, gComBaudItems[i] );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>õ<EFBFBD>SD2<44><32><EFBFBD><EFBFBD>
|
|
|
|
|
SetComboBaudCurSel( IDC_COMBO_BAUD_IMP, gComBaudItems, BAUDITEMNUM, mComBaudIMP );
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ж<EFBFBD>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>
|
|
|
|
|
void CMulticastSocketReceiveDlg::SetComboBoxCurSel( int comboBoxID, const int *portArray, const int& arrLength,CString& strPortNumber )
|
|
|
|
|
{
|
|
|
|
|
if ( strPortNumber.GetLength() <= 4 )
|
|
|
|
|
{
|
|
|
|
|
strPortNumber = _T( "" );
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CString initializeComPort = strPortNumber;
|
|
|
|
|
initializeComPort.Delete( 0, 4 );
|
|
|
|
|
int filePortValue = atoi( initializeComPort );
|
|
|
|
|
|
|
|
|
|
int setComPos = 0;
|
|
|
|
|
if ( FindItemFromComList( setComPos, portArray, arrLength, filePortValue ) )
|
|
|
|
|
{
|
|
|
|
|
( ( CComboBox * ) GetDlgItem( comboBoxID ) )->SetCurSel( setComPos );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
strPortNumber = _T( "" );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void CMulticastSocketReceiveDlg::OrderComPortList( int *portArray, const int& arrLength )
|
|
|
|
|
{
|
|
|
|
|
int portValue = 0;
|
|
|
|
|
for ( int i = 0; i < arrLength - 1; ++i )
|
|
|
|
|
{
|
|
|
|
|
for ( int j = i + 1; j < arrLength; ++j )
|
|
|
|
|
{
|
|
|
|
|
if ( portArray[i] > portArray[j] )
|
|
|
|
|
{
|
|
|
|
|
portValue = portArray[i];
|
|
|
|
|
portArray[i] = portArray[j];
|
|
|
|
|
portArray[j] = portValue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F><>ָ<EFBFBD><D6B8><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF>趨ѡ<E8B6A8><D1A1>ֵ
|
|
|
|
|
void CMulticastSocketReceiveDlg::SetComboBaudCurSel( int comboBoxID, const CString *baudArray, const int& arrLength,CString& strBaudNumber )
|
|
|
|
|
{
|
|
|
|
|
if ( strBaudNumber.GetLength() <= 0 )
|
|
|
|
|
{
|
|
|
|
|
strBaudNumber = _T( "" );
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CString initializeComBaud = strBaudNumber;
|
|
|
|
|
initializeComBaud.Trim();
|
|
|
|
|
|
|
|
|
|
int fileBaudValue = atoi( initializeComBaud );
|
|
|
|
|
|
|
|
|
|
int setBaudPos = -1;
|
|
|
|
|
|
|
|
|
|
if ( FindItemFromBaudList( setBaudPos, baudArray, arrLength, fileBaudValue ) )
|
|
|
|
|
{
|
|
|
|
|
( ( CComboBox * ) GetDlgItem( comboBoxID ) )->SetCurSel( setBaudPos );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
strBaudNumber = _T( "" );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//<2F>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>в<EFBFBD><D0B2><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
bool CMulticastSocketReceiveDlg::FindItemFromBaudList( int& pos, const CString *baudArray, const int& arrLength, const int& itemValue )
|
|
|
|
|
{
|
|
|
|
|
for ( int i = 0; i < arrLength; ++i )
|
|
|
|
|
{
|
|
|
|
|
if ( itemValue == atoi((baudArray[i])) )
|
|
|
|
|
{
|
|
|
|
|
pos = i;
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//IMPͨ<50>Ŵ<EFBFBD><C5B4><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
|
|
|
|
|
void CMulticastSocketReceiveDlg::OnCbnSelchangePortIMP()
|
|
|
|
|
{
|
|
|
|
|
UpdateData( true );
|
|
|
|
|
//<2F>жϸô<CFB8><C3B4><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD>ռ<EFBFBD><D5BC>
|
|
|
|
|
if ( !CheckComPortCanWork( mComPortIMP ) )
|
|
|
|
|
{
|
|
|
|
|
( ( CComboBox * ) GetDlgItem( IDC_COMBO_PORT_IMP ) )->SetCurSel( -1 );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//IMPͨ<50>Ŵ<EFBFBD><C5B4>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>
|
|
|
|
|
void CMulticastSocketReceiveDlg::OnCbnSelchangeBaudIMP()
|
|
|
|
|
{
|
|
|
|
|
UpdateData( true );
|
|
|
|
|
//<2F>жϸô<CFB8><C3B4><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD>ռ<EFBFBD><D5BC>
|
|
|
|
|
if ( !CheckComPortCanWork( mComPortIMP ) )
|
|
|
|
|
{
|
|
|
|
|
( ( CComboBox * ) GetDlgItem( IDC_COMBO_BAUD_IMP ) )->SetCurSel( -1 );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void CMulticastSocketReceiveDlg::OnBnClickedBtnImpSerialConnect()
|
|
|
|
|
{
|
|
|
|
|
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
GetDlgItem(IDC_BTN_IMP_SERIAL_CONNECT)->EnableWindow(FALSE);
|
|
|
|
|
GetDlgItem(IDC_BTN_IMP_SERIAL_DISCONNECT)->EnableWindow(TRUE);
|
|
|
|
|
::SendMessageA(g_IMPDLGhwnd,WM_UPDATE_IMP_SERIAL_CONNECT,(WPARAM)mComPortIMP.AllocSysString(), (LPARAM)mComBaudIMP.AllocSysString());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CMulticastSocketReceiveDlg::OnBnClickedBtnImpSerialDisconnect()
|
|
|
|
|
{
|
|
|
|
|
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
GetDlgItem(IDC_BTN_IMP_SERIAL_CONNECT)->EnableWindow(TRUE);
|
|
|
|
|
GetDlgItem(IDC_BTN_IMP_SERIAL_DISCONNECT)->EnableWindow(FALSE);
|
|
|
|
|
::SendMessageA(g_IMPDLGhwnd,WM_UPDATE_IMP_SERIAL_CONNECT,(WPARAM)mComPortIMP.AllocSysString(), (LPARAM)mComBaudIMP.AllocSysString());
|
|
|
|
|
|
|
|
|
|
}
|