2024-05-28 13:28:07 +08:00

75 lines
1.3 KiB
C++

#pragma once
#include "Command.h"
#include "snap7/s7_micro_client.h"
#include <vector>
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];
unsigned 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<void(void*,TS7DataItem* m_dataItems,int itemcount)> m_s7fun;
unsigned int m_waitTime;
uint64_t m_CreateTime;
PreWrite m_PreWrite;
private:
unsigned int m_itemCount;
TS7DataItem* m_dataItems;
};