Explorar o código

隔爆电源交流电掉电告警功能

chensongchao %!s(int64=6) %!d(string=hai) anos
pai
achega
9ea7aebc03

+ 11 - 0
ant.h

@@ -1,3 +1,6 @@
+/**
+ * 分站数据结构 site_list
+ */
 #ifndef _ANT_LIST_HPP_
 #define _ANT_LIST_HPP_
 
@@ -128,6 +131,14 @@ struct site:point,std::enable_shared_from_this<site>
     int m_dimension=0;
     std::shared_ptr<client> m_clt=nullptr;
 	time_t m_time;
+    time_t m_rec_time;              // 接收数据的时间
+    time_t m_lost_time;		        // 丢失时间
+    time_t m_last_send_time;	    // 最后向前端发送时间
+
+    unsigned char m_reader_dir;		// 分站方向,对于大小分站适用
+    unsigned char m_relay_counts;		// 大小分站经过中继数
+    bool m_needpower_alarm;			//是否需要分站电池供电告警功能
+    int  m_tick_count;			    // 分站发生消息的计数器
 
     site(int id=-1);
     int index()const;

+ 2 - 2
area_business.cpp

@@ -130,7 +130,7 @@ struct area_business_restricted:area_business
         }
         evPtr->m_limit_value = 0;
         evPtr->m_cur_value = 0;
-        evPtr->m_is_display = false;
+        evPtr->m_is_display = true;
         evPtr->m_status = EVENT_STATUS::ES_START ;
         evPtr->m_cur_time = std::chrono::system_clock::now();
 
@@ -163,7 +163,7 @@ struct area_business_restricted:area_business
         }
         evPtr->m_limit_value = 0;
         evPtr->m_cur_value = 0;
-        evPtr->m_is_display = false;
+        evPtr->m_is_display = true;
         evPtr->m_status = EVENT_STATUS::ES_END ;
         evPtr->m_cur_time = std::chrono::system_clock::now();
         if (oldStatus != -1)

+ 16 - 0
common_tool.h

@@ -73,6 +73,22 @@ public:
 		uint32_t cid = id & (~(type<<32));
 		return type_id_to_str(type,cid);
 	}
+
+    //是否系统网络字节顺序 true=大端(低位在前,高位在后) false=小端(高位在前,低位在后)
+    static bool IsBigEnd()
+    {
+        static int g_big = -1;
+        if (g_big == -1)
+        {
+            g_big = 1;
+            int x=0x12345678; /* 305419896 */
+            unsigned char *p=(unsigned char *)&x;
+            if (p[0] == 0x78) {
+                g_big = 0;
+            }
+        }
+        return g_big == 1;
+    }
 };
 
 class tool_map

+ 3 - 3
mine_module/MineCardManager.cpp

@@ -65,7 +65,7 @@ void CMineCardManager::StartEvent(int evType,int limitVal,int curVal)
     ev_ptr->m_status = EVENT_STATUS::ES_START;	
     ev_ptr->m_cur_value= curVal;
     ev_ptr->m_limit_value = limitVal;
-    ev_ptr->m_is_display = false;
+    ev_ptr->m_is_display = true;
     ev_ptr->m_cur_time = std::chrono::system_clock::now();;
     if (oldState == EVENT_STATUS::ES_END)
     {
@@ -99,7 +99,7 @@ void CMineCardManager::CancelEvent(int evType,int curVal)
     }
     ev_ptr->m_status = EVENT_STATUS::ES_END;	
     ev_ptr->m_cur_value= curVal;
-    ev_ptr->m_is_display = false;
+    ev_ptr->m_is_display = true;
     ev_ptr->m_cur_time = std::chrono::system_clock::now();;
     event_list::instance()->save_event(ev_ptr);
     if (evType < MAX_MINE_EVENT_NUM)
@@ -237,7 +237,7 @@ void CMineCardManager::OnPersonInMineOverTime(int card_id,int card_type)
     }
     evPtr->m_limit_value = 0;
     evPtr->m_cur_value = 0;
-    evPtr->m_is_display = false;
+    evPtr->m_is_display = true;
     evPtr->m_status = mine->m_is_overtime ? ES_START : ES_END;
     evPtr->m_cur_time = std::chrono::system_clock::now();
 

+ 159 - 0
site_message_handle.cpp

