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

📄 main.h

📁 工厂环境污染控制数据采集器
💻 H
字号:
#ifndef __MAIN_H 
#define __MAIN_H
#include "type.h"
#include <rtl.h>
///////////////////////////////////////////////////
#define FILE_R  1   //读
#define FILE_W  4   //写
#define FILE_A  8   //添加 或 更改
//////////////////菜单状态 定义////////////////////
#define SHOW_MAIN_VIEW_1   1
#define SHOW_MAIN_VIEW_2   2
#define SHOW_MAIN_VIEW_3   3
#define SHOW_MAIN_VIEW_4   4
#define SHOW_MAIN_VIEW_5   5
#define SHOW_MAIN_VIEW_6   6
#define SHOW_MAIN_VIEW_7   7
#define SHOW_MAIN_VIEW_8   8
#define SHOW_MAIN_VIEW_9   9

#define SHOW_1_VARIABLE_STATUS  10
#define SHOW_2_VARIABLE_STATUS  11
#define SHOW_3_VARIABLE_STATUS  12
#define SETTING_MENU1     13
#define SETTING_MENU2     14
#define SETTING_MENU3     15
#define SETTING_MENU4     16
#define SETTING_MENU5     17
#define SETTING_MENU7     18
#define SETTING_MENU10    19
#define SETTING_MENU16    20
#define SETTING_MENU17    21
#define SETTING_MENU18    22
#define SETTING_MENU19    23
///////////////////////////////////////////////////
typedef struct {
 BYTE port_num;//端口号
 BOOL flgUsed;
 unsigned char p_id[3];//  污染物编号,与该端口绑定的污染物ID
 unsigned int   baud;  
 unsigned int flgChk;//奇偶校验 0-无,1-奇,2-偶
 unsigned int databits;
 unsigned int stopbits;
} COM_PORT;	//串口
typedef struct {
 BYTE port_num;//端口号
 BOOL flgUsed;
 unsigned char p_id[3];//与该端口绑定的污染物ID
 float port_maxval;
 float port_minval;	  //芯片提供的是0~5V,实际是1~5V是否需要负数?
 float port_offset;//偏移 
} AD_PORT; //AD

typedef struct {
 BYTE port_num;//端口号
 BOOL flgUsed;
 unsigned int binddevid;//与该端口绑定的设备ID
 unsigned int inval;//输入不敷出1-高电平,0-低
} IO_PORT;

typedef struct {
 BYTE port_num;//端口号
 BOOL flgUsed;
 unsigned int binddevid;//与该端口绑定的设备ID
 unsigned int outval;//输出1-高电平,0-低
} OUTPUT_PORT;

typedef struct {
 unsigned char p_id[3];//  污染物编号
 BOOL flgUsed;//使用标志
 unsigned char uint[6];//单位
 unsigned char p_name[20];//最长10个汉字
 float p_alarmup;//报警上限
 float p_alarmdown;//报警下限
 float p_up;// 上限,超过则为异常
 float p_down;//下限
 } POLLUTANT;

 typedef struct {
 	BOOL flgUsed; 
	unsigned int dev_id;
	BOOL flgCanControl;//是否受控
	unsigned char	support_p_id[3];//支持的污染物
	BYTE interfacetype;//接口类型0-AD,1-COM,2-DI,3-DO
	BYTE portnum;//端口号
 } DEV_INFO;//仪器

typedef struct {
	unsigned int  log_no;      //有255种日志
	unsigned int type;//日志类型 0-仪器,1-
	unsigned char log_desc[60];		//60个字节的日志描述
} SYS_LOG_DICT;

typedef struct {
	unsigned char measuretime[12];		//采集时间yymmddhhmmss
	unsigned int  log_no;            //有255种日志
} SYS_LOG;

typedef struct {
 unsigned char p_id[3];//  污染物编号
 unsigned char measuretime[12];	//采集时间
 float val; 
} MEASUREDATA_UINT;//测量数据

