#include "StdAfx.h" #include "CHSignalControls/SignalControl_Simulation.h" CSignalControl_Simulation::CSignalControl_Simulation(int nIndex, DWORD dwPeriod) : CSignalControl(nIndex, dwPeriod) { m_nUserSignalMode = RecvSig_ManualMode; m_nUserSignalData = -1; } CSignalControl_Simulation::~CSignalControl_Simulation(void) { } void CSignalControl_Simulation::IST2P_RunThreadProcess(const CSignalData& signalData) { if (m_bConnected == FALSE || m_nUserSignalMode == RecvSig_ManualMode) return; DWORD dwTick = GetTickCount(); DWORD dwDelayTime = 1000; int* pDelayTimeData = m_ControlInfo.GetDelayTimeData(); int nCurSignalType = 0; if (signalData.nSignalType>=0 && signalData.nSignalType dwDelayTime) break; } CSignalData data; if (m_nUserSignalData==-1 || m_nUserSignalData==RecvSig_Unloading) { m_nUserSignalData = RecvSig_Loading; } else { m_nUserSignalData = m_nUserSignalData+1; data.nSignalType = nCurSignalType + 1; } m_pSignalThread->AddThreadData(data); } int CSignalControl_Simulation::Connect(const CSignalControlInfo* pControlInfo) { m_ControlInfo = *pControlInfo; m_nIndex = m_ControlInfo.GetIndex(); m_nReceiveSignalCount = m_ControlInfo.GetReceiveSignalCount(); m_nSendSignalCount = m_ControlInfo.GetSendSignalCount(); // new signal pointer m_pReceiveSignalValue = new WORD[m_nReceiveSignalCount]; m_pReceiveSignalValuePrev = new WORD[m_nReceiveSignalCount]; memset(m_pReceiveSignalValue, 0, sizeof(WORD)*m_nReceiveSignalCount); memset(m_pReceiveSignalValuePrev, 0, sizeof(WORD)*m_nReceiveSignalCount); m_pSendSignalValue = new WORD[m_nSendSignalCount]; m_pSendSignalValuePrev = new WORD[m_nSendSignalCount]; memset(m_pSendSignalValue, 0, sizeof(WORD)*m_nSendSignalCount); memset(m_pSendSignalValuePrev, 0, sizeof(WORD)*m_nSendSignalCount); if (m_ControlInfo.GetControllerType() == SignalConnectType_Simulation) { m_nUserSignalData = -1; m_bConnected = TRUE; } return 1; } void CSignalControl_Simulation::Disconnect() { m_bConnected = FALSE; } BOOL CSignalControl_Simulation::Read_ReceiveSignal(int nAddrIndex, WORD& dwValue) { WORD dwSignalMode = 1, dwSignalData = 1; if (m_nUserSignalData >= RecvSig_Loading) dwValue = (dwSignalMode<