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

📄 public.h

📁 串口收发工具
💻 H
字号:
#ifndef _MAINTAIN_STRUCT
#define _MAINTAIN_STRUCT

#define GY_FDK		1		//规约类型 fdk
#define GY_CDT		2		//规约类型 cdt
#define GY_DF0420	3		//规约类型 df0420和df0241
#define GY_MODBUS	4		//规约类型 modbus
#define GY_JDXJ		5		//规约类型 接地巡检仪


#define GY_TYPE_FLAG_DF0420 1
#define GY_TYPE_FLAG_DF0421 2

typedef  struct tagSerialLineInfo
{
	int     m_nComNo;
	int     m_nComBaut;
	BYTE    m_nDataBit;
	BYTE    m_nStopBit;
	BYTE	m_nParity;
	BYTE    m_FlowControl;  //流控制
	                        //0-----无
							//1-----硬件
							//2-----软件
}SerialLineInfo,*LPSerialLineInfo;

const BYTE SOH = 0x01;			//FDK帧头
const BYTE FUNCCODE = 0X02;		//0241维护功能码

const int CANSHU_FRAME_LEN = 512;//参数上装每帧数据长度
const int BMP_FRAME_LEN = 600;	//图像上装每帧数据长度
const int CANSHU_UP_DATA = 521;	//参数上装时参数数据长为512字节,加上9个其他字节
const int BMP_UP_DATA = 609;	//图像上装时数据长为600字节,加上9个其他字节
const int NAK = 10;				//NAK长度为10
const int ACK = 8;				//ACK长度为8

const int CANSHU_SEND_COUNT = 19;		//参数文件的发送次数
const int CANSHU_SEND_COUNT_NEW = 80;	//新格式参数文件的发送次数
const int BMP_SEND_COUNT = 16;			//图像文件的发送次数
const int DATALENGTH = 1024*1024;

#define GOING _T("操作进行中,请稍候......")
#define ENDERROR _T("操作失败")
#define END _T("操作成功")

#define MSG_CONTROLRETURN WM_USER + 1	//自定义控制返回消息
#define MSG_CONTROLRETURN_MODBUS WM_USER + 2	//自定义modbus控制返回消息,因为MODBUS返回较特殊所以单独定义
const int LISTITEM_COUNT = 300;			//显示得到数据的列表项数目

//**************************旧参数结构**********************************//
//为和以前的文件大小保持一致,把下面定义中unsigned int改成unsigned short//
//**************************旧参数结构**********************************//

struct ZLP_YX_COE{
	char Name[17];  //名称
	char Control;   //通用控制
	//D7=1  开关闭合时允许报警
	//D6=1  开关断开时允许报警
	//D3=1  状态报警
	//D2=1  串行口2发送禁止
	//D1=1  串行口1发送禁止
	//D0=1  串行口0发送禁止
	char OnPtr;   //开关闭合报警指针
	char OffPtr;  //开关断开报警指针
};

struct ZLP_YC_COE{
	char Name[17];            //名称
	char Control;             //通用控制
	//D7=1  允许越上限报警
	//D6=1  允许越下限报警
	//D3=1  交流通道采直流量
	//D2=1  串行口2发送禁止
	//D1=1  串行口1发送禁止
	//D0=1  串行口0发送禁止
	unsigned short Coe;         //系数
	unsigned short Zero;        //零点
	unsigned short Scale;       //满值
	char Unit[7];             //单位
	char Dot;                 //小数位数
	unsigned short UnderLimit;	//下限
	unsigned short UpperLimit;  //上限
	unsigned char UnderPtr;   //下限报警指针
	unsigned char UpperPtr;   //上限报警指针
};

struct ZLP_YK_COE{
	char Name[17];         //名称
	char Control;          //通用控制
	unsigned short ACTTime;  //继电器动作时间
};

struct ZLP_YT_COE{
	char Name[17];     //名称
	char Control;      //通用控制
};

struct ALARM_COE{
	char Display[20];  //报警显示内容
	char Sound[7];     //语音报警内容
	char Control;      //通用控制
};

struct ZLP_COE{
	struct ZLP_YX_COE YX_Coe[96];
	struct ZLP_YC_COE YC_Coe[96];
	struct ZLP_YK_COE YK_Coe[48];
	struct ZLP_YT_COE YT_Coe[16];
	struct ALARM_COE  Alarm_Coe[64];
	unsigned short Sample_Time;  //历史数据保存间隔时间,单位:分(10-60)
	unsigned char FreeArea[1024];
	unsigned short CheckSum;
};