@@ -0,0 +1,159 @@
+//
+// Created by Administrator on 2019/1/14.
+//
+
+#include "site_message_handle.h"
+#include "system_basic_info/SystemAnalysis.h"
+#include "common_tool.h"
+#include "ant.h"
+#include "ya_event.h"
+
+/** 解析 分站发送过来的数据中(分站的信息数据)*/
+void site_message_handle::parse_data_locate_reader(char * DataBuffer, int nLen, int dwConnID,int& nCurPos
+        ,  int& reader_id )
+{
+    LOCATION_SYSTEM_BRANCH(LOCATION_SYSTEM_BRANCH_15);
+#pragma pack(1)
+    // 7字节 从第一个字节开始,分别表示秒、分、时、天、周、月、年
+    struct _LocateInfo
+    {
+        unsigned int site_id;       //分站ID
+        unsigned short time_stamp;  //时间戳(0-65535)
+        unsigned char sec;
+        unsigned char min;
+        unsigned char hour;
+        unsigned char day;
+        unsigned char week;
+        unsigned char mon;
+        unsigned char year;
+        unsigned char site_relation;    //分站类型
+        unsigned char site_state;      //分站状态char
+        unsigned char site_power;      //分站电源类型
+    };
+#pragma pack()
+    _LocateInfo *_pLocateInfo = (_LocateInfo *)(DataBuffer + nCurPos);
+    if (tool_other::IsBigEnd())  //大端
+    {
+        _pLocateInfo->site_id = ntohl(_pLocateInfo->site_id);
+        _pLocateInfo->time_stamp = ntohs(_pLocateInfo->time_stamp);
+    }
+    nCurPos += sizeof(_LocateInfo);
+
+    reader_id = _pLocateInfo->site_id;
+    std::shared_ptr<site> pSite = sit_list::instance()->get(_pLocateInfo->site_id);
+    bool isErrorReader = false;
+
+    if(pSite){
+        //add_socket_to_list(dwConnID, reader_id, DEVICE_TYPE::DT_CARD_READER);
+        LOCATION_SYSTEM_BRANCH(LOCATION_SYSTEM_BRANCH_16);
+    }else{
+        pSite = std::make_shared<site>();
+        pSite->m_id = reader_id;
+        LOCATION_SYSTEM_BRANCH(LOCATION_SYSTEM_BRANCH_17);
+    }
+
+    // 接收数据时间
+    pSite->m_rec_time = time(NULL);
+    m_time_last_rec = pSite->m_rec_time; // 更新最后信号时间
+    // 分站时间戳
+    pSite->m_tick_count = _pLocateInfo->time_stamp;
+    // 分站时间
+    // 7字节 从第一个字节开始,分别表示秒、分、时、天、周、月、年
+    struct tm reader_time;
+    reader_time.tm_sec = _pLocateInfo->sec;
+    reader_time.tm_min = _pLocateInfo->min;
+    reader_time.tm_hour = _pLocateInfo->hour;
+    reader_time.tm_mday = _pLocateInfo->day;
+    reader_time.tm_wday = _pLocateInfo->week;
+    reader_time.tm_mon = _pLocateInfo->mon - 1;
+    reader_time.tm_year = _pLocateInfo->year + 100;  // + 2000 - 1900
+    pSite->m_time = mktime(&reader_time);
+
+    //改为大小分站信息,最高位第7位表示大小分站,1表示大分站,0表示小分站
+    //高6位表示分站(大或小)在大分站的左侧或右侧,1代表在大分站的左侧,0表示在大分站的右侧
+    //高5位预留位,用于区分是读卡分站还是大小分站
+    uint8_t reader_type = _pLocateInfo->site_relation >>7;			//大小分站的区别
+    uint8_t reader_dir = (_pLocateInfo->site_relation >>6)&0x01;
+    uint8_t reader_type_locate = (_pLocateInfo->site_relation >>5)&0x01;	//大小分站与读卡分站的区别
+    uint8_t relay_counts = _pLocateInfo->site_relation&0x0F;
+    pSite->m_reader_dir = reader_dir;
+    pSite->m_relay_counts = relay_counts;
+
+    reader_power_battery_alarm(_pLocateInfo->site_id,_pLocateInfo->site_power);
+
+    log_info("id:%d, n:%d, %.2d-%.2d-%.2d %.2d:%.2d:%.2d, sta: %d,reader_power: %d"
+             ",reader_type: %d,is_big_reader: %d,is_left: %d, counts: %d",
+                  _pLocateInfo->site_id, _pLocateInfo->time_stamp, _pLocateInfo->year, _pLocateInfo->mon, _pLocateInfo->day\
+                  , _pLocateInfo->hour, _pLocateInfo->min,_pLocateInfo->sec\
+                  , _pLocateInfo->site_state,_pLocateInfo->site_power,reader_type_locate,reader_type,reader_dir,relay_counts);/*tep:%d,*/
+
+
+}
+/**   解析单个卡数据 */
+int  site_message_handle::parse_data_locate_card(char * DataBuffer,  int reader_id
+        , unsigned short wChr,int& nCurPos, unsigned long long ct_time/* = 0*/,int pos/* = 0*/)
+{
+    return  0;
+}
+
+void site_message_handle::reader_power_battery_alarm(unsigned int site_id, int powerType)
+{
+    std::shared_ptr<site> pSite = sit_list::instance()->get(site_id);
+    if (pSite == nullptr )
+    {
+        return ;
+    }
+    std::shared_ptr<ya_event> ev_ptr = event_list::get_event_reader(site_id,ET_READER_POWER_BY_BATTERY);
+    int oldEvState = -1;
+    int usePowerType = powerType;
+    if (!pSite->m_needpower_alarm)
+    {
+        //如果分站不需要电池供电告警,而告警事件列表中存在告警信息,需要发送结束告警事件
+        if (ev_ptr && ev_ptr->m_status == ES_START)
+        {
+            oldEvState = ES_START;
+            usePowerType = 1;
+        }
+        else
+        {
+            return;
+        }
+    }
+    switch (usePowerType)
+    {
+        case 1 : //交流电 取消警告
+        {
+            if(nullptr == ev_ptr || oldEvState == ES_END)
+            {
+                return ;  //不出在警告并且警告已是取消状态
+            }
+            event_list::copy_event(pSite,ev_ptr);
+            ev_ptr->m_status = ES_END;
+            ev_ptr->m_cur_time = std::chrono::system_clock::now();
+            ev_ptr->m_cur_value = usePowerType;
+            ev_ptr->m_is_display = true;
+            event_list::save_event(ev_ptr);
+            log_info("[event warning: restore reader power supply] reader_id: %d.",site_id);
+        }
+        break;
+        case 0: //直流电警告
+        {
+            if(nullptr != ev_ptr && oldEvState == ES_START)
+            {
+                return ; //已有警告在发送不需要再次添加
+            }
+            if (nullptr == ev_ptr)
+            {
+                ev_ptr = event_list::create_event_reader(site_id,ET_READER_POWER_BY_BATTERY);
+                event_list::copy_event(pSite,ev_ptr);
+                event_list::instance()->add(ev_ptr->get_list_id(),ev_ptr);
+            }
+            ev_ptr->status = ES_START;
+            ev_ptr->m_limit_value = 0;
+            ev_ptr->m_cur_value = usePowerType;
+            event_list::save_event(ev_ptr);
+            log_info("[event warning: reader power supply by battery] reader_id: %d.",site_id);
+        }
+        break;
+    }
+}

