Selaa lähdekoodia

MOD:修复了三相一级联

chenyuanjie 2 vuotta sitten
vanhempi
commit
09df3bb3c7

+ 17 - 2
pro/src/app.c

@@ -55,7 +55,7 @@ void* power_thread(void* arg)
     _PowerDSManage_t* _powerDsManageTemp = NULL ;
     dev_search_last_Index(_globalDeviceManager->db, &nSaveIndex, strPower);       // 查询日志最大点
     dev_search_last_Index(_globalDeviceManager->db, &nSaveTacIndex, strTacPower); // 查询日志最大点
-    _globalDeviceManager->_global_alarmLanguage=create_hash_table(18);
+    _globalDeviceManager->_global_alarmLanguage=create_hash_table(22);
     InitHashTable(_globalDeviceManager->_global_alarmLanguage);
     unsigned int samp_time = _globalDeviceManager->_global_device_info->product_samp_time;
     unsigned int usleepTime = samp_time*1000;
@@ -150,6 +150,20 @@ void* power_thread(void* arg)
         memset(VavgTimes,0,sizeof(VavgTimes));
         //数据刷新
         pthread_mutex_lock(&__globalDeviceManage._power_update);
+                //清空三项总数据
+        if (__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_One_B)
+        {
+            list_for_each_entry(pTreeAPowerInfo, &_globalDeviceManager->_globalPowerManger.list_Tree_AC, list_Tree_AC)
+            {
+                int nTreeACType = pTreeAPowerInfo->product_ph_type;
+                if (nTreeACType < 0 || nTreeACType > 3) // 不是ABC相的情况直接跳过
+                {
+                    continue;
+                }
+                memset(&pTreeAPowerInfo->_PowerInfo, 0, sizeof(PowerInfo));
+            }
+        }
+
         list_for_each_entry(_globalPowerMangerTemp, &_globalDeviceManager->_globalPowerManger.list, list)
         {
             //获取通道类型
@@ -273,6 +287,7 @@ void* power_thread(void* arg)
                         int k = 0;
                         list_for_each_entry(_pTreeACPowerMangerTemp, &_globalPowerMangerTemp->list_Tree_AC, list_Tree_AC)
                         {
+                            //筛选控制中的数据
                             if (__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_One_B && _pTreeACPowerMangerTemp->product_ph_outputStatus == 2)
                             {
                                 continue;
@@ -305,7 +320,7 @@ void* power_thread(void* arg)
                                     }
                                     else
                                     {
-                                        Vavg[nTreeACType]  = (Vavg[nTreeACType]  * VavgTimes[nTreeACType]  + _pTreeACPowerMangerTemp->_PowerInfo.voltage) / VavgTimes[nTreeACType] ;
+                                        Vavg[nTreeACType]  = (Vavg[nTreeACType]  * VavgTimes[nTreeACType]  + _pTreeACPowerMangerTemp->_PowerInfo.voltage) / (VavgTimes[nTreeACType]+1) ;
                                     }
 
                                     pTreeAPowerInfo->_PowerInfo.voltage = Vavg[nTreeACType];

+ 41 - 6
pro/src/appweb_handle.c

@@ -644,7 +644,9 @@ static void overallStatusMonitoring(void* conn)
         GlobalPowerInfo __globalPowerInfo;
         //清0
         memset(&__globalPowerInfo,0,sizeof(GlobalPowerInfo));
-        if (_over_all_sts_monitor.product_pwr_type==SmartPDU_Tree_AC_Tree)
+        if (_over_all_sts_monitor.product_pwr_type==SmartPDU_Tree_AC_Tree
+        ||_over_all_sts_monitor.product_pwr_type==SmartPDU_Tree_AC_One
+        ||_over_all_sts_monitor.product_pwr_type==SmartPDU_Tree_AC_One_B)
         {
              ack_str = over_all_data_t_ac_to_json(&_over_all_pwr_back_info,&_over_all_sts_monitor, TOTAL_VOLTAGE_TYPE);
         }
@@ -677,7 +679,9 @@ static void overallStatusMonitoring(void* conn)
         GlobalPowerInfo __globalPowerInfo;
         //清0
         memset(&__globalPowerInfo,0,sizeof(GlobalPowerInfo));
-        if (_over_all_sts_monitor.product_pwr_type == SmartPDU_Tree_AC_Tree)
+        if (_over_all_sts_monitor.product_pwr_type==SmartPDU_Tree_AC_Tree
+        ||_over_all_sts_monitor.product_pwr_type==SmartPDU_Tree_AC_One
+        ||_over_all_sts_monitor.product_pwr_type==SmartPDU_Tree_AC_One_B)
         {
             ack_str = over_all_data_t_ac_to_json(&_over_all_pwr_back_info, &_over_all_sts_monitor, TOTAL_CURRENT_TYPE);
         }
@@ -709,7 +713,9 @@ static void overallStatusMonitoring(void* conn)
         GlobalPowerInfo __globalPowerInfo;
         //清0
         memset(&__globalPowerInfo,0,sizeof(GlobalPowerInfo));
-        if (_over_all_sts_monitor.product_pwr_type == SmartPDU_Tree_AC_Tree)
+        if (_over_all_sts_monitor.product_pwr_type==SmartPDU_Tree_AC_Tree
+        ||_over_all_sts_monitor.product_pwr_type==SmartPDU_Tree_AC_One
+        ||_over_all_sts_monitor.product_pwr_type==SmartPDU_Tree_AC_One_B)
         {
             ack_str = over_all_data_t_ac_to_json(&_over_all_pwr_back_info, &_over_all_sts_monitor, TOTAL_POWER_TYPE);
         }
@@ -741,7 +747,9 @@ static void overallStatusMonitoring(void* conn)
         GlobalPowerInfo __globalPowerInfo;
         //清0
         memset(&__globalPowerInfo,0,sizeof(GlobalPowerInfo));
-        if (_over_all_sts_monitor.product_pwr_type == SmartPDU_Tree_AC_Tree)
+        if (_over_all_sts_monitor.product_pwr_type==SmartPDU_Tree_AC_Tree
+        ||_over_all_sts_monitor.product_pwr_type==SmartPDU_Tree_AC_One
+        ||_over_all_sts_monitor.product_pwr_type==SmartPDU_Tree_AC_One_B)
         {
             ack_str = over_all_data_t_ac_to_json(&_over_all_pwr_back_info, &_over_all_sts_monitor, TOTAL_POWER_CONS_TYPE);
         }
@@ -2402,7 +2410,24 @@ static void communicationManagement(void *conn)
     else if(strcmp(reqInfo.type,"RsSave")==0)//淇濆瓨modbus鏁版嵁
     {
         ModbusInfo_t* info = &devInfo->_gmodbus_info;
-        info->product_modbus_type = atoi(reqInfo._rs_info.mode);
+        bool isStrMaster=strcmp(reqInfo._rs_info.mode,language_alarm_RS485_master[__globalDeviceManage._global_device_info->product_language])==0;
+        bool isStrSlave=strcmp(reqInfo._rs_info.mode,language_alarm_RS485_slave[__globalDeviceManage._global_device_info->product_language])==0;
+        if (isStrMaster||isStrMaster)
+        {
+            if (isStrMaster)
+            {
+                info->product_modbus_type = 0;
+            }
+            else
+            {
+                info->product_modbus_type = 1;
+            }
+        }
+        else
+        {
+            info->product_modbus_type = atoi(reqInfo._rs_info.mode);
+        }
+
         info->product_modbus_baud = atoi(reqInfo._rs_info.baud);
         info->product_modbus_addr = atoi(reqInfo._rs_info.addr);
         
@@ -2411,7 +2436,17 @@ static void communicationManagement(void *conn)
         if(r==0) {
             dev_update_device_modus_info(__globalDeviceManage.db,devInfo);
         }
-        
+        char buff[256];
+        if (info->product_modbus_type)
+        {
+            sprintf(buff, "$%s$|$%s$|BD:%d", language_RS485_install[0],language_alarm_RS485_master[0],info->product_modbus_baud);
+        }
+        else
+        {
+            sprintf(buff, "$%s$|$%s$|addr:%d BD:%d",language_RS485_install[0],language_alarm_RS485_slave[0],info->product_modbus_addr,info->product_modbus_baud);
+        }
+        dev_insert_alarm_ctrl(__globalDeviceManage.db,__globalDeviceManage._globalPowerManger.product_id,4,buff);
+
         ack_str = ctrl_sts_ack_to_json();
     }
     

+ 36 - 13
pro/src/cascade.c

@@ -175,7 +175,7 @@ static int slave_get_info(cascade_handle_t *cas)
             info->ch[cnt].product_ch_status = tmp->product_ch_status;
             info->ch[cnt].start_delay = tmp->product_ch_start_delay;
             info->ch[cnt].stop_delay  = tmp->product_ch_stop_delay;
-            if (tmp->product_ch_type==TREE_AC_TYPE) {
+            if (tmp->product_ch_type==TREE_AC_TYPE||(tmp->product_ch_type==AC_SINGLE_B_TYPE&&__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_One_B)) {
                 cnt2 = 0;
                 list_for_each_entry(tmp3, &tmp->list_Tree_AC, list_Tree_AC)
                 {
@@ -246,7 +246,7 @@ static int slave_save(cascade_handle_t *cas)
 static int mb_init(cascade_handle_t *cas, char *path, int type, int addr, uint32_t baud)
 {
     int r;
-    r = g_modbus_init(&cas->m, path, baud, type, addr, (type>0)?"master":"slave", 0);
+    r = g_modbus_init(&cas->m, path, baud, type, addr, (type>0)?"master":"slave", 1);
     if(r==0) {
         if(type>0) {
             LOGD("___ set slave addr: %d\n", addr);
@@ -686,7 +686,7 @@ static int power_clear(cascade_handle_t *cas)
                 continue;
             }
 
-            if (tmp->product_ch_type==TREE_AC_TYPE) {
+            if (tmp->product_ch_type==TREE_AC_TYPE||(tmp->product_ch_type==AC_SINGLE_B_TYPE&&__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_One_B)) {
                 if(list_empty(&tmp->list_Tree_AC)) {
                     continue;
                 }
@@ -712,6 +712,7 @@ static int power_clear(cascade_handle_t *cas)
 static int power_add(cascade_handle_t *cas)
 {
     int i,j,nTac_chn=0,r=-1;
+    GlobalDeviceManager *dm1=get_dm();
     GlobalDeviceManager *dm2=get_dm2();
     GlobalPowerManger *tmp=NULL;
     GlobalTreeACManager *tmp3=NULL;
@@ -722,7 +723,7 @@ static int power_add(cascade_handle_t *cas)
     power_clear(cas);
 
     dm2->_global_device_info->product_id = cur_dev_addr;
-
+    //插入总数据
     if(info->prod.product_pwr_type==SmartPDU_Tree_AC_Tree ||
        info->prod.product_pwr_type==SmartPDU_Tree_AC_One ||
        info->prod.product_pwr_type==SmartPDU_Tree_AC_One_B) {
@@ -754,7 +755,7 @@ static int power_add(cascade_handle_t *cas)
             nTac_chn++;
         }
     }
-
+    //单条数据插入
     for(i=0; i<info->cnt; i++) {
         tmp = (GlobalPowerManger*)malloc(sizeof(GlobalPowerManger));
         if(!tmp) {
@@ -773,7 +774,7 @@ static int power_add(cascade_handle_t *cas)
         tmp->product_ch_start_delay = info->ch[i].start_delay;
         tmp->product_ch_stop_delay = info->ch[i].stop_delay;
 
-        if(info->ch[i].product_ch_type==TREE_AC_TYPE) {
+        if(info->ch[i].product_ch_type==TREE_AC_TYPE||(tmp->product_ch_type==AC_SINGLE_B_TYPE&&info->prod.product_pwr_type==SmartPDU_Tree_AC_One_B)) {
             INIT_LIST_HEAD(&tmp->list_Tree_AC);
             for (j=0; j<3; j++) {
                 tmp3 = (GlobalTreeACManager *)malloc(sizeof(GlobalTreeACManager));
@@ -799,7 +800,6 @@ static int power_add(cascade_handle_t *cas)
         else {
             tmp->_PowerInfo = info->ch[i].pinfo[0].power;
         }
-
         list_add_tail(&tmp->list,&dm2->_globalPowerManger.list);
     }
     cascade_unlock();
@@ -839,7 +839,7 @@ static int power_update(cascade_handle_t *cas)
         cnt = 0;
         list_for_each_entry(tmp, &dm2->_globalPowerManger.list, list)
         {
-            if(tmp->product_ch_type==TREE_AC_TYPE) {
+            if(tmp->product_ch_type==TREE_AC_TYPE||(tmp->product_ch_type==AC_SINGLE_B_TYPE&&info->prod.product_pwr_type==SmartPDU_Tree_AC_One_B)) {
                 if(list_empty(&tmp->list_Tree_AC)) {
                     continue;
                 }
@@ -1252,7 +1252,13 @@ static int set_modbus(cascade_handle_t *cas, ModbusInfo_t *info)
         return -1;
     }
     cas->inited = 1;
-
+    if (cas->mInfo.product_modbus_type)
+    {
+        for (size_t i = 1; i < CASCADE_MAX; i++)
+        {
+            slave_rm(cas,i);
+        }        
+    }    
     return 0;
 }
 
@@ -1328,6 +1334,15 @@ int cascade_get_dlist(dev_list_t *dl)
 
     return 0;
 }
+/**
+ * @brief 释放级联设备列表
+ *
+ * 释放给定的级联设备列表(dev_list_t)中的 slave 成员所指向的内存。
+ *
+ * @param dl 级联设备列表指针
+ *
+ * @return 成功返回 0,失败返回 -1
+ */
 int cascade_free_dlist(dev_list_t *dl)
 {
     if(!dl) {
@@ -1338,6 +1353,15 @@ int cascade_free_dlist(dev_list_t *dl)
     return 0;
 }
  
+/**
+ * @brief 级联请求
+ *
+ * 根据给定的命令数据执行级联请求,并返回执行结果。
+ *
+ * @param cmd 命令数据指针
+ *
+ * @return 执行结果,成功返回0,失败返回-1
+ */
 int cascade_request(cmd_data_t *cmd)
 {
     int r=0;
@@ -1368,13 +1392,12 @@ int cascade_get_ch(_OverChnPwrAckInfo *ch)
     GlobalTreeACManager *tmp3=NULL;
     _OverChnPwrAckInfo *pch=NULL;
     GlobalDeviceManager* dm2=get_dm2();
-
     list_for_each_entry(tmp, &dm2->_globalPowerManger.list, list)
     {
-        if (tmp->product_ch_type==TREE_AC_TYPE){
+        if (tmp->product_ch_type==TREE_AC_TYPE||(tmp->product_ch_type==AC_SINGLE_B_TYPE&&dm2->_global_device_info->product_pwr_type == SmartPDU_Tree_AC_One_B)){
             int nStatus=-1;//-1则状态不变,0、1则是子状态
             //判断是否三相单输出情况下
-            if(tmp->product_ch_type==TREE_AC_TYPE) {
+            if(tmp->product_ch_type==TREE_AC_TYPE||(tmp->product_ch_type==AC_SINGLE_B_TYPE&&dm2->_global_device_info->product_pwr_type == SmartPDU_Tree_AC_One_B)) {
                 list_for_each_entry(tmp3, &tmp->list_Tree_AC, list_Tree_AC) {
                     if (2 == tmp3->product_ph_outputType &&1==tmp3->product_ph_outputStatus)
                     {//单项并且状态为输出
@@ -1412,7 +1435,7 @@ int cascade_get_ch(_OverChnPwrAckInfo *ch)
                 pch->ph_consumption = tmp3->_PowerInfo.consumption;
                 pch->ph_outputType   = tmp3->product_ph_outputType;
                 pch->ph_outputStatus = tmp3->product_ph_outputStatus;
-                if (dm2->_global_device_info->product_pwr_type == SmartPDU_Tree_AC_One && 
+                if ((dm2->_global_device_info->product_pwr_type == SmartPDU_Tree_AC_One||dm2->_global_device_info->product_pwr_type == SmartPDU_Tree_AC_One_B) && 
                     tmp3->product_ph_outputType == 2 && tmp3->product_ph_outputStatus == 2) // 如果是单项输出并且则非输出通道数据为0
                 { 
                     // 3-1模式 单项状态,不输出则数据为空

+ 10 - 3
pro/src/cascade_slave.c

@@ -443,7 +443,10 @@ void cascade_slave_write(uint32_t addr, uint16_t val)
                         int ret = 0;
 
                         _globalPowerMangerTemp->product_ch_start_delay = val;
-                        if (__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_Tree)
+                        if (__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_Tree
+                        ||__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_One
+                        ||__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_One_B
+                        )
                         {
                             ret = g_switch_set_t_ac_start_time_delay(&__globalDeviceManage._globalRelaySampManger, 
                                                         _globalPowerMangerTemp->product_saddr, (_globalPowerMangerTemp->product_ch_addr - 1) * 3, val / 1000);
@@ -479,7 +482,9 @@ void cascade_slave_write(uint32_t addr, uint16_t val)
                         int ret = 0;
 
                         _globalPowerMangerTemp->product_ch_stop_delay = val;
-                        if (__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_Tree)
+                        if (__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_Tree
+                        ||__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_One
+                        ||__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_One_B)
                         {
                             ret = g_switch_set_t_ac_stop_time_delay(&__globalDeviceManage._globalRelaySampManger, 
                                                         _globalPowerMangerTemp->product_saddr, (_globalPowerMangerTemp->product_ch_addr - 1) * 3, val / 1000);
@@ -521,7 +526,9 @@ void cascade_slave_write(uint32_t addr, uint16_t val)
                         {
                             t_ac_CtrlType=_globalTACManager->product_ph_outputType;
                         }
-                        if (t_ac_CtrlType == 2&&__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_Tree)
+                        if (t_ac_CtrlType == 2&&(__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_Tree
+                        ||__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_One
+                        ||__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_One_B))
                         {
                             unsigned short phsts=0;
                             list_for_each_entry(_globalTACManager, &_globalPowerMangerTemp->list_Tree_AC, list_Tree_AC)

+ 14 - 3
pro/src/json_handle.c

@@ -2620,13 +2620,19 @@ char* alarm_type_info_to_json(_AlarmAckInfo* _alarm_ack_info,int nAlarmNum)
         {
             case 0:cJSON_AddStringToObject(data_filed,"alarmType",language_log_Power[__globalDeviceManage._global_device_info->product_language]);break;
             case 3:cJSON_AddStringToObject(data_filed,"alarmType",language_opera_log_operation[__globalDeviceManage._global_device_info->product_language]);break;
-            case 4:cJSON_AddStringToObject(data_filed,"alarmType",language_run_log_running[__globalDeviceManage._global_device_info->product_language]);break;
+            case 4:cJSON_AddStringToObject(data_filed,"type",language_run_log_running[__globalDeviceManage._global_device_info->product_language]);break;
         }
-
+        
         cJSON_AddStringToObject(data_filed,"deviceNumber",_temp->deviceNumber);
         cJSON_AddStringToObject(data_filed,"deviceName",_temp->deviceName);
         replace_sequences(_temp->alarmContent,__globalDeviceManage._global_alarmLanguage);
-        cJSON_AddStringToObject(data_filed,"alarmContent",_temp->alarmContent);
+        switch (_temp->alarmType)
+        {
+            case 0:cJSON_AddStringToObject(data_filed,"alarmContent",_temp->alarmContent);break;
+            case 3:cJSON_AddStringToObject(data_filed,"operLocation",_temp->alarmContent);break;
+            case 4:cJSON_AddStringToObject(data_filed,"content",_temp->alarmContent);break;
+        }
+        //cJSON_AddStringToObject(data_filed,"alarmContent",_temp->alarmContent);
         cJSON_AddItemToObject(data_root_array, "data", data_filed);
         //total_number++;
     }
@@ -4504,4 +4510,9 @@ void InitHashTable(HashTable *table)
     insert_Newhash(table,(const char*)language_atmosphere_airflow[0], language_atmosphere_airflow, nMaxSize);
     insert_Newhash(table,(const char*)language_atmosphere_pressure[0], language_atmosphere_pressure, nMaxSize);
     //18
+    insert_Newhash(table,(const char*)language_RS485_install[0], language_RS485_install, nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_RS485_master[0], language_alarm_RS485_master, nMaxSize);
+    insert_Newhash(table,(const char*)language_alarm_RS485_slave[0], language_alarm_RS485_slave, nMaxSize);
+    insert_Newhash(table,(const char*)language_NTP_install[0], language_NTP_install, nMaxSize);
+    //22
 }

+ 2 - 2
pro/src/modbus_handle.c

@@ -117,7 +117,7 @@ int g_modbus_write_reg(void* manger,int saddr,unsigned short reg,unsigned short
     int ret = 0 ;
     Modbus_Manger *modbus_manger = (Modbus_Manger *)manger; 
     pthread_mutex_lock(&modbus_manger->mutex);
-    if(modbus_manger->delay>0) usleep(10000);
+    if(modbus_manger->delay>0) usleep(30000);
     modbus_set_slave(modbus_manger->mb, saddr);
     ret=modbus_write_register(modbus_manger->mb, reg, data);//06
     pthread_mutex_unlock(&modbus_manger->mutex);
@@ -135,7 +135,7 @@ int g_modbus_write_x_reg(void* manger,int saddr,unsigned short reg,unsigned int
     int ret = 0 ;
     Modbus_Manger *modbus_manger = (Modbus_Manger *)manger;
     pthread_mutex_lock(&modbus_manger->mutex);
-    if(modbus_manger->delay>0) usleep(10000);
+    if(modbus_manger->delay>0) usleep(30000);
     modbus_set_slave(modbus_manger->mb, saddr);
     ret = modbus_write_registers(modbus_manger->mb, reg, size,data);//06
     pthread_mutex_unlock(&modbus_manger->mutex);

+ 24 - 7
pro/src/sqlite_handle.c

@@ -396,6 +396,12 @@ int dev_search_latest_power_All_info(GlobalDeviceManager* globalDeviceManger,_Ov
 
     list_for_each_entry(_globalPowerMangerTemp, &globalDeviceManger->_globalPowerManger.list, list)
     {
+        if (!_globalPowerMangerTemp)
+        {
+            continue;
+            /* code */
+        }
+        
         if (_globalPowerMangerTemp->product_ch_type==TREE_AC_TYPE||(_globalPowerMangerTemp->product_ch_type==AC_SINGLE_B_TYPE&&__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_Tree_AC_One_B))
         {
             GlobalTreeACManager* _TreeACTemp=NULL;
@@ -2132,14 +2138,25 @@ int dev_search_alarm_info(sqlite3* db,
         return -1 ;
     }
     *nAlarmSum = atoi(pResult[1]);
+    if (!start_time||!start_time)
+    {
+        sprintf(select_sql, "SELECT* FROM Table_AlarmManage WHERE (product_id=%d) AND (alarmType=%d) order by alarmNumber LIMIT %d OFFSET %d;",
+                product_id,
+                alarm_type,
+                page_size,
+                page_num > 0 ? (page_num)*page_size : 0);
+    }
+    else
+    {
+        sprintf(select_sql, "SELECT* FROM Table_AlarmManage WHERE (product_id=%d) AND (alarmType=%d) AND (alarmDate BETWEEN '%s' AND '%s') LIMIT %d OFFSET %d;",
+                product_id,
+                alarm_type,
+                start_time,
+                end_time,
+                page_size,
+                page_num > 0 ? (page_num)*page_size : 0);
+    }
 
-    sprintf(select_sql,"SELECT* FROM Table_AlarmManage WHERE (product_id=%d) AND (alarmType=%d) AND (alarmDate BETWEEN '%s' AND '%s') LIMIT %d OFFSET %d;",
-                        product_id,
-                        alarm_type,
-                        start_time,
-                        end_time,
-                        page_size,
-                        page_num>0?(page_num-1)*page_size:0);
     log_d(select_sql);
     res = sqlite3_get_table(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if(res != SQLITE_OK) {

+ 1 - 1
pro/src/websocket_handle.c

@@ -208,7 +208,7 @@ void* websocket_thread(void* arg)
         mg_mgr_poll(&wh->mgr, 1000);                    // Infinite event loop
 
         web_update(wh);
-        usleep(200000);
+        usleep(500000);
     }
     wh->inited = 0;
     mg_mgr_free(&wh->mgr);