const int YXCOE_COUNT = 97;
const int YCCOE_COUNT = 97;
const int YKCOE_COUNT = 49;
const int YTCOE_COUNT = 17;
const int ALARMCOE_COUNT = 65;
//**************************旧参数结构**********************************//


/************************************************************************/
/* 下面这些结构是新的0241结构,以前的也要保留                           */
/************************************************************************/
struct MSU_COE{
	struct ZLP_YX_COE YX_Coe[16];
	struct ZLP_YC_COE YC_Coe[16];
	struct ALARM_COE  Alarm_Coe[16];
};

struct DCU_COE{
	struct ZLP_YX_COE YX_Coe[16];
	struct ZLP_YC_COE YC_Coe[8];
	struct ALARM_COE  Alarm_Coe[16];
};

struct ACU_COE{
	struct ZLP_YX_COE YX_Coe[8];
	struct ZLP_YC_COE YC_Coe[16];
	struct ALARM_COE  Alarm_Coe[16];
};

struct YXU_COE{
	struct ZLP_YX_COE YX_Coe[56];
	struct ALARM_COE  Alarm_Coe[16];
};

//05-1-31新增
struct LOCAL_COE{
	struct ZLP_YX_COE YX_Coe[32];
	struct ZLP_YC_COE YC_Coe[32];
	struct ALARM_COE  Alarm_Coe[32];
};//05-1-31新增


/************************************************************************/
/*2005-10-11京顺要求把交流采集单元的遥信再增加8个,并且为了和已出厂的兼容
增加的内容要放在原来的预留字段处,因此定义下面结构                      */
/************************************************************************/
struct ACU_COE_YX{
	struct ZLP_YX_COE YX_Coe[8];
};
struct DF0241_COE{
	struct LOCAL_COE LOCAL_Coe;
	struct MSU_COE MSU_Coe[8];//充电机控制单元
	struct DCU_COE DCU_Coe[8];//交直流采集单元
	struct ACU_COE ACU_Coe[4];//交流采集单元
	struct YXU_COE YXU_Coe[8];//遥信采集单元
	unsigned short Sample_Time;  //历史数据保存间隔时间,单位:分(10-60)

	struct ACU_COE_YX ACU_Coe_YX[4];//交流采集单元新增遥信
	
	unsigned char FreeArea[384];
	unsigned short CheckSum;
};

/************************************************************************/
/*                                                                      */
/************************************************************************/


#define SETPARA ((CMainFrame*)AfxGetMainWnd())->SetPara(p);
#define SETDF0241PARA \
	((CMainFrame*)AfxGetMainWnd())->SetDF0241Para(p);\
	SetModified();


const BYTE HEAD_DF0420 = 0x7E;	//0420帧头

//组帧
const BYTE SMS_CALL	= 100;	//召唤短消息模块初始设置
const BYTE SMS_SET= 101;	//短消息模块设置
const BYTE SMS_RESET= 102;	//短消息模块复位

const BYTE QUERY_CLOCK = 1;		//对钟
const BYTE QUERY_YK_SELECT = 2;	//遥控选择
const BYTE QUERY_YK_EXECUTE = 3;//遥控执行
const BYTE QUERY_YK_CANCEL = 4;	//遥控取消
const BYTE QUERY_YT = 5;		//遥调
const BYTE QUERY_YCYXSOE = 6;	//一般查询

const BYTE PARA_UPLOAD_MSU = 10;//MSU参数上装
const BYTE PARA_UPLOAD_DCU = 11;//DCU参数上装
const BYTE PARA_UPLOAD_ACU = 12;//ACU参数上装
const BYTE PARA_DOWNLOAD_MSU = 13;//MSU参数下装
const BYTE PARA_DOWNLOAD_DCU = 14;//DCU参数下装
const BYTE PARA_DOWNLOAD_ACU = 15;//ACU参数下装
const BYTE PARA_DOWNLOAD_ALARMER = 16;//报警控制器参数下装
const BYTE PARA_UPLOAD_ALARMER = 17;//报警控制器参数下装

const int  PARA_COUNT = 34;//参数上下装对话框中的最大编辑框数目
const int  PARA_COUNT_MSU = 26;
const int  PARA_COUNT_DCU = 12;
const int  PARA_COUNT_ACU = 10;
//参数保存后打开根据存储的个数判断是否是0241参数格式的文本,即该文本文件中至少有8+1(模块类型)
//个数值,如果以后再增加了新的类型,PARA_COUNT_MIN需要修改成最少个数的参数
const int  PARA_COUNT_MIN = PARA_COUNT_ACU;

