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

📄 datatype.h

📁 民航二所单片机驱动开发
💻 H
字号:
#ifndef  __DATATYPE_H__
#define  __DATATYPE_H__


/////////Device Type////////////////////
#define  SERIAL_DEV_TYPE    0x00
#define  BOARD_DEV_TYPE		0x01


#define  RX_QUEU	1024
#define  TX_QUEU	512
#define  MAX_SEND_BYTES 0x180 //384

#define  MAX_PACKET_NUMER  512  //包队列中能支持的最大包数目
#define  RM_FLAG   0
#define  RM_CHAR   1

#define  COM_PRO  3475
#define  VERSION1 1023

#define  TIME_INTERVAL  10

//Packet Type
#define  PT_READ		0
#define  PT_WRITE		1

//MACRO of datatype.
#define  FLOAT_TYPE       1
#define  LONG_TYPE        2
#define  STRING_TYPE      3
#define  DISC_TYPE        4

//AD filter mode
#define  FILTER_NO    0


typedef  ATOM  STR;
union DDEValue
{
	long  lValue;
	float fValue;
	BOOL  bValue;
	STR	  sValue;
};

union PlcValue
{
	BOOL  bitVal;
	BYTE  byteVal;
	short intVal;
	UINT  uintVal;
	WORD  bcdVal;
	long  longVal;
	float floatVal;
	DWORD longbcdVal;
	STR	  strVal;
};

#define BIT_DATATYPE       0x01
#define BYTE_DATATYPE      0x02
#define INT_DATATYPE       0x04
#define UINT_DATATYPE      0x08
#define BCD_DATATYPE       0x10
#define LONG_DATATYPE      0x20
#define LONGBCD_DATATYPE   0x40
#define FLOAT_DATATYPE     0x80
#define STRING_DATATYPE    0x100

#define COM_QUALITY_BAD             0x00
#define COM_QUALITY_UNCERTAIN       0x40
#define COM_QUALITY_GOOD            0xC0
#define COM_QUALITY_CONFIG_ERROR    0x04
#define COM_QUALITY_NOT_CONNECTED   0x08
#define COM_QUALITY_DEVICE_FAILURE  0x0c
#define COM_QUALITY_SENSOR_FAILURE  0x10
#define COM_QUALITY_LAST_KNOWN      0x14
#define COM_QUALITY_COMM_FAILURE    0x18
#define COM_QUALITY_OUT_OF_SERVICE  0x1C
#define COM_QUALITY_LAST_USABLE     0x44
#define COM_QUALITY_SENSOR_CAL      0x50
#define COM_QUALITY_EGU_EXCEEDED    0x54
#define COM_QUALITY_SUB_NORMAL      0x58
#define COM_QUALITY_LOCAL_OVERRIDE  0xD8

typedef struct 
{
	int    nFlag[2];//驱动程序配置文件特征字
	char   sComment[8];//简短说明
	int    nVersion[2];//版本号
	int    nVarNum;    //变量数
	int    nCommConfig;//是否记录串口配置
	int    reserved[24];//预留48字节
}CFG_FILE_HEAD;
#define  COMM_CONFIG_OFFSET   256				//Config Part1 offset. ----- Store Comm Config.
#define  VAR_CONFIG_OFFSET    512				//Config Part2 offset. ----- Store Var  Config.

typedef struct
{
	char     szDevName[32];//设备名称

	char     szRegister[128];
	short    nDataType;
	short    nAccessMode;
	short    reserved[2];
}MiniDbItem;
typedef  MiniDbItem    MINIDBITEM;

struct CommConfig
{
    BYTE  bId;
    UINT  nBaudRate;
    BYTE  bByteSize;
    BYTE  bStopBits;
    BYTE  bParity;

	char  evtChr;
	WORD  wRxMode;

	UINT  nTimeOut;


	WORD  reserved[5];
};
typedef CommConfig  COMM_CONFIG;


struct ComDevice//size: 54
{
	short nFlag;//为1,表示此位置有串口,为-1,无。
	WORD  deviceKind;//此值为1,表示串行设备
	char  deviceName[32];//逻辑名称=={COM1,COM2...}
	int   baudRate;//波特率
	short dataBits;//数据位
	short stopBits;//停止位
	short parity;//校验方式
	short timeOut;//超时
	short failTimes;//失败次数
	short retryInterval;//尝试恢复间隔
	short isRs232;//是RS232通讯还是RS485
};//Wang Mingyu Added in 98/10/12.


