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