#pragma pack(1)
struct MSU_PARA{
	BYTE Head;           // "MSU"

	unsigned short  V_Over;         // 均充电压(V)(带一位小数位)
	unsigned short  V_Out;          // 浮充电压(V)(带一位小数位)
	unsigned short  I_Over;         // 限流均充电流(A)(带一位小数位)
	unsigned short  I_Out;          // 均充电流下限(A)(带一位小数位)
	unsigned short  TO_Over_V;      // 转均充电压(V)(带一位小数位)
	unsigned short  HY_time;        // 恒压均充时间(分)
	unsigned short  FD_To_Over;     // 转均充放电时间(分)
	unsigned short  Charge_Period;  // 电池均充周期(天)(禁止周期均充时为0)
	unsigned short  FLQ1Rate;       // 分流器1额定电流(A)
	unsigned short  FLQ2Rate;       // 分流器2额定电流(A)
	BYTE			MKI_rate;       // 整流模块额定电流(A)

	BYTE			MK_Type;        // 模块类型
	
	BYTE			DCP_To_FLQ;    // DCP控制分流器选择位(0:FLQ1,1:FLQ2)

	BYTE			Center_Temp;    // 温度补偿中心温度(℃)
	BYTE			Temp_width;     // 温度补偿范围(℃)
	unsigned short  Slope;          // 温度补偿系数(mV/℃)
	unsigned short  Battery_Cap;    // 电池容量(AH)
	//unsigned short  V_Low;          // 下限电压(V)

	unsigned short  Battery_cut;    // 电池切断电压(V)(带一位小数位,为0时禁止切断)(48V系统)
	unsigned short  Load_cut;       // 负载切断电压(V)(带一位小数位,为0时禁止切断)(48V系统)
	unsigned short  Battery_connect;// 电池恢复电压(V)(带一位小数位)(48V系统)
	unsigned short  Load_connect;   // 负载恢复电压(V)(带一位小数位)(48V系统)

	//////////////////////////////////////////////////////////////////////////
	//以下是徐红春2005-6-1要求增加
	BYTE YXANot;					// 遥信1取反系数(某位为1取反)
	BYTE YXBNot;					// 遥信2取反系数(某位为1取反)
	
	//以下是徐红春2005-6-23要求增加
	BYTE MK_Num;         // 模块数量
	BYTE MKIS_Min;       // 模块总有效电流(A)
	BYTE MKI_Min;        // 单模块有效电流(A)(带一位小数位)

	unsigned short  temp1;          // 备用参数1
	unsigned short  temp2;          // 备用参数2
	unsigned short  temp3;          // 备用参数3
	unsigned short  temp4;          // 备用参数4
	//////////////////////////////////////////////////////////////////////////

	unsigned short  CheckSum;
};

struct DCU_PARA{
	BYTE Head;           // "DCU"

	unsigned short  ACV_High;       // 交流电压告警上限(V)(带一位小数位,不告警时为0)
	unsigned short  ACV_Low;        // 交流电压告警下限(V)(带一位小数位,不告警时为0)
	unsigned short  DCV_High[3];    // 直流电压告警上限(V)(带一位小数位,不告警时为0)
	unsigned short  DCV_Low[3];     // 直流电压告警下限(V)(带一位小数位,不告警时为0)
	unsigned short  ACI_High;       // 交流电流告警上限(A)(带一位小数位,不告警时为0)
	unsigned short  ACI_Rate;       // 交流电流互感器额定输入(A)(带一位小数位)(In/4V)

	//////////////////////////////////////////////////////////////////////////
	//以下是徐红春2005-6-1要求增加
	BYTE YXANot;					// 遥信1取反系数(某位为1取反)
	BYTE YXBNot;					// 遥信2取反系数(某位为1取反)
	unsigned short  temp1;          // 备用参数1
	unsigned short  temp2;          // 备用参数2
	unsigned short  temp3;          // 备用参数3
	unsigned short  temp4;          // 备用参数4
	//////////////////////////////////////////////////////////////////////////
	unsigned short  CheckSum;

};

struct ACU_PARA{
	BYTE Head;           // "ACU"

	unsigned short  ACV_High[2];    // 交流电压告警上限(V)(带一位小数位,不告警时为0)
	unsigned short  ACV_Low[2];     // 交流电压告警下限(V)(带一位小数位,不告警时为0)
	unsigned short  ACI_High[2];    // 交流电流告警上限(A)(带一位小数位,不告警时为0)
	unsigned short  ACI_Rate[2];    // 交流电流互感器额定输入(A)(带一位小数位)(In/4V)

	//////////////////////////////////////////////////////////////////////////
	//以下是徐红春2005-6-1要求增加
	BYTE YXANot;					// 遥信1取反系数(某位为1取反)
	BYTE YXBNot;					// 遥信2取反系数(某位为1取反)
	unsigned short  temp1;          // 备用参数1
	unsigned short  temp2;          // 备用参数2
	unsigned short  temp3;          // 备用参数3
	unsigned short  temp4;          // 备用参数4
	//////////////////////////////////////////////////////////////////////////
	unsigned short  CheckSum;
};
//=====================================================
//报警控制器参数20060310
//#pragma pack(push,GrpSta,1)

typedef struct tagGroupStationPara //
{
	BYTE  Head;              //0x55
    DWORD Alarm32s_Enable;//32路报警输入的报警允许,4Byte
    BYTE  FangQu_BCHControl_ID[32];//防区布撤防控制号
    DWORD Alarm_Area[32];//32路报警输入的防区号,某BIT为一代表在对应防区
    DWORD Node_Out[32];//32路报警输入的空节点输出号,某BIT为一代表对应此路输出
    WORD  Alarm_Ring_Delay;//报警停止后,响铃延时时间
  	DWORD ALarm_Status;//当前布撤防状态
	BYTE  YxNotA;
	BYTE  YxNotB;  
	BYTE  YxNotC;
	BYTE  YxNotD; 
	char  StandBy[15];
	WORD  CrcCode;      // CRC校验码
}GROUPSTATION,*LPGROUPSTATION;

//============================================
#pragma pack()

//报警控制器数据返回时标识当前操作类型
const BYTE ALARMER_DOWNLOAD_FAIL = 1;
const BYTE ALARMER_DOWNLOAD_SUCCESS = 2;
const BYTE ALARMER_UPLOAD_FAIL = 3;
const BYTE ALARMER_UPLOAD_SUCCESS = 4;

#define MSG_DOWNLOADRETURN WM_USER + 3//自定义参数下装返回消息

const int MAX_BUF_LEN = 1024*2;
const int BUF_LEN = 1024;
const int SEND_EDIT_LEN = 1024;//手动发送时EDIT中字符数目

struct MODBUS_PARA{	//modbus规约中的起始地址遥测个数和遥信个数
	WORD start_addr;
	WORD yccount;
	WORD yxcount;
};


//#pragma pack(pop,GrpSta)

/************************************************************************/
/* 短消息模块维护                                                                     */
/************************************************************************/
#define PHONE_NUM 6

typedef struct PARA_AT24C08{
	BYTE Name[24];				//12个汉字的空间
	BYTE Service_number[20];	//短消息服务中心号码
	BYTE Password[6];			//口令 必须是数字的ASII
	BYTE Cellphone_valid[PHONE_NUM];  // PHONE_NUM个手机号码的有效标志
	BYTE Cellphone_NO[PHONE_NUM][20]; // PHONE_NUM个手机号码
	BYTE Contol_key;					//备用控制字,暂时没有使用	
	//unsigned short  Crccode;			// 校验码
}SMS_SETUP;

const BYTE GONGZHUANG_YCOUNT = 32;//工装遥测个数
const BYTE GONGZHUANG_YXOUNT = 64;//工装遥信个数

const BYTE GONGZHUANG_BOARD_MASTER = 1;//主控板
const BYTE GONGZHUANG_BOARD_SIGNAL = 2;//信号板

//工装数据返回时标识当前操作类型
const BYTE GONGZHUANG_TEST_YT = 1;
const BYTE GONGZHUANG_TEST_I2C = 2;
const BYTE GONGZHUANG_TEST_SPI = 3;
const BYTE GONGZHUANG_TEST_ADDRLINE = 4;
const BYTE GONGZHUANG_TEST_CLOCK = 5;
const BYTE GONGZHUANG_TEST_COMM = 6;
const BYTE GONGZHUANG_TEST_CLOCKCALL = 7;
const BYTE GONGZHUANG_TEST_YCYX = 8;
const BYTE GONGZHUANG_TEST_BUZZER = 9;

#define GZ_TEST_OK _T("测试结果:正确")
#define GZ_TEST_ERROR _T("测试结果:错误")

#define MSG_GZWND_DESTROY WM_USER + 4//自定义工装窗口销毁返回消息

#endif

⌨️ 快捷键说明

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