| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | 
							- 
 
- // SimulatorDlg.h: 头文件
 
- //
 
- #pragma once
 
- #include "TCPServerIOCP.h"
 
- #include "PubFun.h"
 
- #include <map>
 
- #include "PktAssembleBuff.h"
 
- #include "DlgRecord.h"
 
- #include "CSM315ProtocolEx.h"
 
- //
 
- //struct stClientItem
 
- //{
 
- //	SOCKET sock;
 
- //	sockaddr_in from;
 
- //	int		recvCount;
 
- //	int		sendCount;
 
- //	SYSTEMTIME stConnect;
 
- //	SYSTEMTIME stLastRecv;
 
- //};
 
- struct stNodeItem
 
- {
 
- 	TCHAR szName[100];
 
- 	WORD wNodeID;
 
- 	vector<WORD> vctAcqID;
 
- };
 
- struct Clt315_Info// : public JDSP_CLIENT_SESSION
 
- {
 
- 	ClientInfo* pTcpClt;
 
- 	PktAssembleBuff pktAssembleBuff;
 
- 	PktQueue AysnPktQueue;
 
- };
 
- // CSimulatorDlg 对话框
 
- class CSimulatorDlg : public CDialogEx, public ITcpServerCallBack
 
- {
 
- // 构造
 
- public:
 
- 	CSimulatorDlg(CWnd* pParent = nullptr);	// 标准构造函数
 
- 	~CSimulatorDlg()
 
- 	{
 
- 		delete m_pDlgRecord;
 
- 	}
 
- // 对话框数据
 
- #ifdef AFX_DESIGN_TIME
 
- 	enum { IDD = IDD_SIMULATOR_DIALOG };
 
- #endif
 
- 	//CTCPSocket m_jhdSock;			//JHD连接SOCKET
 
- 	TCPServerIOCP m_tcpServer_315;		//tcp服务
 
- 	//bool m_bJHDConnected;			//JHD服务器连接标志
 
- 	CDlgRecord* m_pDlgRecord;
 
- 	CString		m_strClientIP;
 
- 	UINT		m_uPort;
 
- 	//std::map<std::string, stClientItem> m_mapClients;	//key=ip:port
 
- 	protected:
 
- 	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持
 
- 	//AFX_MSG_CALL LRESULT OnJhdDisconnect(WPARAM, LPARAM);
 
- public:
 
- 	void OnInitSocket();
 
- 	void OnRecvPkt(PKT_DATA* ppd, Clt315_Info* pCltInfo);
 
- public:
 
- 	virtual void ConnStatusChange(ClientInfo* pCltInfo, BOOL bIsConn);
 
- 	virtual void OnRecvData_TCPServer(BYTE* pData, int iLen, ClientInfo* pCltInfo);
 
- 	//315收到数据包后,放入接收队列,由接收处理函数处理接收包
 
- 	static DWORD WINAPI Thread_DealRecv(LPVOID pParam);
 
- 	DWORD DealRecv();
 
- 	//油压油位和转辙机状态主动通知线程
 
- 	static DWORD WINAPI Thread_SendStatusByInterval(LPVOID pParam);
 
- 	DWORD SendStatusByInterval();
 
- 	std::map<ClientInfo*, Clt315_Info*> m_map315CltInfo;
 
- 	CCriticalSection m_cs315CltList;
 
- 	bool m_bWIFRunning = false;//系统程序是否运行
 
- 	HANDLE					m_hRcvThread;
 
- 	HANDLE                  m_hYWAndStatus;
 
- 	//HANDLE					m_hRecvSema1;//数据信号量 线程1
 
- 	std::map<string, std::map<WORD, stNodeItem>> m_mapNodes;//key=ip:port key=牵引点ID
 
- 	int SendHeartbeat();
 
- 	BOOL DealRequestPkt(PBYTE pBuf, int nBufLen, ClientInfo* pCltI);
 
- 	void GetGapConfig(C315CommData& CommData);
 
- 	void InsertClient(const ClientInfo* pCltInfo);
 
- 	void UpdateClient(const ClientInfo* pCltInfo);
 
- 	void DeleteClient(const ClientInfo* pCltInfo);
 
- 	void SendClients(const C315CommData& CommData);
 
- 	void SendClients(const C315CommData& CommData, const CString &strClientIP, UINT uPort);
 
- // 实现
 
- protected:
 
- 	HICON m_hIcon;
 
- 	// 生成的消息映射函数
 
- 	virtual BOOL OnInitDialog();
 
- 	afx_msg void OnPaint();
 
- 	afx_msg HCURSOR OnQueryDragIcon();
 
- 	DECLARE_MESSAGE_MAP()
 
- public:
 
- 	afx_msg void OnBnClickedButtonListen();
 
- 	void OnBnClickedButtonGapcfg();
 
- 	CListCtrl m_lstClients;
 
- 	CListCtrl m_lstEqps;
 
- 	CDateTimeCtrl m_dtBegin;
 
- 	CDateTimeCtrl m_dtEnd;
 
- 	afx_msg void OnBnClickedButtonNewvalue();
 
- 	afx_msg void OnLvnItemchangedListClients(NMHDR* pNMHDR, LRESULT* pResult);
 
- 	afx_msg void OnBnClickedCheckAllAlarm();
 
- 	afx_msg void OnBnClickedButtonAlarm();
 
- 	afx_msg void OnBnClickedButton0x55();
 
- 	afx_msg void OnBnClickedButton0x56();
 
- 	afx_msg void OnBnClickedButton0x57();
 
- 	afx_msg void OnBnClickedButtonRecord();
 
- 	afx_msg void OnBnClickedButtonParse();
 
- };
 
 
  |