#pragma once

#include "MulticastSocket.h"
#include "ExportSimpleImgShow.h"
#include "CUDPSocket.h"
#include "BtnST.h"
#include "EditInput.h"
#include "Serial.h"
#include "afxwin.h"
#include "afxcmn.h"
#include "opencv2/core/core.hpp"
#include "ComControlFunction.h"

// CMulticastSocketReceiveDlg 对话框

class CMulticastSocketReceiveDlg : public CDialogEx
{
	DECLARE_DYNAMIC(CMulticastSocketReceiveDlg)

public:
	CMulticastSocketReceiveDlg(CWnd* pParent = NULL);   // 标准构造函数
	virtual ~CMulticastSocketReceiveDlg();

// 对话框数据
	enum { IDD = IDD_DLG_MULTICASTSOCKETRECEIVE };
public:
	// 显示组播接收信息
	CString str_MulticastSocketInfoReceive;
	// 设置IR组播端口
	UINT m_MulticastSocketPortFH96Data;
	// 设置组播IP
	CString str_MulticastSocketIP;

	CString str_LocalIP_ReceiveMUDP;

	CIPAddressCtrl m_IPAddress_MultiCastIP;   //组播 //网络IP

	// WinSoc
	HANDLE m_hThread_GetFH96DataFromNet;
	DWORD m_ThreadID_GetFH96DataFromNet;
	// 设置位置组播接收
	CMulticastSocket m_MulticastSocketLocation;	// 组播接收——位置信息
	//FJ数据开关
	BOOL m_bFJDataShow;

	CString		   m_strServerPayLoadIPSend;	//服务器发数IP地址

	int            m_nServerSendLocalPort;		//服务器发数本地端口
	int            m_nServerSendObjectPort;		//服务器发数远端端口

	//L测控
	CString		   m_strLLinkMultiCastIP;		//L测控组播IP
	int			   m_nLLinkMulticastPort;		//L测控组播收数端口

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

	DECLARE_MESSAGE_MAP()

public:
	virtual BOOL OnInitDialog();
	afx_msg void OnBnClickedBtnMultisocketConnect();
	void CreateMulticastSocketFH96Data();
	void SetUpWinSocketFH96Data();
	void ShowMulticastSocketInfoReceive();
	void GetHostAddress(CString &strIP);
	afx_msg void OnBnClickedBtnMultisocketDisconnect();
	void ShowMulticastSocketInfo();
	// 显示FJ数据各字节内容
	LRESULT ShowCH96FJData(WPARAM wParam, LPARAM lParam);
	afx_msg void OnBnClickedCheck1();
	virtual BOOL PreTranslateMessage(MSG* pMsg);
	// 视频数据源
	int m_iVideoSrc;
	afx_msg void OnRadioBtnVideoSrcClicked();

	//卫通组播
	CString   m_strSACMulticastIPAddr;		//卫通组播IP地址
	int		  m_nSACMulticastRemotePort;	//卫通组播收数端口

	//卫通UDP单播
	CString   m_strSACUDPIPAddr;			//卫通UDP单播IP地址
	int		  m_nSACUDPRemotePort;			//卫通UDP单播远端端口
	int		  m_nSACUDPLocalPort;			//卫通UDP单播本地端口
	CUDPSocket		m_nSACUDPSocket;		//卫通UDP通信套接字
	void CreateUDPSocketReceiveData();		//卫通UDP数据通信创建

	//IMP
	CString mComPortIMP;			//IMP通信串口号
	CString mComBaudIMP;			//IMP通信串口波特率	
	//const int   MaxComPortNumber	= 1024;
	//const unsigned  BAUDITEMNUM		= 10;			//波特率数目
	//const unsigned  NCOUNTER		= 500;				//失败尝试次数
private:
	//添加系统串口到组合选择框
	void AddPortNumberToComboBox();
	void SetComboBoxCurSel( int comboBoxID, const int *portArray, const int& arrLength, CString& strPortNumber );
	void SetComboBaudCurSel( int comboBoxID, const CString *baudArray, const int& arrLength, CString& strBaudNumber );
	bool FindItemFromBaudList( int& pos, const CString *baudArray, const int& arrLength, const int& itemValue );
	void AddBaudNumberToComboBox();
	void OrderComPortList( int *portArray, const int& arrLength );
public:
	afx_msg void OnCbnSelchangePortIMP();//串口号选择触发函数
	afx_msg void OnCbnSelchangeBaudIMP();//串口波特率选择触发函数
private:
	int m_sysSetComNumber;		//串口数

public:
	afx_msg void OnBnClickedBtnImpSerialConnect();
	afx_msg void OnBnClickedBtnImpSerialDisconnect();
	afx_msg void OnBnClickedRadioDc13ins();//吊舱类型选择-13所吊舱
	afx_msg void OnBnClickedRadioDcWhtj();//吊舱类型选择-武汉天进吊舱
	afx_msg void OnBnClickedRadioH264data();//吊舱类型选择-h264数据
	int m_DCvideoTypeSelct;
};