📄 new_communication.h
字号:
/********************************************************************
*文件名:communication.h 自定义头文件 *
*功能:实现通讯进程中公共变量的定义 *
*完成日期:2004.7.18 *
*********************************************************************/
#define WORD unsigned int
#define BYTE unsigned char
/*定义管道pipe端口*/
#define FIFO_NAME "/tmp/my_fifo" /*发送控制命令管道*/
#define CLIENT_NAME "/tmp/cli_fifo" /*控制成功后返回应答管道*/
#define INF_NAME "/tmp/inf_fifo" /*发布小区信息管道*/
#define REPLY_NAME "/tmp/reply_fifo"/*应答管道*/
#define ANNIU_NAME "/tmp/anniu_fifo"/*紧急按钮管道*/
#define INIT_NAME "/tmp/init_fifo" /*初始化信息管道*/
#define BUFFER_SIZE 20
#define PIPEBUFFER_SIZE 256
#define min_cell_energy 1500 /*电池截止电压毫伏为单位*/
#define BAUDRATE B19200 /* 伯特率设定被定义 */
#define MODEMDEVICE "/dev/ttyS1" /* 定义正确的序列埠 */
#define _POSIX_SOURCE 1 /* POSIX 系统相容 */
#define FALSE 0
#define TRUE 1
#define NodeNum 16 /*zigbee的子网中的节点数*/
#define NetNum 1 /*zigbee的子网数*/
#define SetInfNum 3 /*网页上保存小区信息的数量*/
/*报警命令相关设置*/
#define alarm_set_mode 0xff /*设防功能码*/
#define alarm_cancel_mode 0x01 /*撤防功能码*/
#define alarm_reply_data 0xfe /*设防状态下应答报警功能码*/
#define alarm_unreply 0x33 /*撤防状态下应答报警功能码*/
/*按节点实现功能不同来划分的节点功能编码*/
#define inquire_equ_fun_code 0x80 /*查询子节点设备种类电池电量功能码*/
#define report_equ_fun_code 0x41 /*报告子节点设备种类电池电量功能码*/
#define inquire_data_fun_code 0x82 /*查询子节点数据功能码*/
#define report_data_fun_code 0x63 /*报告子节点数据功能码*/
#define set_ao1_order 0xc4 /*设置模拟量输出命令功能码*/
#define respond_a01_order 0x45 /*应答模拟量输出命令功能码*/
#define set_relay_order 0xac /*设置继电器开关命令功能码*/
#define respond_relay_order 0x2d /*应答继电器开关命令功能码*/
#define amend_pulse_count1 0xf2 /*修改脉冲量1功能码*/
#define amend_pulse_count2 0xf3 /*修改脉冲量2功能码*/
#define report_switch1_order 0x36 /*报告开关量1功能码*/
#define report_switch2_order 0x37 /*报告开关量2功能码*/
#define respond_switch1 0x98 /*应答开关量1功能码*/
#define respond_switch2 0x99 /*应答开关量2功能码*/
/*初始化节点编码=节点号+节点功能编码*/
#define inquire_encode1 0x00
#define inquire_encode3 0x10
TIME_STRUCT ds_1302_time;
/*子网中每个节点定义一个存放相关信息的结构体*/
struct
{
BYTE zigbee_node; /*zigbee出厂配置节点号*/
BYTE real_node; /*网络中实际节点号*/
WORD flag; /*节点存在标志*/
WORD data_flag;
WORD timeout; /*时间溢出设定*/
WORD data_timeout;
WORD cell; /*节点电池电量*/
BYTE *state; /*节点状态*/
BYTE data[10]; /*用来存放节点修改表底的数据*/
unsigned long int node_data;/*节点数据*/
BYTE *funtion; /*节点功能*/
BYTE show_node_time[20];/*显示节点状态改变时间*/
}NetNode[NetNum][NodeNum];
BYTE NameStr[20]; /*存放用户名*/
BYTE AddressStr[20];/*存放用户地址*/
BYTE DstStr[20]; /*存放目的邮箱ip地址*/
BYTE SrcStr[20]; /*存放源邮箱ip地址*/
BYTE DsSelectTime[3];/*数据采集时间设定选择*/
BYTE DsHourStaStr; /*采集数据开始小时*/
BYTE DsHourEndStr; /*采集数据结束小时*/
BYTE DsMinStaStr; /*采集数据开始分钟*/
BYTE DsMinEndStr; /*采集数据开始分钟*/
BYTE AnniuTimeBuffer[30];
WORD TimeSize;
int AlarmNodeNum,AlarmNetNum;
BYTE PipeInfBuffer[SetInfNum+1][PIPEBUFFER_SIZE+1];/*存储小区信息缓冲区*/
static volatile WORD zig_node[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
static const char my_1302_days[7][4] = {"Sun", "Mon", "Tue", "Wed", "Thu", \
"Fri", "Sat"};
struct sigaction saio; /* definition of signal action */
static WORD alarm_flag=0;/*报警标志定义为静态变量*/
static WORD alarm_tran_flag = 0;
static WORD ds_inf_flag = 1;
static WORD anniu_flag = 0; /*紧急按钮标志*/
static WORD testdev_flag = 0;
static int wait_flag=TRUE; /* 没收到信号的话就会是 TRUE */
static int leddev; /*安防指示灯驱动的文件描述符*/
static BYTE IntervalTime = 01;
void Get_Mail_Address(void); /*获取邮件地址*/
void Get_User_Inf(void); /*获取用户信息*/
void Signal_Handler_IO (int status); /* 定义讯号处理程序 */
int Alarm_Inf(BYTE pac_buffer[20]);/*定义报警处理函数*/
void Renew_Html_Inf(BYTE PipeBuffer1[PIPEBUFFER_SIZE],int num);/*更新网页信息*/
void Renew_Html(void); /*更新网页*/
void Control_Order_Send(int fd,BYTE PipeBuffer[BUFFER_SIZE]); /*控制命令传送*/
int Receive_Packet(int fd,int netwk1,BYTE AskData[6]);/*接收子节点脉冲量模拟量*/
BYTE Bcd2hex(BYTE x1,BYTE x2);
WORD Bcd2int(BYTE x);
BYTE Bcd2char(BYTE *x);
BYTE Char2long(BYTE Data[10]);
BYTE Bit_Xor(int len,BYTE XorData[20]);/*按位异或,进行数据校验*/
void Get_Collect_Time(void);/*获取数据采集设定时间*/
void Anniu_Inf_Send(void); /*按钮报警信息发送*/
void Judge_Node_Type(int i,int j,BYTE NodeFuntionCoding);
BYTE *Send_Mail_Packet(BYTE netwk,BYTE node,BYTE * MailDataPtr);/*发送邮件数据包*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -