| 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();
- };
|