typedef struct CommData
{
	char  szProtocolName[16];//该串口的协议名
	CLSID clsidProtocol;	 //该串口的协议ID

	IUnknown  *pComProtocol;
	CPtrList  PacketList;	//包队列
}COMM_DATA;


#define   MAX_DEV_LEN   64

typedef struct _DevAddr
{
	UINT	nDevAddr;
	char	sDevAddr[MAX_DEV_LEN];
}DEVADDR, * PDEVADDR;

typedef struct Device
{
	char	szDevName[32];
	char	szDevAddr[32];
	DEVADDR devAddress;

	
	int		nCommId;
	int		nFailTime;
	BOOL	bBad;
	UINT	nTimerCount;
}DEVICE, * PDEVICE;

typedef struct var
{                 
	WORD wVarID;      			// 组态王中变量ID 
   	WORD wVarType;      		// 组态王变量类型
   	char szVarName[32]; 		// 组态王变量名称 
   
   	short  nDeviceIndex;		// PLC索引        
	short  nUnitNo;				// PLC地址
	DEVADDR *pDevAddr;			// 设备地址指针,新添内容
   	
	char   *pszRegName;			//寄存器名称
	
	short  nRegType;     		// 寄存器类型     
	short  nSubType;			// 类型子码
	short  nSubType1;
	short  nSubType2;			// 类型子码2
   	short  nNo;          		// 地址            

   	short  nDataType;    		// 数据类型 

   	short  nAccessMode;      	// I/O Mode.

   	long   nFrequency;   		// 采样频率(基频的倍数)
   	long   nTimerCount;  		// 采样计数器
    
	CWinThread* pComThread;     // 该变量所在的线程
	DDEValue   maxRaw;			// 最大原始值
	DDEValue   minRaw;			// 最小原始值
	short      bConvertion;		// 转换方式
	short      isBad;			//设备坏
	short      isUnvalid;		//变量无效
	//   	WORD   unused[2];			//no used
}PLCVAR;
typedef  PLCVAR * PPLCVAR;

typedef  unsigned short USHO;
#define  PS_SOP  0x0000
#define  PS_EOP  0x8000
//协议处理核心
typedef struct Packet 
{ 
	short  nDeviceIndex;		//-----------//	
	short  nUnitNo;			// 设备地址  |
	DEVADDR * pDevAddr;		// 设备地址指针, 新添内容
	char    * pszDevName;	// 设备名称  // 
	char   *pszRegName;     //寄存器名称
    short  nRegType;		// 类型码
    short  nSubType;		// 子类型码
	short  nSubType1;
	short  nSubType2;		// 子类型码(附加)
	int    nStartNo;		// 起始偏移量
    int    nEndNo;			// 结束偏移量
    
	short  nPacketType;		// Read, write, something else.
	//WORD   wState;		// Packet state.

    CPtrList varList;       // store 'struct id_no'或'struct ID_NO2'
}PACKET;
typedef PACKET * PPACKET;


typedef struct IdNo
{
	WORD wVarId;
	WORD wNo;
	WORD wDataType;
	BYTE Special[4];
	PlcValue  plcValue;
}ID_NO;

typedef struct IdNo2
{
	WORD wVarId;
	WORD wNo;
	WORD wDataType;
	PlcValue  plcValue;
	BYTE Special[4];

    WORD wQualities;//质量戳
    FILETIME ftTimeStamps;//时间戳	
}ID_NO2;

//////////////////////////
typedef  struct reginfo
{
	char  sRegName[8];//寄存器名

	int   nLowIndex;
	int   nUpperIndex;

	WORD  wDataType;//所支持的基本数据类型
	int   nData;
}REG_INFO;
#define  MAX_REG_NUM   256
//////////////////////////

//used for COM
#define  RF_BAD_REGISTER     1
#define  RF_NO_OVERFLOW_LOW  2
#define  RF_NO_OVERFLOW_HIGH 3

#define  RF_INVALID_DATATYPE 0x8001

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -