#pragma once #include "Command.h" #include "snap7/s7_micro_client.h" #include using namespace std; #define S7_COMMAND_READ_INFO 0 #define S7_COMMAND_WRITE 1 typedef union S7FloatData { char data[4]; float fValue; S7FloatData() {} S7FloatData(char _1, char _2, char _3, char _4) { data[3] = _4; data[2] = _3; data[1] = _2; data[0] = _1; } }S7FLOATDATA; typedef union S7WordData { char data[2]; short wValue; S7WordData() {} S7WordData(char _1, char _2) { data[1] = _2; data[0] = _1; } }S7WORDDATA; typedef union S7DWordData { int iValue; char data[4]; S7DWordData() {} S7DWordData(char _1, char _2, char _3, char _4) { data[3] = _4; data[2] = _3; data[1] = _2; data[0] = _1; } }S7DWORDDATA; class S7Command:public Command { typedef void(*PreWrite)(void*, Command*); public: S7Command(int id,unsigned int itemCount); virtual ~S7Command(void); int GetRequestSequence(unsigned char* bseq){return 0;} bool Verify(unsigned char* rseq,int dlength){return true;} TS7DataItem* getDataItems(){return m_dataItems;}; unsigned int getItemCount(){return m_itemCount;}; public: //boost::function m_s7fun; unsigned int m_waitTime; uint64_t m_CreateTime; PreWrite m_PreWrite; private: unsigned int m_itemCount; TS7DataItem* m_dataItems; };