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

📄 islave.h

📁 电力行业的DL645采集程序,嵌入式Linux环境
💻 H
字号:

/*********************************************************
版权所有:银骏科技
版本号	:1.00
文件名	:Slave.h
创建日期:07/02/22
创建者:
功能说明:	读写子表程序头文件接口
*********************************************************/
#ifndef SLAVE_H_
#define SLAVE_H_
#include <time.h>
#ifdef   ARM_SLAVE_GLOBALS 
#define	ARM_SLAVE_EXT
#else
#define	ARM_SLAVE_EXT    extern
#endif 

#define  METER_FRAME_SIZE                270
#define  METER_FRAME_DATA_SIZE      256

#define  METER_FRAME_START_CH  0x68
#define  METER_FRAME_END_CH      0x16

#define  METER_ADDR_LEN               6
#define  METER_PASSWORD_LEN      4

#define  METER_FRAME_EXT_LEN         12

#define  METER_CTRL_READ_DATA              1
#define  METER_CTRL_RE_READ                  3
#define  METER_CTRL_WRITE_DATA            4
#define  METER_CTRL_CALIBRATE_CLOCK   8
#define  METER_CTRL_ALARM                      7
#define  METER_CTRL_SET_ADDR               10
#define  METER_CTRL_DEMAND_RESET       16

//子表通讯休眠延时   
#define SLAVE_WAIT_DELAY_TIME        3

#define SLAVE_ONEID_DATA_SIZE        256

//电表帧类型
#define  METER_FRAME_TYPE_NORMAL      0
#define  METER_FRAME_TYPE_AA               1
#define  METER_FRAME_TYPE_KEY             2
#define  METER_FRAME_TYPE_IRDA           3


//子表协议代码  
#define   SLAVE_645          		0x10
#define   SLAVE_IEC1107			0x20
#define   SLAVE_WS_645         		0x11
#define   SLAVE_EDMI   			0x32
#define   SLAVE_HND         		0x33
#define   SLAVE_HUALONG   		0x34
#define   SLAVE_LONGDIAN		0x35
#define   SLAVE_SIEMENS_D		0x36
#define   SLAVE_XUJI				0x37
#define   SLAVE_KELU				0x38
#define   SLAVE_SANXING			0x39
#define   SLAVE_ACTARIS			0x40
#define   SLAVE_ABB_a			0x41
#define   SLAVE_ABB_YUAN    		0x42
#define   SLAVE_DAQI    			0x43
#define   SLAVE_EDMI_MK3		0x44
#define   SLAVE_HUALI			0x45
#define   SLAVE_SIEMENS_B		0x46
#define   SLAVE_LINGYANG		0x47
#define   SLAVE_EAST_ELEC		0x48
#define   SLAVE_EMAIL			0x49
#define   SLAVE_EASKA			0x50
#define   SLAVE_ELSTER			0x55
#define   SLAVE_WS				0x31
#define   SLAVE_GB645_PARTS		0x18
#define   SLAVE_GB645_SINGLE	0x19

#define SAMPLE_METER_DATA_OFFSET        25
#define SLAVE_RX_BUFF_SIZE                     1024



//#define DL645_SAMPLE_ID_TABLE_SIZE      29
#define DL645_SAMPLE_ID_TABLE_SIZE      27


#define SLAVE_SAMPLE_EXT_ID_TABLE_SIZE   10

#ifndef  _PACKED_
#define  _PACKED_			__attribute__((packed))   //位对齐
#endif
//extern const SampleIdType gSlaveSampleExtId[];
//采样ID表定义

typedef    unsigned char     BOOLEAN;            //布尔变量     
typedef    unsigned char     BOOL;                   //布尔变量        
typedef    unsigned char     INT8U;                  //无符号8位整形变量                     
typedef    signed   char      	INT8S;                   //有符号8位整形变量                                     
typedef    unsigned short    INT16U;                 //无符号16位整形变量              
typedef    signed   short     	INT16S;                   //有符号16位整形变量                                         
typedef    unsigned int       	INT32U;                   //无符号32位整形变量                                  
typedef    signed   int       		INT32S;                    //有符号32位整形变量                                  
typedef    float              				FP32;                      //单精度浮点数32位长
typedef    double             			FP64;                      //双精度浮点数