+ 51 - 0
site_message_handle.h

@@ -0,0 +1,51 @@
+//
+// Created by Administrator on 2019/1/14.
+// 分站发生消息到采集服务器的消息处理
+//
+#ifndef WORKSPACE_SITE_MESSAGE_HANDLE_H
+#define WORKSPACE_SITE_MESSAGE_HANDLE_H
+
+#include "module_service/module_const.h"
+
+class site_message_handle : public singleton_base<site_message_handle>
+{
+private:
+    friend class singleton_base<site_message_handle>;
+
+    site_message_handle();
+
+public:
+    // 最后接收分站消息的时间
+    time_t m_time_last_rec;
+
+public:
+
+private:
+    /** 解析 分站发送过来的数据中(分站的信息数据)
+     * @param DataBuffer 接收数据
+     * @param nLen       接收数据长度
+     * @param dwConnID   连接关键字
+     * @param nCurPos    从接收数据的那个位置开始读取数据
+     * @param reader_id  分站ID
+     * @return
+     */
+    void parse_data_locate_reader(char * DataBuffer, int nLen, int dwConnID,int& nCurPos,  int& reader_id );
+    /**   解析单个卡数据
+     * @param DataBuffer
+     * @param nCurPos
+     * @param reader_id 分站ID
+     * @param wChr      消息ID
+     * @param ct_time
+     * @param pos
+     * @return 0: 成功
+     */
+    int  parse_data_locate_card(char * DataBuffer,  int reader_id, unsigned short wChr,int& nCurPos, unsigned long long ct_time = 0,int pos = 0);
+    /**
+     * 分站电源是否已切换直流电,发送警告
+     * @param site_id
+     * @param powerType
+     */
+    void reader_power_battery_alarm(unsigned int site_id, int powerType);
+};
+
+#endif //WORKSPACE_SITE_MESSAGE_HANDLE_H

+ 5 - 0
system_basic_info/SystemAnalysis.cpp

@@ -0,0 +1,5 @@
+#include "SystemAnalysis.h"
+
+int LocationSystemCount[LOCATION_SYSTEM_BRANCH_MAX + 1] = {0};
+
+int TagLocationSystemFlag[TAG_LOCATION_BRANCH_MAX + 1] = {0};

