56 lines
1.4 KiB
C++
56 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include "PLCComand.h"
|
|
#include "../SysParam.h"
|
|
|
|
class KeepAliveCommand :public PLCCommand
|
|
{
|
|
public:
|
|
KeepAliveCommand(PLCReveiver* receiver) :PLCCommand(receiver) {}
|
|
~KeepAliveCommand(){ if (m_CtrlCommand)delete m_CtrlCommand; }
|
|
void Init()
|
|
{
|
|
m_CtrlCommand = new S7Command(S7_COMMAND_WRITE, 2);
|
|
TS7DataItem* pItem = m_CtrlCommand->getDataItems();
|
|
pItem[0].Area = S7AreaDB;
|
|
pItem[0].DBNumber = m_PCKeepAlice->GetDBNumber();
|
|
pItem[0].Start = m_PCKeepAlice->GetAddr();
|
|
pItem[0].WordLen = S7WLBit;
|
|
pItem[0].Amount = 1;
|
|
bool* tempKeepAlive= new bool[1];
|
|
pItem[0].pdata = tempKeepAlive;
|
|
m_KeepAliveValue = tempKeepAlive;
|
|
|
|
pItem[1].Area = S7AreaDB;
|
|
pItem[1].DBNumber = m_DevicePrinting->GetDBNumber();
|
|
pItem[1].Start = m_DevicePrinting->GetAddr();
|
|
pItem[1].WordLen = S7WLBit;
|
|
pItem[1].Amount = 1;
|
|
bool* tempDevicePrinting = new bool[1];
|
|
pItem[1].pdata = tempDevicePrinting;
|
|
m_DevicePrintingValue = tempDevicePrinting;
|
|
|
|
m_CtrlCommand->m_Ref = this;
|
|
m_CtrlCommand->isNeedDel = false;
|
|
}
|
|
|
|
void SetKeepAliveValue()
|
|
{
|
|
*m_KeepAliveValue = m_PrintKeepAliveFlag;
|
|
}
|
|
|
|
|
|
void SetDevicePrintingValue(bool bvalue) {
|
|
*m_DevicePrintingValue = bvalue;
|
|
}
|
|
public:
|
|
SysParamBool* m_PCKeepAlice; //PCÐÄÌø-¡·PLC
|
|
SysParamBool* m_DevicePrinting; //É豸´òӡ״̬
|
|
uint64_t m_PrintKeepAliveTimetick;
|
|
bool m_PrintKeepAliveFlag;
|
|
private:
|
|
bool* m_KeepAliveValue;
|
|
bool* m_DevicePrintingValue;
|
|
|
|
|
|
}; |