typedef  struct tagSampleIdType
{
	INT16U id;
	INT16U offset;
	INT16U size;
} _PACKED_	 SampleIdType;
//com wxh
#define E_COM_OTHER							-1010
#define E_COM_SEND           				-1011
#define E_COM_RECV           				-1012
#define E_DL645_RECV_DATALEN -1013
#define E_DL645_RECV_CS      -1014
#define E_THREAD_LOCK        -7011
#define E_THREAD_UNLOCK      -7012
#define E_PROTOCOL_NOEXIST  -8002
#define E_GET_HISTFN		 -8003
#define E_SIGN_CONV			 -8004	
#define E_ALLOT_MEMORY       -8005
#define E_GET_FNFREEZE		 -8006
#define E_RECV_HEAD		     -8017
//ERC

#define E_HistDATA_DL645     -8018 
#define E_DAYDATA_DL645      -8020 
#define E_MONDATA_DL645      -8021
#define E_ALARMDATA_DL645    -8022 
#define  E_NO_SUCH_DATA          -8013

#define E_HistDATA_IEC1107   -8039 
#define E_DAYDATA_IEC1107    -8039 
#define E_MONDAT_IEC1107     -8039 
#define E_ALARMDATA_IEC1107  -8039 
#define E_RECV_IEC1107		 -8050	
#define E_ADDR_LEN			-8051
#define E_LOGIN_EDMI    -8052
#define E_COMM_ERR      -8005
#define E_COM_LOCK      -8053
#define E_NOFOUND_DATAID	-8054


#define E_BUFF_FULL -8055

#define SUCCESS            0
#define FAILED              -1
#define FALSE                0
#define TRUE                 1
extern const SampleIdType gDL645SampleId[];


#define SLAVE_DATA_BUFF_SIZE          1000
typedef  struct tagSlaveDataBuffType
{
	time_t  createTime;
	time_t  accessTime;
	INT8U  data[SLAVE_DATA_BUFF_SIZE];
	INT8U  valid;
}_PACKED_  SlaveDataBuffType;

#define SLAVE_MAX_DATA_CREATE_MINUTES         6
#define SLAVE_MAX_DATA_ACCESS_SECONDS         120

ARM_SLAVE_EXT  SlaveDataBuffType gSlaveDataBuff[4];



typedef struct tagMpComProperty
{
  INT8U 	  nMp;
  INT8U 		nComPort;  // physical com port No.
  INT8U 		nProtocol;    // rule No. (ex. 1:DL/645)
  INT8U 		addr[6];   // meter addr. BCD
  INT16U	nBPS;
  char 		  parity;
  INT8U 	  nDataBit;
  INT8U 		nStopBit;
  INT8U 		user[12];
  INT8U 		pass[12];
}_PACKED_  MpComProperty;

typedef  struct tagRateEType
{
	INT8U JianE[4];
	INT8U FengE[4];
	INT8U PingE[4];
	INT8U GuE[4];
}_PACKED_ RateEType;

typedef  struct tagRateMaxRquType
{
	INT8U jian[3];
	INT8U feng[3];
	INT8U ping[3];
	INT8U gu[3];
}_PACKED_ RateMaxRquType;

typedef  struct tagRateMaxRquTimeType
{
	INT8U jian[4];
	INT8U feng[4];
	INT8U ping[4];
	INT8U gu[4];
}_PACKED_ RateMaxRquTimeType;

ARM_SLAVE_EXT INT8U gSlaveRxBuff[SLAVE_RX_BUFF_SIZE];

ARM_SLAVE_EXT int SlaveInitMPPort(MpComProperty *mpProperty);
ARM_SLAVE_EXT int SlaveReadData(MpComProperty *mpProperty, INT16U id, INT8U *pbuf, INT16U bufsize, INT16U *psize);
ARM_SLAVE_EXT int SlaveWriteData(MpComProperty *mpProperty, INT16U id, INT8U *pbuf, INT16U bufsize);
ARM_SLAVE_EXT int SlaveSendFrame(int fd, INT8U *pbuf, INT16U bufsize,INT32U nWaitmScnd);
ARM_SLAVE_EXT int SlaveRecvFrame(int fd, INT8U *pbuf, INT16U bufsize, INT16U *psize,INT32U nWaitmScnd);
ARM_SLAVE_EXT int SlaveSampleData(MpComProperty *mpProperty, INT8U *pbuf,INT16U bufsize,INT16U *psize);



#endif /*SLAVE_H_*/

⌨️ 快捷键说明

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