📄 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 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 + -