/*系统配置结构*/
typedef struct {
 //站点信息
 unsigned int site_type;
 unsigned char site_name[30]; 
 unsigned int area_id;
 unsigned int corp_id;
 unsigned int site_id;
 unsigned int site_timeout;//通信超时长度	
 unsigned int site_timeout_reconnect;//通信超时次数
 //远程通信方式定义
 unsigned int center_num;//连接中心数量
 //....待定
 //网络接口定义
 unsigned char localip[4]; 
 unsigned char netmask[4]; 
 unsigned char gateip[4];
 unsigned char arp_addr[17];
 unsigned char dns1[4];
 unsigned char dns2[4];
 //串口定义
 COM_PORT com_port[5];
 //4~20mA端口定义
 AD_PORT ad_port[12];
 //OUTPUT端口定义 
 OUTPUT_PORT out_port[4];
 //IO端口定义 
 IO_PORT io_port[8];
 //污染物定义
 unsigned int pollutantnum;
 POLLUTANT pollutant[10];//预先支持10种污染物

} _SITE_CONF; 

/*******************公共函数定义 *********************/
/**************UTIL***********************************/
//4字节转浮点数
extern float bytetofloat(unsigned char *buf);
//浮点数转4字节
extern unsigned char * flaottobyte(float val);
//16进制字符串转整形
extern int hexstrtoint(unsigned char *buf);
//整形转16进制
extern char * inttohexstr(int val);
/*************EEPROM 存储相关函数 ************************/
extern void initeeprom();//初始化EEPROM
extern void setinitflg();
extern void setNoinitflg();
extern BYTE readinitflg();
extern BOOL readinitStatus();//读初始位的状态  0-未初始化
extern void setPassword(char *pw); 
extern char * readPassword();
extern void setinstantflow(float val);
extern float readinstantflow();//读瞬时流量,2个小数位
extern void setinstantvalrecpos(long pos);
extern long readinstantvalrecpos();
extern void setinstantvalreclen(int len);  //设置瞬间值存储位置
extern void setlastreboottime(char *rt);//设置最后重新启动时间
extern char *readlastreboottime();
extern void setlastdayreporttime(char *rt);//设置最后日值上报时间
extern char *readlastdayreporttime();
extern void setlasthourreporttime(char *rt);
extern char *readlasthourreporttime();
extern void setlastminreporttime(char *rt);//min
extern char *readlastminreporttime();
extern void setlastinstantreporttime(char *rt);//instant
extern char *readlastinstantreporttime();
extern void setlastlogreporttime(char *rt);
extern char * readlastlogreporttime();
extern void setlastreporttime(char *rt);
extern char * readlastreporttime();
extern void setlastalarmreporttime(char *rt);
extern char * readlastalarmreporttime();
/**************瞬间数据存储,存在EEPROM中 *******************************/
extern void addinstantdata(char *rt, char *buf);
extern char * queryinstantdata(char *rt);
/***********SD存储相关**************************************/
//extern void config();//读取配置文件并配置系统
extern void savecfgtofile(_SITE_CONF *site_conf);//保存整个配置文件,保存前先备份原配置文件 
extern void addmindata(char *rt, char *buf);//添加一条五分钟历史数据
extern void updatemindata(char *rt, char *buf);
extern void delmindata(char *rt);
extern void addhourdata(char *rt, char *buf);//添加一条小时历史数据 
extern void updatehourdata(char *rt, char *buf);//添加一条小时历史数据 
extern void delhourdata(char *rt);
extern void adddaydaydata(char *rt, char *buf);
extern void updatedaydata(char *rt, char *buf);//添加一条日历史数据 
extern void deldaydata(char *rt);
extern void addlogdata(char *rt, char *buf);
extern void updatelogdata(char *rt, char *buf);//添加一条日志历史数据 
extern void dellogdata(char *rt);
extern void addalarmdata(char *rt, char *buf); //添加一条报警历史数据 
extern void updatealarmdata(char *rt, char *buf);
extern void delalarmdata(char *rt);
extern void addexceptionmsg(char * rt, char *buf);//加一条异常	 
extern void updateexceptionmsg(char *rt, char *buf);
extern void delexceptionmsg(char *rt);	
extern void addintervaldata(char * rt, char *buf);//加一条间段数据,例如COD 
extern void updateintervaldata(char *rt, char *buf);
extern void delexcintervaldata(char *rt);	 
/****************查询相关*****************************/
extern char * querymindata(char *rt1, char *rt2);	//查询某段时间的数据
extern char * queryhourdata(char *rt1, char *rt2);
extern char * querydaydata(char *rt1, char *rt2);
extern char * querylogdata(char *rt1, char *rt2);	
extern char * queryalarmdata(char *rt1, char *rt2);		
extern char * queryexceptionmsg(char *rt1, char *rt2);			
extern char * queryintervaldata(char *rt1, char *rt2);		
/****************显示应用层****************************/
extern void showexception(char *rt, char * buf);//显示一条异常信息,按任意键后该信息消失并进入相关页面 
//EASUREDATA_UINT还是char *buf? @数据,@数据类型(0分钟,1小时,2日,3月),@显示模式(0表格,1曲线)
//.....
extern void show_start_screent(void);//显示启动界面
extern void showmainwnd_0();//运行第1屏,流量 ,COD,PH
extern void showmainwnd_1();//显示第2屏,状态	
extern void showmainwnd_2();//当天COD曲线 
extern void showmainwnd_8();
extern void showmainwnd_9();
//.....
extern void showsetup_flow();//流量计算设置
extern void showsetup_pollutant();//污染物设置 ->端口设置->协议设置
extern void showsetup_siteprop();//站点设置:ID,时间等
extern void showsetup_siteprop_idandtime();//ID和时间设置
extern void showsetup_siteprop_remotecenter();//设置远程站点
extern void showsetup_siteprop_localnet();//本机IP设置
extern void showsetup_debugandquery();//调试,控制,查询页面
extern void showsetup_debugandquery_debug(); //调试
//.....
extern void showquery_historydata(MEASUREDATA_UINT *muint, BYTE datatype, BYTE dispmode); 
extern void showquery_logdata(char *buf);
extern void showquery_exceptiondata(char *buf);
extern void showquerty_alarmdata(char *buf);
extern void showquery_deviceoperinterface();//显示仪器控制界面,例如按某个键可启动COD采样
extern void showquery_dointerface();//显示DO控制界面
extern void showquery_diinterface();//显示DI界监视面
extern void showquery_adtestinterface();//显示AD调试界面
extern void showquery_remotecomminterface();//显示远程通信监视往来数据
extern void showquery_portcomminterface();//显示串口监视界面
/****************流量计算****************************/
//计算累计流量,@槽型,@槽号,@槽高
extern float calinstant(BYTE gutter_type, BYTE gutter_no, float gutter_high);
/****************************************************************************
*计算累计值@瞬间值(m3/h),@上次累计值(m3),@每次计算的间隔时间(s):累计流量=((瞬间值/3600)*间隔时间)+上次累计值
*支持4~20mA流量的计算,采集器和流量合一的情况
****************************************************************************/
extern float calmilage(float finstant, float flastmilage,int interval);
/**************仪器操作*****************************************/
extern BOOL sample(DEV_INFO	 devinfo);	 //采样
extern MEASUREDATA_UINT getlastdata(DEV_INFO devinfo);	//取得最后数据
extern MEASUREDATA_UINT * getdata(DEV_INFO devinfo, char *rt1, char *rt2);	//取得某段时间数据
extern BOOL settime(DEV_INFO devinfo, char *rt);	//时间设置
extern BOOL setreboot(DEV_INFO devinfo);//远程复位
extern BOOL setcalibration(DEV_INFO devinfo);//远程校准 
/*******************曲线 界面***************************/
extern void GUI_XYLine(int x1, int y1, int x2, int y2);	//从X1,y1到x2,y2划线 
extern void drawaxis(float *axisyval, char *legned, char *Yuint, float *timeaxisseries);//画坐标轴 	
extern void loaddata( MEASUREDATA_UINT *muint, int len);//muint 数据列,len 数据数量
/*****************************************************/
#endif

⌨️ 快捷键说明

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