#ifndef DEVICE_DESC_123_INCLUDED #define DEVICE_DESC_123_INCLUDED #include "glbtypes.h" #include "basetype.h" #ifdef __cplusplus extern "C" { #endif /************************************************************************/ //数据库中描述信息的最大长度 #define DEVICE_DESC_TEXT_LEN 63 //定值枚举类型,每个分组的最大分类 #define DEVICE_DESC_DZ_ENUM_TYPE_NUM 16 //状态灯的最大个数 #define DEVICE_DESC_LIGHTS_NUM 16 //每个装置遥测的最大个数 #define DEVICE_DESC_YC_NUM 30 //每个装置的最大IO板子数目 #define DEVICE_DESC_IO_BORD_NUM (CLZType_IO_NUM) //4 //cbt modified 2021.3.23 硬件4.0,IO板数量由4块->5块,统一采用basetype.h中的宏定义 //每个板子最大的IO数目 #define DEVICE_DESC_IO_KRKC_NUM 32 typedef struct { ST_INT enumID; ST_CHAR enumDesc[DEVICE_DESC_TEXT_LEN+1]; ST_UCHAR valStart; //下面数组,实际开始配置的枚举值 ST_UCHAR valEnd; //下面数组,最后一个配置的枚举值 struct { ST_INT enumVal; //枚举的值, -1表示本枚举值没有定义. 如果配置了数组的索引号等于枚举的值. ST_CHAR valDesc[DEVICE_DESC_TEXT_LEN+1]; } enumVals[DEVICE_DESC_DZ_ENUM_TYPE_NUM]; } DEVICE_DZ_ENUM; typedef struct { ST_CHAR bitDesc[32][DEVICE_DESC_TEXT_LEN+1]; } DEVICE_DZ_BIT_DESC; typedef struct { ST_CHAR group[DEVICE_DESC_TEXT_LEN+1]; ST_CHAR dzName[DEVICE_DESC_TEXT_LEN+1]; ST_FLOAT valMin; ST_FLOAT valMax; ST_CHAR unit2[DEVICE_DESC_TEXT_LEN+1]; ST_CHAR unit1[DEVICE_DESC_TEXT_LEN+1]; ST_INT dzTypeCode; ST_INT enumID; ST_CHAR defaultVal[DEVICE_DESC_TEXT_LEN+1]; ST_FLOAT scale2; ST_FLOAT scale1; ST_INT relCT2; ST_INT relCT1; ST_INT relPT2; ST_INT relPT1; ST_INT PTCTIndex; ST_INT visable; ST_INT modify; ST_CHAR LCDName[DEVICE_DESC_TEXT_LEN+1]; //如果本定值项是枚举类型,下面指针指向对应的枚举ID对应的枚举值描述,否则指针为空 const DEVICE_DZ_ENUM *pDzEnum; //如果本定值项是按位定义,那么下面的指针指向位的描述 数组,否则指针为空 const DEVICE_DZ_BIT_DESC *pDzKrtx; //默认值为-1 ST_INT relateV2; //关联的二次额定值,当relCT2或relPT2大于0时,实际最小最大值,需要乘以本项指向序号的定值值 ST_INT relateV1; //关联的一次额定值,当relCT1或relPT1大于0时,实际最小最大值,需要乘以本项指向序号的定值值 } DEVICE_DZ_DESC; typedef struct { ST_INT dzNum; DEVICE_DZ_DESC *pDzDesc; } DEVICE_DZ_GROUP; //状态灯的定义 typedef struct { ST_INT num; struct { ST_INT index0; //从0开始,表示对应的bit位 ST_CHAR name[DEVICE_DESC_TEXT_LEN+1]; ST_INT color; } lights[DEVICE_DESC_LIGHTS_NUM]; } DEIVCE_LIGHTS; //故障报告动作标识的描述 typedef struct { ST_CHAR actDesc[32][DEVICE_DESC_TEXT_LEN+1]; } DEVICE_GZBG_ACTFLAG; //测类型的定义 typedef struct { ST_INT ycType; ST_CHAR ycName[DEVICE_DESC_TEXT_LEN+1]; ST_CHAR ycCategor[DEVICE_DESC_TEXT_LEN+1]; ST_CHAR unit1[DEVICE_DESC_TEXT_LEN+1]; ST_CHAR unit2[DEVICE_DESC_TEXT_LEN+1]; ST_INT coeff1; ST_INT coeff2; } DEVICE_YC_TYPE_ITEM; typedef struct { ST_INT ycNum; struct { ST_INT index0; //序号从1开始,对应遥测数组中值的位置 ST_INT ycType; ST_INT visible; ST_CHAR duanzi[DEVICE_DESC_TEXT_LEN+1]; //根据ycType生成 const DEVICE_YC_TYPE_ITEM *pYcDescType; } ycItem[DEVICE_DESC_YC_NUM]; } DEVICE_YC; typedef struct { ST_INT deviceTypeCode; ST_CHAR deviceName[DEVICE_DESC_TEXT_LEN+1]; ST_CHAR deviceCategory[DEVICE_DESC_TEXT_LEN+1]; ST_CHAR shortName[DEVICE_DESC_TEXT_LEN+1]; ST_INT refDeviceEvent; ST_INT haveTouTui; ST_INT toutuiChl; } DEVICE_DESC; //事件、自检报告的代码描述 typedef struct { ST_INT code; //报告的代码 ST_CHAR desc[DEVICE_DESC_TEXT_LEN+1]; } DEVICE_CODE_DESC_ITEM; typedef struct { ST_INT num; DEVICE_CODE_DESC_ITEM *pCodeType; } DEVICE_CODE_DESC; typedef struct { ST_INT boardIndex; //板子序号,从1开始 ST_INT ioNum; //下面结构体,包含的IO个数 struct { ST_INT bitIndex; //0开始的bit序号,第二个板子从32开始 ST_CHAR duanzi[DEVICE_DESC_TEXT_LEN+1]; ST_CHAR name[DEVICE_DESC_TEXT_LEN+1]; } ioDesc[DEVICE_DESC_IO_KRKC_NUM]; } DEVICE_IO_BOARD; //每个装置的IO描述 typedef struct { ST_INT boardNum; DEVICE_IO_BOARD board[DEVICE_DESC_IO_BORD_NUM]; } DEVICE_IO_DESC; //GOOSE开入描述 typedef struct { ST_INT bit2Index; //0开始的bit序号 ST_CHAR duanzi[DEVICE_DESC_TEXT_LEN+1]; ST_CHAR type0[DEVICE_DESC_TEXT_LEN+1]; //实际显示的端子? ST_CHAR name[DEVICE_DESC_TEXT_LEN+1]; ST_CHAR bitDesc[DEVICE_DESC_TEXT_LEN+1]; } DEVICE_GOOSE_IO_ITEM; typedef struct { ST_INT num; DEVICE_GOOSE_IO_ITEM *pGooseItem; } DEVICE_GOOSE_IO; //IO开出传动 typedef struct { ST_INT boardIndex; //相关传动的分类,0代表保护,1表示IO1,2表示IO2 ST_INT cdNum; struct { ST_INT channel; //传动通道号 ST_CHAR name[DEVICE_DESC_TEXT_LEN+1]; ST_INT kcIndex; //相关开出的编号 ST_INT type0; //传动类型,按钮or普通传动 } cdDesc[DEVICE_DESC_IO_KRKC_NUM]; } DEVICE_CD_IO_ITEM; typedef struct { ST_INT boardNum; DEVICE_CD_IO_ITEM board[DEVICE_DESC_IO_BORD_NUM+1]; } DEVICE_CD_IO_DESC; typedef struct { ST_INT infIndex; //信息体地址编号,从1开始,对应遥信 ST_CHAR name[DEVICE_DESC_TEXT_LEN+1]; //遥信名称 ST_CHAR heText[DEVICE_DESC_TEXT_LEN+1]; ST_CHAR fenText[DEVICE_DESC_TEXT_LEN+1]; ST_CHAR interText[DEVICE_DESC_TEXT_LEN+1]; //不定态的描述 ST_INT type0; //类型 ST_INT imageID; } DEVICE_YAOXIN_ITEM; typedef struct { ST_INT num; //遥信个数. 注意配置遥信个数,可能与得到的遥信值的个数不一样 DEVICE_YAOXIN_ITEM *pYaoXin; } DEVICE_YAOXIN_DESC; ST_RET device_desc_init( ST_VOID ); ST_RET device_desc_release( ST_VOID ); ST_RET device_desc_handle( ST_VOID ); //获取定值的描述,类型1=用户定值,2=压板定值,3=电抗距离表,4=系统定值 const DEVICE_DZ_GROUP * device_desc_dz_get( ST_INT dzType ); const DEIVCE_LIGHTS * device_desc_lights_get( ST_VOID ); const DEVICE_YC * device_desc_yc_get( ST_VOID ); const DEVICE_DESC * device_desc_devname_get( ST_VOID ); //获取装置类型,0为没有初始化完成 ST_INT device_desc_type_get( ST_VOID ); //根据模拟量类型,获取模拟量的描述。没找到返回NULL DEVICE_YC_TYPE_ITEM * device_desc_yc_type_find( ST_INT ycType ); DEVICE_CODE_DESC_ITEM * device_desc_sjzj_type_find( ST_INT code ); //根据指定的bit位,获取动作标志的描述 const ST_CHAR * device_desc_gzbg_actbit_find( ST_INT bitIndex ); const DEVICE_IO_DESC * device_desc_iokr_get( ST_VOID ); const DEVICE_IO_DESC * device_desc_iokc_get( ST_VOID ); const DEVICE_CD_IO_DESC * device_desc_cd_io_get( ST_VOID ); const DEVICE_YAOXIN_DESC * device_desc_yaoxin_get( ST_VOID ); const DEVICE_YAOXIN_DESC * device_desc_yaoxin_image_get( ST_VOID ); /************************************************************************/ #ifdef __cplusplus } #endif #endif