+ 365 - 0
system_basic_info/SystemAnalysis.h

@@ -0,0 +1,365 @@
+#ifndef BASIC_SYSTEM_ANALYSIS
+#define BASIC_SYSTEM_ANALYSIS
+
+
+//Station analysis
+typedef enum StationSyncBasicBranch 
+{
+    LOCATION_SYSTEM_BRANCH_0 = 0,     //used
+    LOCATION_SYSTEM_BRANCH_1,         //used
+    LOCATION_SYSTEM_BRANCH_2,         //used
+    LOCATION_SYSTEM_BRANCH_3,         //used
+    LOCATION_SYSTEM_BRANCH_4,         //used
+    LOCATION_SYSTEM_BRANCH_5,         //used
+    LOCATION_SYSTEM_BRANCH_6,         //used
+    LOCATION_SYSTEM_BRANCH_7,         //used
+    LOCATION_SYSTEM_BRANCH_8,         //used
+    LOCATION_SYSTEM_BRANCH_9,         //used
+    LOCATION_SYSTEM_BRANCH_10,        //used
+    LOCATION_SYSTEM_BRANCH_11,        //used
+    LOCATION_SYSTEM_BRANCH_12,        //used
+    LOCATION_SYSTEM_BRANCH_13,        //used
+    LOCATION_SYSTEM_BRANCH_14,        //used
+    LOCATION_SYSTEM_BRANCH_15,        //used
+    LOCATION_SYSTEM_BRANCH_16,        //used
+    LOCATION_SYSTEM_BRANCH_17,        //used
+    LOCATION_SYSTEM_BRANCH_18,        //used
+    LOCATION_SYSTEM_BRANCH_19,        //used
+    LOCATION_SYSTEM_BRANCH_20,        //used
+    LOCATION_SYSTEM_BRANCH_21,        //used
+    LOCATION_SYSTEM_BRANCH_22,        //used
+    LOCATION_SYSTEM_BRANCH_23,        //used
+    LOCATION_SYSTEM_BRANCH_24,        //used
+    LOCATION_SYSTEM_BRANCH_25,        //used
+    LOCATION_SYSTEM_BRANCH_26,        //used
+    LOCATION_SYSTEM_BRANCH_27,        //used
+    LOCATION_SYSTEM_BRANCH_28,        //used
+    LOCATION_SYSTEM_BRANCH_29,        //used
+    LOCATION_SYSTEM_BRANCH_30,        //used
+    LOCATION_SYSTEM_BRANCH_31,        //used
+    LOCATION_SYSTEM_BRANCH_32,        //used
+    LOCATION_SYSTEM_BRANCH_33,        //used
+    LOCATION_SYSTEM_BRANCH_34,        //used
+    LOCATION_SYSTEM_BRANCH_35,        //used
+    LOCATION_SYSTEM_BRANCH_36,        //used
+    LOCATION_SYSTEM_BRANCH_37,        //used
+    LOCATION_SYSTEM_BRANCH_38,        //used
+    LOCATION_SYSTEM_BRANCH_39,        //used
+    LOCATION_SYSTEM_BRANCH_40,        //used
+    LOCATION_SYSTEM_BRANCH_41,        //used
+    LOCATION_SYSTEM_BRANCH_42,        //used
+    LOCATION_SYSTEM_BRANCH_43,        //used
+    LOCATION_SYSTEM_BRANCH_44,        //used
+    LOCATION_SYSTEM_BRANCH_45,        //used
+    LOCATION_SYSTEM_BRANCH_46,        //used
+    LOCATION_SYSTEM_BRANCH_47,        //used
+    LOCATION_SYSTEM_BRANCH_48,        //used
+    LOCATION_SYSTEM_BRANCH_49,        //used
+    LOCATION_SYSTEM_BRANCH_50,        //used
+    LOCATION_SYSTEM_BRANCH_51,        //used
+    LOCATION_SYSTEM_BRANCH_52,        //used
+    LOCATION_SYSTEM_BRANCH_53,        //used
+    LOCATION_SYSTEM_BRANCH_54,        //used
+    LOCATION_SYSTEM_BRANCH_55,        //used
+    LOCATION_SYSTEM_BRANCH_56,        //used
+    LOCATION_SYSTEM_BRANCH_57,        //used
+    LOCATION_SYSTEM_BRANCH_58,        //used
+    LOCATION_SYSTEM_BRANCH_59,        //used
+    LOCATION_SYSTEM_BRANCH_60,        //used
+    LOCATION_SYSTEM_BRANCH_61,        //used
+    LOCATION_SYSTEM_BRANCH_62,        //used
+    LOCATION_SYSTEM_BRANCH_63,        //used
+    LOCATION_SYSTEM_BRANCH_64,        //used
+    LOCATION_SYSTEM_BRANCH_65,        //used
+    LOCATION_SYSTEM_BRANCH_66,        //used
+    LOCATION_SYSTEM_BRANCH_67,        //used
+    LOCATION_SYSTEM_BRANCH_68,        //used
+    LOCATION_SYSTEM_BRANCH_69,        //used
+    LOCATION_SYSTEM_BRANCH_70,        //used
+    LOCATION_SYSTEM_BRANCH_71,        //used
+    LOCATION_SYSTEM_BRANCH_72,        //used
+    LOCATION_SYSTEM_BRANCH_73,        //used
+    LOCATION_SYSTEM_BRANCH_74,        //used
+    LOCATION_SYSTEM_BRANCH_75,        //used
+    LOCATION_SYSTEM_BRANCH_76,        //used
+    LOCATION_SYSTEM_BRANCH_77,        //used
+    LOCATION_SYSTEM_BRANCH_78,        //used
+    LOCATION_SYSTEM_BRANCH_79,        //used
+    LOCATION_SYSTEM_BRANCH_80,        //used
+    LOCATION_SYSTEM_BRANCH_81,        //used
+    LOCATION_SYSTEM_BRANCH_82,        //used
+    LOCATION_SYSTEM_BRANCH_83,        //used
+    LOCATION_SYSTEM_BRANCH_84,        //used
+    LOCATION_SYSTEM_BRANCH_85,        //used
+    LOCATION_SYSTEM_BRANCH_86,        //used
+    LOCATION_SYSTEM_BRANCH_87,        //used
+    LOCATION_SYSTEM_BRANCH_88,        //used
+    LOCATION_SYSTEM_BRANCH_89,        //used
+    LOCATION_SYSTEM_BRANCH_90,        //used
+    LOCATION_SYSTEM_BRANCH_91,        //used
+    LOCATION_SYSTEM_BRANCH_92,        //used
+    LOCATION_SYSTEM_BRANCH_93,        //used
+    LOCATION_SYSTEM_BRANCH_94,        //used
+    LOCATION_SYSTEM_BRANCH_95,        //used
+    LOCATION_SYSTEM_BRANCH_96,        //used
+    LOCATION_SYSTEM_BRANCH_97,        //used
+    LOCATION_SYSTEM_BRANCH_98,        //used
+    LOCATION_SYSTEM_BRANCH_99,        //used
+    LOCATION_SYSTEM_BRANCH_100,       //used
+    LOCATION_SYSTEM_BRANCH_101,       //used
+    LOCATION_SYSTEM_BRANCH_102,       //used
+    LOCATION_SYSTEM_BRANCH_103,       //used
+    LOCATION_SYSTEM_BRANCH_104,       //used
+    LOCATION_SYSTEM_BRANCH_105,       //used
+    LOCATION_SYSTEM_BRANCH_106,       //used
+    LOCATION_SYSTEM_BRANCH_107,       //used
+    LOCATION_SYSTEM_BRANCH_108,       //used
+    LOCATION_SYSTEM_BRANCH_109,       //used
+    LOCATION_SYSTEM_BRANCH_110,       //used
+    LOCATION_SYSTEM_BRANCH_111,       //used
+    LOCATION_SYSTEM_BRANCH_112,       //used
+    LOCATION_SYSTEM_BRANCH_113,       //used
+    LOCATION_SYSTEM_BRANCH_114,       //used
+    LOCATION_SYSTEM_BRANCH_115,       //used
+    LOCATION_SYSTEM_BRANCH_116,       //used
+    LOCATION_SYSTEM_BRANCH_117,       //used
+    LOCATION_SYSTEM_BRANCH_118,       //used
+    LOCATION_SYSTEM_BRANCH_119,       //used
+    LOCATION_SYSTEM_BRANCH_120,       //used
+    LOCATION_SYSTEM_BRANCH_121,       //used
+    LOCATION_SYSTEM_BRANCH_122,       //used
+    LOCATION_SYSTEM_BRANCH_123,       //used
+    LOCATION_SYSTEM_BRANCH_124,       //used
+    LOCATION_SYSTEM_BRANCH_125,       //used
+    LOCATION_SYSTEM_BRANCH_126,       //used
+    LOCATION_SYSTEM_BRANCH_127,       //used
+    LOCATION_SYSTEM_BRANCH_128,       //used
+    LOCATION_SYSTEM_BRANCH_129,       //used
+    LOCATION_SYSTEM_BRANCH_130,       //used
+    LOCATION_SYSTEM_BRANCH_131,       //used
+    LOCATION_SYSTEM_BRANCH_132,       //used
+    LOCATION_SYSTEM_BRANCH_133,       //used
+    LOCATION_SYSTEM_BRANCH_134,       //used
+    LOCATION_SYSTEM_BRANCH_135,       //used
+    LOCATION_SYSTEM_BRANCH_136,       //used
+    LOCATION_SYSTEM_BRANCH_137,       //used
+    LOCATION_SYSTEM_BRANCH_138,       //used
+    LOCATION_SYSTEM_BRANCH_139,       //used
+    LOCATION_SYSTEM_BRANCH_140,       //used
+    LOCATION_SYSTEM_BRANCH_141,       //used
+    LOCATION_SYSTEM_BRANCH_142,       //used
+    LOCATION_SYSTEM_BRANCH_143,       //used
+    LOCATION_SYSTEM_BRANCH_144,       //used
+    LOCATION_SYSTEM_BRANCH_145,       //used
+    LOCATION_SYSTEM_BRANCH_146,       //used
+    LOCATION_SYSTEM_BRANCH_147,       //used
+    LOCATION_SYSTEM_BRANCH_148,       //used
+    LOCATION_SYSTEM_BRANCH_149,       //used
+	LOCATION_SYSTEM_BRANCH_150,       //used
+	LOCATION_SYSTEM_BRANCH_151,       //used
+	LOCATION_SYSTEM_BRANCH_152,       //used
+	LOCATION_SYSTEM_BRANCH_153,       //used
+	LOCATION_SYSTEM_BRANCH_154,       //used
+	LOCATION_SYSTEM_BRANCH_155,       //used
+	LOCATION_SYSTEM_BRANCH_156,       //used
+	LOCATION_SYSTEM_BRANCH_157,       //used
+	LOCATION_SYSTEM_BRANCH_158,       //used
+	LOCATION_SYSTEM_BRANCH_159,       //used
+	LOCATION_SYSTEM_BRANCH_160,       //used
+	LOCATION_SYSTEM_BRANCH_161,       //used
+	LOCATION_SYSTEM_BRANCH_162,       //used
+	LOCATION_SYSTEM_BRANCH_163,       //used
+	LOCATION_SYSTEM_BRANCH_164,       //used
+	LOCATION_SYSTEM_BRANCH_165,       //used
+	LOCATION_SYSTEM_BRANCH_166,       //used
+	LOCATION_SYSTEM_BRANCH_167,       //used
+	LOCATION_SYSTEM_BRANCH_168,       //used
+	LOCATION_SYSTEM_BRANCH_169,       //used
+	LOCATION_SYSTEM_BRANCH_170,       //used
+	LOCATION_SYSTEM_BRANCH_171,       //used
+	LOCATION_SYSTEM_BRANCH_172,       //used
+	LOCATION_SYSTEM_BRANCH_173,       //used
+	LOCATION_SYSTEM_BRANCH_174,       //used
+	LOCATION_SYSTEM_BRANCH_175,       //used
+	LOCATION_SYSTEM_BRANCH_176,       //used
+	LOCATION_SYSTEM_BRANCH_177,       //used
+	LOCATION_SYSTEM_BRANCH_178,       //used
+	LOCATION_SYSTEM_BRANCH_179,       //used
+	LOCATION_SYSTEM_BRANCH_180,       //used
+	LOCATION_SYSTEM_BRANCH_181,       //used
+	LOCATION_SYSTEM_BRANCH_182,       //used
+	LOCATION_SYSTEM_BRANCH_183,       //used
+	LOCATION_SYSTEM_BRANCH_184,       //used
+	LOCATION_SYSTEM_BRANCH_185,       //used
+	LOCATION_SYSTEM_BRANCH_186,       //used
+	LOCATION_SYSTEM_BRANCH_187,       //used
+	LOCATION_SYSTEM_BRANCH_188,       //used
+	LOCATION_SYSTEM_BRANCH_189,       //used
+	LOCATION_SYSTEM_BRANCH_190,       //used
+	LOCATION_SYSTEM_BRANCH_191,       //used
+	LOCATION_SYSTEM_BRANCH_192,       //used
+	LOCATION_SYSTEM_BRANCH_193,       //used
+	LOCATION_SYSTEM_BRANCH_194,       //used
+	LOCATION_SYSTEM_BRANCH_195,       //used
+	LOCATION_SYSTEM_BRANCH_196,       //used
+	LOCATION_SYSTEM_BRANCH_197,       //used
+	LOCATION_SYSTEM_BRANCH_198,       //used
+	LOCATION_SYSTEM_BRANCH_199,       //used
+	LOCATION_SYSTEM_BRANCH_200,       //used
+	LOCATION_SYSTEM_BRANCH_201,       //used
+	LOCATION_SYSTEM_BRANCH_202,       //used
+	LOCATION_SYSTEM_BRANCH_203,       //used
+	LOCATION_SYSTEM_BRANCH_204,       //used
+	LOCATION_SYSTEM_BRANCH_205,       //used
+	LOCATION_SYSTEM_BRANCH_206,       //used
+	LOCATION_SYSTEM_BRANCH_207,       //used
+	LOCATION_SYSTEM_BRANCH_208,       //used
+	LOCATION_SYSTEM_BRANCH_209,       //used
+	LOCATION_SYSTEM_BRANCH_210,       //used
+	LOCATION_SYSTEM_BRANCH_211,       //used
+	LOCATION_SYSTEM_BRANCH_212,       //used
+	LOCATION_SYSTEM_BRANCH_213,       //used
+	LOCATION_SYSTEM_BRANCH_214,       //used
+	LOCATION_SYSTEM_BRANCH_215,       //used
+	LOCATION_SYSTEM_BRANCH_216,       //used
+	LOCATION_SYSTEM_BRANCH_217,       //used
+	LOCATION_SYSTEM_BRANCH_218,       //used
+	LOCATION_SYSTEM_BRANCH_219,       //used
+	LOCATION_SYSTEM_BRANCH_220,       //used
+	LOCATION_SYSTEM_BRANCH_221,       //used
+	LOCATION_SYSTEM_BRANCH_222,       //used
+	LOCATION_SYSTEM_BRANCH_223,       //used
+	LOCATION_SYSTEM_BRANCH_224,       //used
+	LOCATION_SYSTEM_BRANCH_225,       //used
+	LOCATION_SYSTEM_BRANCH_226,       //used
+	LOCATION_SYSTEM_BRANCH_227,       //used
+	LOCATION_SYSTEM_BRANCH_228,       //used
+	LOCATION_SYSTEM_BRANCH_229,       //used
+	LOCATION_SYSTEM_BRANCH_230,       //used
+	LOCATION_SYSTEM_BRANCH_231,       //used
+	LOCATION_SYSTEM_BRANCH_232,       //used
+	LOCATION_SYSTEM_BRANCH_233,       //used
+	LOCATION_SYSTEM_BRANCH_234,       //used
+	LOCATION_SYSTEM_BRANCH_235,       //used
+	LOCATION_SYSTEM_BRANCH_236,       //used
+	LOCATION_SYSTEM_BRANCH_237,       //used
+	LOCATION_SYSTEM_BRANCH_238,       //used
+	LOCATION_SYSTEM_BRANCH_239,       //used
+	LOCATION_SYSTEM_BRANCH_240,       //used
+	LOCATION_SYSTEM_BRANCH_241,       //used
+	LOCATION_SYSTEM_BRANCH_242,       //used
+	LOCATION_SYSTEM_BRANCH_243,       //used
+	LOCATION_SYSTEM_BRANCH_244,       //used
+	LOCATION_SYSTEM_BRANCH_245,       //used
+	LOCATION_SYSTEM_BRANCH_246,       //used
+	LOCATION_SYSTEM_BRANCH_247,       //used
+	LOCATION_SYSTEM_BRANCH_248,       //used
+	LOCATION_SYSTEM_BRANCH_249,       //used
+	LOCATION_SYSTEM_BRANCH_250,       //used
+	LOCATION_SYSTEM_BRANCH_251,       //used
+	LOCATION_SYSTEM_BRANCH_252,       //used
+	LOCATION_SYSTEM_BRANCH_253,       //used
+	LOCATION_SYSTEM_BRANCH_254,       //used
+	LOCATION_SYSTEM_BRANCH_255,       //used
+	LOCATION_SYSTEM_BRANCH_256,       //used
+	LOCATION_SYSTEM_BRANCH_257,       //used
+	LOCATION_SYSTEM_BRANCH_258,       //used
+	LOCATION_SYSTEM_BRANCH_259,       //used
+	LOCATION_SYSTEM_BRANCH_260,       //used
+	LOCATION_SYSTEM_BRANCH_261,       //used
+	LOCATION_SYSTEM_BRANCH_262,       //used
+	LOCATION_SYSTEM_BRANCH_263,       //used
+	LOCATION_SYSTEM_BRANCH_264,       //used
+	LOCATION_SYSTEM_BRANCH_265,       //used
+	LOCATION_SYSTEM_BRANCH_266,       //used
+	LOCATION_SYSTEM_BRANCH_267,		  //used
+	LOCATION_SYSTEM_BRANCH_268,       //used
+	LOCATION_SYSTEM_BRANCH_269,		  //used
+	LOCATION_SYSTEM_BRANCH_270,       //used
+	LOCATION_SYSTEM_BRANCH_271,		  //used
+	LOCATION_SYSTEM_BRANCH_272,	      //used
+	LOCATION_SYSTEM_BRANCH_273,       //used
+	LOCATION_SYSTEM_BRANCH_274,		  //used
+	LOCATION_SYSTEM_BRANCH_275,
+	LOCATION_SYSTEM_BRANCH_276,
+	LOCATION_SYSTEM_BRANCH_277,
+	LOCATION_SYSTEM_BRANCH_278,
+	LOCATION_SYSTEM_BRANCH_279,
+	LOCATION_SYSTEM_BRANCH_280,
+	LOCATION_SYSTEM_BRANCH_281,
+	LOCATION_SYSTEM_BRANCH_282,
+	LOCATION_SYSTEM_BRANCH_283,
+	LOCATION_SYSTEM_BRANCH_284,
+	LOCATION_SYSTEM_BRANCH_285,
+	LOCATION_SYSTEM_BRANCH_286,
+	LOCATION_SYSTEM_BRANCH_287,
+	LOCATION_SYSTEM_BRANCH_288,
+	LOCATION_SYSTEM_BRANCH_289,
+	LOCATION_SYSTEM_BRANCH_290,
+	LOCATION_SYSTEM_BRANCH_291,
+	LOCATION_SYSTEM_BRANCH_292,
+	LOCATION_SYSTEM_BRANCH_293,
+	LOCATION_SYSTEM_BRANCH_294,
+	LOCATION_SYSTEM_BRANCH_295,
+	LOCATION_SYSTEM_BRANCH_296,
+	LOCATION_SYSTEM_BRANCH_297,
+	LOCATION_SYSTEM_BRANCH_298,
+	LOCATION_SYSTEM_BRANCH_299,
+	LOCATION_SYSTEM_BRANCH_300,
+	LOCATION_SYSTEM_BRANCH_301,
+	LOCATION_SYSTEM_BRANCH_302,
+	LOCATION_SYSTEM_BRANCH_303,
+	LOCATION_SYSTEM_BRANCH_304,
+	LOCATION_SYSTEM_BRANCH_305,
+	LOCATION_SYSTEM_BRANCH_306,
+    LOCATION_SYSTEM_BRANCH_MAX
+}StationSyncBasicBranch;
+
+//#define LOCATION_SYSTEM_BRANCH_MAX        20
+extern int LocationSystemCount[LOCATION_SYSTEM_BRANCH_MAX+1];
+
+#define  LOCATION_SYSTEM_BRANCH(x)    ((LocationSystemCount[x])++)
+
+//Tag location analysis
+#define TAG_LOCATION_BRANCH_MAX        20
+extern int TagLocationSystemFlag[TAG_LOCATION_BRANCH_MAX + 1];
+
+typedef enum TagLocationBasicBranch 
+{
+	TAG_LOCATION_BRANCH_0 = 0,   //used
+	TAG_LOCATION_BRANCH_1,       //used
+	TAG_LOCATION_BRANCH_2,       //used
+	TAG_LOCATION_BRANCH_3,
+	TAG_LOCATION_BRANCH_4, 
+	TAG_LOCATION_BRANCH_5, 
+	TAG_LOCATION_BRANCH_6,
+	TAG_LOCATION_BRANCH_7,
+	TAG_LOCATION_BRANCH_8, 
+	TAG_LOCATION_BRANCH_9, 
+	TAG_LOCATION_BRANCH_10,
+	TAG_LOCATION_BRANCH_11,
+	TAG_LOCATION_BRANCH_12, 
+	TAG_LOCATION_BRANCH_13, 
+	TAG_LOCATION_BRANCH_14,
+	TAG_LOCATION_BRANCH_15,
+	TAG_LOCATION_BRANCH_16, 
+	TAG_LOCATION_BRANCH_17, 
+	TAG_LOCATION_BRANCH_18,
+	TAG_LOCATION_BRANCH_19,
+}TagLocationBasicBranch;
+
+#define  TAG_LOCATION_BRANCH(x)    ((TagLocationSystemFlag[x])++)
+
+
+
+
+
+
+
+
+
+
+
+
+
+#endif

+ 2 - 0
ya_event.h

@@ -55,6 +55,8 @@ enum EVENT_TYPE{ // 事件类型
     ET_CARD_OVER_SPEED = 21, // 车辆超速
     ET_CARD_HELP = 24, // 人员呼救
 
+    ET_READER_POWER_BY_BATTERY=33,		//分站电池:1为电池供电,0为交流电供电,当电池供电需要告警
+
     CARD_EVENT_COUNT_MAX,
 };