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

📄 common.h

📁 采用MINIGUI开发的一套GUI界面
💻 H
字号:
//-------------时间----------------------------
#define  _ID_TIMER 901
#define  _ID_TIMER_HIST ( _ID_TIMER+1 )
#define  _ID_TIMER_CARDCOM  ( _ID_TIMER+2 )
#define  _ID_TIMER_ALARM ( _ID_TIMER+3 )
 
long nowseconds;
long oldseconds;
unsigned int counter_temp;//定时自动退出
//-----------页面-------------------------
#define  WIDTH  640  
#define  HEIGHT  480 
#define  TOP           40 
#define  TOP2           40 
#define  LEFT 80
#define  BOTTOM  40
#define  BOTTOM2           40 

#define LEFT_W 80
#define LEFT_H 74  //440/6
#define LEFT_BN_H      LEFT_H
#define BN_						80 
#define BNX						BN_ 
#define BNY						0   
#define BNWidth						60
#define BNHeight						30
#define  ST_W   60  //静态控件宽度
#define ST_H  25

#define  CONFIG_MODE 0
#define  PACT_MODE 1   //默认页面
#define  DIGITAL_MODE 2  //数显页面
#define  BAR_MODE 3
#define  RTCURVE_MODE 4
#define  STATIC_MODE 5
#define  HIST_MODE 6
#define  CUMUL_MODE 7
#define  ALERT_MODE 5

#define    ES_DIGIT_ONLY 1 //文本框仅仅允许输入数字的属性
#define    ES_ALPHA_ONLY 2

BOOL bLeftShow;			//左侧菜单是否在显示
BOOL bDoorOpen;		//底侧门已经开了bLeftShow=1
BOOL bfresh_conf;  		//更新组态总页面标志
BOOL Bfreshdisp;
unsigned short last_mode;  //上一页面的显示模式
unsigned short gdisp_mode; //range: 0-5, 0表示不是显示模式
#define  PCHAN_MAX 6			//	显示通道的页面总数
/*定义按键响应*/
 int keydowned;
//组态页面焦点移动
#define  KEY_UP 		SCANCODE_W
#define  KEY_DOWN 	SCANCODE_S
#define  KEY_LEFT	SCANCODE_A
#define  KEY_RIGHT	SCANCODE_D
#define  KEY_ENTER	SCANCODE_ENTER
#define  KEY_EXIT	(SCANCODE_Q)

#define  KEY_PAGE 		SCANCODE_W
#define  KEY_MODE 	SCANCODE_S
#define  KEY_HIST	SCANCODE_A
#define  KEY_EVENT	SCANCODE_D
#define  KEY_STAT	SCANCODE_ENTER

#define  KEY_DOWNLOAD	(SCANCODE_F3)
#define  KEY_CLEAR		(SCANCODE_F4)
#define  KEY_OPERATE	(SCANCODE_F5)
#define  KEY_CONF	(SCANCODE_F6)
#define  KEY_CUMUL	(SCANCODE_F7)
#define  KEY_SEARCH 	(SCANCODE_F7)
#define  KEY_SHUT		SCANCODE_ESCAPE
#define  KEY_LAST	(SCANCODE_F3)
#define  KEY_NEXT		(SCANCODE_F4)
#define  KEY_PARA	(SCANCODE_F5)
#define  KEY_CARD 	(SCANCODE_F6)
#define  KEY_SET	(SCANCODE_F7)
#define  KEY_RETURN		SCANCODE_ESCAPE
#define  KEY_OPEN	(SCANCODE_F9)
#define  KEY_DLEFT	(SCANCODE_F3)
#define  KEY_DRIGHT	(SCANCODE_F4)
//-----------顶端状态栏-------------------
 RECT top_rect;  //状态栏区域
unsigned char  memo[10];  //顶端状态栏  存储百分比
unsigned char  evnt[10];
unsigned char  topinfo[40]; 
unsigned char str_time[20];
unsigned char str_date[20];
unsigned short hour,minu,seco,mont,days;
unsigned short year;

#define dim(x) (sizeof(x) /sizeof(x[0]))
#define MSG_USER1 (MSG_USER+3)
#define MSG_COM   (MSG_USER + 1)
#define MSG_READRECORD   (MSG_USER + 2)

int RealIndex;           //绘图点的 下标
int RealIndex_max;   //点数目最大值
BOOL fullscr;
unsigned short ai_chan_sum;//ai通道总数
unsigned short math_chan_sum;
unsigned short  gchannum;//所有通道总数
unsigned short  gchanpage;//通道页面数,变量
unsigned short  gchanpage_sum;//总页面数


