// RunComm.h: interface for the CRunComm class. // ////////////////////////////////////////////////////////////////////// #pragma once #include #include "RUN.H" #include "DllDefines.h" // typedef struct _stNetAddress { std::string strIpAddress{ "127.0.0.1" }; int nPort{ 400 }; } stNetAddress; // typedef struct _stComSetting { std::string strCommPort{ "COM1" }; long lBaudRate{ 9600 }; std::string strParity{ "None" }; int nDataBits{ 8 }; double dStopBits{ 1.0 }; } stComSetting; class MCCTRDLLCLASS CRunComm : public CRun { public: int GetPortNo(bool bMaint = false, int nWhichOne = 0); std::string GetIpAddress(bool bMaint = false, int nWhichOne = 0); CRunComm(int nID, std::string strName, std::vector& modules, std::vector& iSequenceModuleNo); virtual ~CRunComm(); enum { MAINT_OPEN_COM = 0x1, MAINT_CLOSE_COM = 0x2, MAINT_SEND_COM = 0x4, MAINT_CONNECT_PORT = 0x8, MAINT_DISCONNECT_PORT = 0x10, MAINT_SEND_PACKET = 0x20, }; protected: bool IsMaintenaceCloseCommPort(); bool IsMaintenanceSendComm(); bool IsMaintenaceOpenCommPort(); std::string GetMaintMsg(); bool IsMaintenanceDisconnectPort(); bool IsMaintenanceConnectPort(); bool IsMaintenanceSendPacket(); double GetStopBits(bool bMaint = false, int nWhichOne = 0); int GetDataBits(bool bMaint = false, int nWhichOne = 0); long GetBaudRate(bool bMaint = false, int nWhichOne = 0); std::string GetParity(bool bMaint = false, int nWhichOne = 0); std::string GetCommPort(bool bMaint = false, int nWhichOne = 0); bool GetCommPortSetting(std::string csIniFile, std::string csSectionName, int nWhichOne = 0); bool GetNetworkPortSetting(std::string csIniFile, std::string csSectionName, int nWhichOne = 0); // send com data to modules in maintenance mode virtual void OnMaintenanceSendCom(LPCTSTR lpcComPort, int iBaudRate, int iDataBits, LPCTSTR lpcParity, float fStopBits, LPCTSTR lpcFlowCtrl, LPCTSTR lpcSendMsg); // send open com to modules in maintenance mode virtual void OnMaintenanceOpenCom(LPCTSTR lpcComPort, int iBaudRate, int iDataBits, LPCTSTR lpcParity, float fStopBits, LPCTSTR lpcFlowCtrl); // send close com to modules in maintenance mode virtual void OnMaintenanceCloseCom(LPCTSTR lpcComPort, int iBaudRate, int iDataBits, LPCTSTR lpcParity, float fStopBits, LPCTSTR lpcFlowCtrl); // send packet to modules in maintenance mode virtual void OnMaintenanceSendPacket(LPCTSTR IpAddress, int iPortNo, LPCTSTR lpcSendMsg); // send connect port to modules in maintenance mode virtual void OnMaintenanceConnectPort(LPCTSTR IpAddress, int iPortNo); // send connect port to modules in maintenance mode virtual void OnMaintenanceDisconnectPort(LPCTSTR IpAddress, int iPortNo); // write acknowledge message to text file void WriteAckToTextFile(std::string strAckMsg); virtual void SendPacket(std::string strAckMsg = ""); virtual void DisconnectPort(std::string strAckMsg = ""); virtual void ConnectPort(std::string strAckMsg = ""); virtual void SendComm(std::string strAckMsg = ""); virtual void CloseCommPort(std::string strAckMsg = ""); virtual void OpenCommPort(std::string strAckMsg = ""); void InitCommSettings(LPCTSTR lpcComPort, long lBaudRate, int iDataBits, LPCTSTR lpcParity, float fStopBits, LPCTSTR lpcFlowCtrl); private: // Maintenance use char m_cComCommand; std::string m_strMaintSendMsg; // TCP/IP Maintenance variables stNetAddress m_maintNetAddress; // Serial Comm Settings for maintenance use stComSetting m_maintComSetting; // TCP/IP variables for auto run std::vector m_vecNetAddress; // Serial Comm Settings for auto run use std::vector m_vecComSetting; };