⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbtypes.h

📁 在LINUX环境下
💻 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 + -