?? 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 + -