75 lines
1.3 KiB
C++
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];
|
|
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;
|
|
|
|
};
|
|
|
|
|