📄 islave.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 1extern const SampleIdType gDL645SampleId[];#define SLAVE_DATA_BUFF_SIZE 1000typedef 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 120ARM_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 + -