//----------系统用----------------
BITMAP direction_bmp[6];
BITMAP hist_bmp[6];
BITMAP save_bmp;
BITMAP lamp_bmp[3];
BITMAP staticbmp[6];
BITMAP event_bmp[6];
BITMAP formulabmp[24];
BITMAP BarAlertBmp[6];

HWND gMainWnd;
BOOL  bSave;
int interval;   
//报警页面全局变量
unsigned int alarm_id_type;
unsigned short alarm_test_id;


//显示页面有关的变量
int disp_mode;
int disp_direction;
gal_pixel backcolor;
int gzoom;
unsigned short histzoom;
int VLinePos;
BOOL bdispcurve;

//组态页面初始化公共部分
BOOL bmath_dlg;//数学页面对话框是否已经显示
BOOL bai_dlg;
BOOL bdi_dlg;
BOOL b_ai_close;
BOOL b_math_close;
BOOL b_di_close;
HWND math_dlg;
HWND ai_dlg;
HWND di_dlg;

//----------通讯有关---------------------------
/*从仪表来的数据*/
int id;
int channel_max;


BOOL devices_registed;//设备已经注册then =1
BOOL b_com_timeout;
BOOL channel_confisted;//通道已经注册then =1,inited in ChanInit();
BOOL b_wr_config; //读写组态信息状态,当不是读写组态时候,更新实时数据
#define TIMEOUT_COMMUTION 10
int wait_flag;

/*与显示有关*/

unsigned char *line_color;  //显示曲线的颜色
int line_width ;  //显示曲线的宽度
int line_hidth ;  //显示曲线的高度
int display_low;   //通道显示低限值
int display_high;   //通道显示高限值
int display_mode;  //显示模式
BOOL display_horv;   // 1:水平显示;0:垂直显示
unsigned char display_bcolar;  // 背景颜色

/*与工作类型有关*/
BOOL enable_record;  //  1:开始记录量测值;0:停止记录量测值
BOOL enable_alert;   //  1: 记录警报的发生(在事件/警报报表上);0:记录警报的不发生(在事件/警报报表上)
BOOL enable_event;   //  1: 记录事件的发生(在事件/警报报表上);0:记录事件的不发生(在事件/警报报表上)
BOOL enable_sound;   // 1: 蜂鸣器发生;0: 不发生。(可按任意键停)
BOOL enable_report;  //  1:将计数器和加总器的结果汇入报告清单
BOOL start_DO;      //启动数字输出固定在ON状态
int start_OFF;     //启动数字输出固定在OFF状态
int start_DOtoOFF;  //启动数字ON,但事件接触后即回复OFF
int start_timer;      //启动定时器
int start_add_moren;       //启动累加器,以默认值为基数开始累加
int start_add_zero;       //启动累加器,以0为基数开始累加
int start_add;       //启动累加器
int stop_add;       //关闭累加器
int start_count_up;     //启动计数器,累加计数
int start_count_up;     //启动计数器,递减计数
int start_count_moren;     //启动计数器, 以默认值为基数开始计数
int start_count_zero;     //启动计数器, 以0为基数开始计数


unsigned short do_chan_sum;//do通道总数

//设备相关used in :  sysinfo.c meter.c

 #define SetValue(x,y)  	(SendDlgItemMessage(hDlg,x,CB_SETCURSEL,y,0))		


//---------------------------------------
typedef struct{
    	unsigned short  dev_id; 	//通道所属设备地址
     	unsigned short x;		//总览页面的坐标
       unsigned short y;		//总览页面的坐标
       unsigned short width;		//总览页面的数据区宽
       unsigned short height;		//总览页面的数据区高     
  
	int number;  				//通道号码
	int ipv;
	int dot;
	float fpv;

	unsigned char data[20] ;		//数据PV	
	unsigned  short point[640];//曲线显示的点位置,1  屏幕 640 个点
	unsigned  short oldpoint[640];   //用来曲线显示调用时非同时性赋值用
        gal_pixel color;  //通道颜色包括曲线
        gal_pixel  color_old;
	  int pen_width;//曲线宽度
           
}CHANDISP;//
 
