📄 dbtypes.h
字号:
/****************************************************************************
*
* (c) Copyright 2006 by SCADA Enterprise Solutions Inc
* All rights reserved
*
* NAME:
*
* dbTypes.H -- This is the header file for declaring all data
* types used by the real-time database
*
* AUTHOR: Wai Tse
*
* DESCRIPTION:
*
* This file contains all data types used by the real-time database.
*
* RESTRICTION:
* None
*
* REVISION HISTORY:
*
* 25-Feb-2006 Wai Tse Created the initial version.
*
***************************************************************************/
#ifndef DBTYPES_H
#define DBTYPES_H
using namespace std;
#include <string>
#include <vector>
// Packet format
// PKT_SHORT is for a scalar packet and is needed by HMI and dbSync
// PKT_LONG is for a vector or table packet and is needed by HMI and dbSync
// PKT_SHORT_CALC is for a scalar packet and is needed by HMI only it
// will be discarded by the dbSync process
// PKT_LONG_CALC is for a vector or table packet and is needed by HMI only it
// will be discarded by the dbSync process
#define PKT_SHORT 1
#define PKT_LONG 2
#define PKT_SHORT_CALC 3
#define PKT_LONG_CALC 4
// Maximum Size of a formula
#define MAX_SIZE_FORMULA 128
// Maximum string size in database
#define MAX_STR_SIZE 256
// Attribute Types
enum {
SCALAR = 1,
VECTOR,
TABLE,
FIELD
};
// Define all data types supported by the real-time database
typedef bool dtLogical;
typedef unsigned char dtUInt8;
typedef char dtInt8;
typedef unsigned short int dtUInt16;
typedef short int dtInt16;
typedef unsigned int dtUInt32;
typedef int dtInt32;
typedef float dtFloat;
typedef double dtDouble;
//typedef time_t dtTime;
typedef timeval dtTime;
typedef char dtBytes4[4];
typedef char dtBytes8[8];
typedef char dtBytes16[16];
typedef char dtBytes20[20];
typedef char dtBytes32[32];
typedef char dtBytes48[48];
typedef char dtBytes64[64];
typedef char dtBytes128[128];
typedef char dtBytes200[200];
typedef char dtBytes256[256];
// Some common database point types
typedef unsigned short int dtID;
typedef vector<unsigned short int> dtIDs;
typedef char dtPtName[20];
typedef char dtAttrName[20];
typedef vector<char[20]> dtAttrNames;
typedef char dtFldName[20];
typedef char dtAlias[20];
typedef unsigned int dtIdx;
typedef vector<unsigned int> dtIdxes;
typedef void * dtPtr;
typedef unsigned char dtType;
typedef vector<unsigned char> dtTypes;
typedef unsigned short int dtNum;
typedef char dtDef[ MAX_SIZE_FORMULA];
typedef unsigned short int dtClass;
typedef vector<unsigned short int> dtClasses;
typedef string dtSymAddr;
// Database Reference
typedef struct {
dtID ptID;
dtID attrID;
} dtTag;
// database tag structure for map storage
typedef struct {
union {
unsigned int mtag;
dtTag tag;
};
} mapKey;
typedef struct {
dtTag tag; // database tag
dtNum startRec; // start record number
dtNum endRec; // end record number
dtNum startField; // start field number
dtNum endField; // end field number
dtTypes dType; // a vector of data types
} dtRef;
typedef struct {
dtTag tag; // database tag
dtNum startRec; // start record number
dtNum endRec; // end record number
dtNum startField; // start field number
dtNum endField; // end field number
} dtDbRef;
typedef struct {
dtRef ref; // database reference address
dtUInt16 quality; // quality of the attribute
char *buffer; // data buffer, NULL for reading
} dtRw;
// Data transfer long packet header
typedef struct {
dtType delimiter; // 0X7C
dtType subtype; //type of subpacket, 1 for short, 2 for long format
dtDbRef ref; // database reference address
dtUInt16 quality; // quality of the attribute
} dtLongPktHdr;
typedef struct {
dtLongPktHdr hdr; // long data packet header
dtType dType[]; // a vector of data types
char *buffer; // data buffer, NULL for reading
} dtLongPkt;
typedef struct {
dtType delimiter; // 0X7C
dtType subtype; //type of subpacket, 1 for short, 2 for long format
dtTag tag;
dtUInt16 quality;
dtType dtype;
dtType reserved; // memory alignment
} dtSubPktHdr; // A simplified packet segment for internal use
typedef struct {
dtSubPktHdr hdr;
char *buffer;
} dtSubPkt; // A simplified packet for internal use
// Structure of a data packet header
typedef struct {
char byte1; // 0X1B
char byte2; // 0X07
short int reserved;
int numPkt;
int sizPkt;
} dtPktHead;
// Structure of a data packet tail
typedef struct {
char byte1; // 0X7C
char byte2; // 0X23
} dtPktTail;
typedef struct
{
union {
dtSubPkt subpack;
dtLongPkt longPkt;
}; // packet segment
}dtPacket;
// It is important to note that any changes in here may affect
// the communication protocol module (e.g. CIP)
enum dtTypeEnum {
dtUNKNOWN = 0,
dtLOGICAL,
dtUINT8,
dtINT8,
dtUINT16,
dtINT16,
dtUINT32,
dtINT32,
dtFLOAT,
dtDOUBLE,
dtTIME,
dtBYTES4,
dtBYTES8,
dtBYTES16,
dtBYTES20,
dtBYTES32,
dtBYTES48,
dtBYTES64,
dtBYTES128,
dtBYTES200,
dtBYTES256,
dtTAG,
dtDBREF,
dtREF,
dtRW
};
//#ifndef DTSIZE_H
//#define DTSIZE_H
// The size of the data types
//unsigned short int dtSize[25] = {0,1,1,1,2,2,4,4,4,8,4,4,8,16,20,32,48,64,128,200,256,4,12,24,32};
//#endif /*DTSIZE_H*/
#endif /*DBTYPES_H*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -