#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<SignalDelayIndex_Count)
|
{
|
nCurSignalType = signalData.nSignalType;
|
dwDelayTime = pDelayTimeData[nCurSignalType]==0 ? 1000 : pDelayTimeData[nCurSignalType];
|
}
|
|
while (TRUE)
|
{
|
if (m_bConnected==FALSE || m_nUserSignalMode==RecvSig_ManualMode) return;
|
|
if (GetTickCount() - dwTick > 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<<m_nUserSignalMode) | (dwSignalData<<m_nUserSignalData);
|
else
|
dwValue = (dwSignalMode<<m_nUserSignalMode);
|
|
return TRUE;
|
}
|
|
|
BOOL CSignalControl_Simulation::Write_SendSignal(int nAddrIndex, int nSignalIndex, WORD wSignalValue, int nOnTime/*=1000*/)
|
{
|
return TRUE;
|
}
|
|
BOOL CSignalControl_Simulation::Read_SendSignal(int nAddrIndex, WORD& dwValue)
|
{
|
return TRUE;
|
}
|
|
BOOL CSignalControl_Simulation::ReadData(const CString strAddr, int nSize, CString& strData)
|
{
|
return TRUE;
|
}
|
|
BOOL CSignalControl_Simulation::ReadData( const CString strAddr, int nSize, char* pData )
|
{
|
return TRUE;
|
}
|
|
BOOL CSignalControl_Simulation::WriteWordData(const CString strAddr, int nSize, int nData)
|
{
|
return TRUE;
|
}
|
|
BOOL CSignalControl_Simulation::WriteData(const CString strAddr, int nSize, CString strData)
|
{
|
return TRUE;
|
}
|
|
BOOL CSignalControl_Simulation::WritePacketData(const CString strAddr, int nSize, short* pPacketData)
|
{
|
return FALSE;
|
}
|