CHANDISP *channel_disp; //显示显示设置用


 typedef struct{        
       unsigned char  desc[20];   	//描述
	unsigned short 	fontsize;	//数据字体大小
	unsigned char unit[6];		//单位	
	   	unsigned short enable;
  	int pv_addr;
  	int id;   
	unsigned char data[20] ;		//数据PV
	unsigned char str_pv[12];
	unsigned char  name[10];	//记录文件用,用通道的名字命名
	float fpv;
	unsigned char formation[30] ;
	short ipv;
	int pv;
	unsigned short dot;
                   	float hh_alarm;//400	
                   unsigned short  line1_job1;		//报警上上限
                   unsigned short  line1_job2;
                   unsigned short   hh_relay;      	//磁滞
                   float h_alarm;				//300  inited in the digital.c  
                   unsigned short line2_job1;	  //报警上限
                   unsigned short line2_job2;  
                   unsigned short   h_relay;      //磁滞
                   float l_alarm;//20 //报警下下限
                   unsigned short line3_job1;
                   unsigned short line3_job2;
                   unsigned short   l_relay;      //磁滞
                   float ll_alarm;//10//报警下下限
                   unsigned short line4_job1;
                   unsigned short line4_job2;
                   unsigned short   ll_relay;      //磁滞
	BOOL h_enabled;          //报警登陆使能 
	BOOL hh_enabled;
	BOOL l_enabled;
	BOOL ll_enabled;
       unsigned short alarm_state;   //报警 状态
       unsigned int alarm_num;    //警报条数
       float offset;  //偏移值
       float gain;   //倍增值
	float low;//量程
	  int h_limit;//500  棒图显示范围的上限,与PV值对应
         int l_limit;	
	unsigned short interval;//单位	
	float high;
}CHANCONF;//

CHANCONF *channel_conf; // 通讯注册用 
typedef struct{
	long first;		//数据PV
	 long last;//记录文件用,用通道的名字命名
	unsigned short interval;//单位	
	int number ;
	 unsigned short point[30];
} STRURECORD;

typedef struct{
	unsigned char data[20] ;		//数据PV
	unsigned char  name[10];//记录文件用,用通道的名字命名
	unsigned char unit[5];//单位	
	short ipv;
	unsigned short dot;
	short point[640];	
	unsigned short guage_x;//刻度
	unsigned short guagedata;//刻度	 
	unsigned short  number ;  //本通道历史页面有效点个数
	unsigned short  index_num ;    //显示需要的索引总个数

	STRURECORD *record;
	short record_type;  //0: 关闭记录,1表示实时,2 平均// 3表示最小,4表示最大值		
	int interval; //不同的记录间隔 ==speed
	FILE *fd;


} CHANNALHIST;
CHANNALHIST *channel_hist;

//累积信息 
typedef struct{     
unsigned char name[5];  //累积通道的名字
int interval;   //累积通道的时间间隔
int s_year;     //累积通道的开始时间
int s_month;
int s_day;
int s_hour;
int s_minute;
int s_second;
}  CU_DATA;
CU_DATA cu_data[10]; 

struct channel{
	unsigned char channel_name[5]; //这个通道的名字
       unsigned char *pv;           
       float pvvalue;
	};
struct thermo {
unsigned char *name;   //传感器的名字
unsigned char *unit;    //传感器的单位
int ranged;    //传感器的量程下限
int rangeu;    //传感器的量程上限
};


//设备属性
typedef struct{ 
		int PV1; 
		 int PV2; 
		 int PV3; 
		int PV4; 
    unsigned int wp_type ;         //WP.DEV中的TYPE值。设备类型 ."000"    -"999"方便查询wp.dev文件
    int enable;				//设备使能
    int boudrate;				//通讯波特率
    int dev_addr;				//设备地址
    int dev_total_channel;    //本设备启用了的通道总数
    int first_channel_id;//本设备第一个通道的ID
    int dev_id;		//序号ID
    int dev_type;//  取 WP-R协议中类型值   51 表示流浪卡,11表示数显卡
    char dev_name[30];  //仪表的名字
    int erro_type;//通讯错误类型
}DEVICES_STRU;
DEVICES_STRU * devicesinfo;
typedef DEVICES_STRU *pDEVICES_STRU;


typedef struct{
BOOL flag;//是否有输出
int dev_id;  //来源哪个设备

}DO_STRU;


DO_STRU * doinfo;
typedef struct{
      BOOL flag;
} TIMERINFO;
TIMERINFO *timer_stat; //显示用


//公用的逻辑结构
typedef struct{                                           
  unsigned char*  spClassName;              //Control name         
  DWORD  dwStyle;                 //style                 
  int    conx;                    //x position            
  int    cony;                    //y position            
  int    conw;                     //width                
  int    conh;                    //height      
    int    conID;                   //control ID         
    unsigned char*  spCaption;               //Caption name        
    int list_height;
    HWND   hwndControl;                        
}CTL;   

//初始化用到的参数



⌨️ 快捷键说明

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