Преглед изворни кода

Merge branch 'master' of http://jiecheng2024.tpddns.cn:3000/liyuezong/SmartPDCode

guohui пре 2 година
родитељ
комит
a63a6e7559
4 измењених фајлова са 140 додато и 183 уклоњено
  1. 5 27
      pro/src/app.c
  2. 126 152
      pro/src/cascade_slave.c
  3. 7 2
      pro/src/common.h
  4. 2 2
      pro/src/websocket_handle.c

+ 5 - 27
pro/src/app.c

@@ -161,7 +161,8 @@ void* power_thread(void* arg)
             memcpy(&_globalPowerInfo._power_info,
             &_globalDeviceManager->_all_ctrl_board[(int)_globalPowerMangerTemp->product_saddr]._PowerInfo[(int)_globalPowerMangerTemp->product_ch_addr-1],
             sizeof(PowerInfo));
-            if(_globalDeviceManager->_global_device_info->product_pwr_type == SmartPDU_AC)
+            if(_globalDeviceManager->_global_device_info->product_pwr_type == SmartPDU_AC ||
+                _globalDeviceManager->_global_device_info->product_pwr_type == SmartPDU_DC)
             {
                 if (_chn<64)
                 {
@@ -175,15 +176,6 @@ void* power_thread(void* arg)
                     _globalDeviceManager->single_mmap->open_delay[_chn] = _globalPowerMangerTemp->product_ch_start_delay;
                     _globalDeviceManager->single_mmap->close_delay[_chn] = _globalPowerMangerTemp->product_ch_stop_delay;
                 }
-            }else if(_globalDeviceManager->_global_device_info->product_pwr_type == SmartPDU_DC)
-            {
-                if (_chn<64)
-                {
-                _globalDeviceManager->dc_mmap->o_pw_info[_chn].o_consumption = _globalPowerInfo._power_info.consumption *1000;
-                _globalDeviceManager->dc_mmap->o_pw_info[_chn].o_valtage = _globalPowerInfo._power_info.voltage * 1000;
-                _globalDeviceManager->dc_mmap->o_pw_info[_chn].o_current = _globalPowerInfo._power_info.current * 1000;
-                _globalDeviceManager->dc_mmap->o_pw_info[_chn].o_power = _globalPowerInfo._power_info.power *1000;
-                }
             }else{
 
             }
@@ -563,20 +555,14 @@ void* power_thread(void* arg)
         }
 
         //all 
-        if(__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_AC)
+        if(__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_AC
+         || __globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_DC)
         {
             __globalDeviceManage.single_mmap->total_current = _globalTotalPowerInfo._power_info.current;
             __globalDeviceManage.single_mmap->total_power = _globalTotalPowerInfo._power_info.power;
             __globalDeviceManage.single_mmap->total_valtage = _globalTotalPowerInfo._power_info.voltage;
             __globalDeviceManage.single_mmap->dev_chn = __globalDeviceManage._global_device_info->product_pwr_type << 8 | _chn;
 
-        }else if(__globalDeviceManage._global_device_info->product_pwr_type == SmartPDU_DC)
-        {
-            __globalDeviceManage.dc_mmap->i_valtage = _globalTotalPowerInfo._power_info.voltage;
-            __globalDeviceManage.dc_mmap->i_power = _globalTotalPowerInfo._power_info.power;
-            __globalDeviceManage.dc_mmap->i_current = _globalTotalPowerInfo._power_info.current;
-            __globalDeviceManage.dc_mmap->i_consumption = _globalTotalPowerInfo._power_info.consumption;
-            __globalDeviceManage.dc_mmap->dev_chn = __globalDeviceManage._global_device_info->product_pwr_type << 8 | _chn;
         }
         //输入数据再处理(三项)
         //memset(_pTreeACPowerMangerTemp,0,sizeof(GlobalTreeACManager));
@@ -1173,14 +1159,6 @@ int _global_device_manage_init(GlobalDeviceManager* _globalDeviceManager)
     //使用的通道
     _globalDeviceManager->useSlaveCount = 0 ;
     
-    _globalDeviceManager->dc_mmap = (cascade_dc_mmap_t*)malloc(sizeof(cascade_dc_mmap_t));
-    if(_globalDeviceManager->dc_mmap==NULL)
-    {
-        log_e("_global_device_info malloc error.!");
-        //printf("_global_device_info malloc error.\n");
-        return -1 ;       
-    }
-    memset(_globalDeviceManager->dc_mmap, 0, sizeof(cascade_dc_mmap_t));
 
     _globalDeviceManager->single_mmap =(cascade_single_mmap_t*)malloc(sizeof(cascade_single_mmap_t));
     if(_globalDeviceManager->single_mmap==NULL)
@@ -1189,7 +1167,7 @@ int _global_device_manage_init(GlobalDeviceManager* _globalDeviceManager)
         //printf("_global_device_info malloc error.\n");
         return -1 ;       
     }  
-    memset(_globalDeviceManager->dc_mmap, 0, sizeof(cascade_single_mmap_t));
+    memset(_globalDeviceManager->single_mmap, 0, sizeof(cascade_single_mmap_t));
 
     //链接数据库获取配置信息
     sys_get_path(path, DATABASE_NAME);

+ 126 - 152
pro/src/cascade_slave.c

@@ -19,18 +19,13 @@ static mmap_modbus_t modbus_single[] = {
     {.offset = 4000},
     {.offset = 4001},
     {.offset = 4769},
-    {.offset = 4777},
-    {.offset = 4841},
-    {.offset = 4905},
-};
-
-static mmap_modbus_t modbus_dc[] = {
-    {.offset = 6000},
-    {.offset = 6001},
-    {.offset = 6002},
-    {.offset = 6003},
-    {.offset = 6004},
-    {.offset = 6005},
+    {.offset = 4779},
+    {.offset = 4843},
+    {.offset = 4971},
+    {.offset = 5000},
+    {.offset = 5064},
+    {.offset = 5128},
+    {.offset = 5192},
 };
 
 
@@ -39,7 +34,8 @@ int cascade_slave_map_init(cascade_handle_t *cas)
 {
     GlobalDeviceManager* mgr = get_dm();
 
-    if(mgr->_global_device_info->product_pwr_type == SmartPDU_AC)       // single AC
+    if(mgr->_global_device_info->product_pwr_type == SmartPDU_AC ||
+        mgr->_global_device_info->product_pwr_type == SmartPDU_DC)       // single AC
     {
         cas->map = modbus_mapping_new_start_address(0,0,0,0,4000,5000,0,0);     //3000 ge
         modbus_single[0].addr = &mgr->single_mmap->dev_chn;
@@ -48,17 +44,11 @@ int cascade_slave_map_init(cascade_handle_t *cas)
         modbus_single[3].addr = &mgr->single_mmap->chn_status;
         modbus_single[4].addr = &mgr->single_mmap->open_delay;
         modbus_single[5].addr = &mgr->single_mmap->close_delay;
-        printf("single address init 4000\n");
-    }else if(mgr->_global_device_info->product_pwr_type == SmartPDU_DC)
-    {
-        cas->map = modbus_mapping_new_start_address(0,0,0,0,6000,5000,0,0);     //3000 ge
-        modbus_dc[0].addr = &mgr->dc_mmap->dev_chn;
-        modbus_dc[1].addr = &mgr->dc_mmap->i_valtage;
-        modbus_dc[2].addr = &mgr->dc_mmap->i_current;
-        modbus_dc[3].addr = &mgr->dc_mmap->i_power;
-        modbus_dc[4].addr = &mgr->dc_mmap->i_consumption;
-        modbus_dc[5].addr = &mgr->dc_mmap->o_pw_info;
-        printf("dc address init 4000\n");
+        modbus_single[6].addr = &mgr->single_mmap->set_chn_open_delay;
+        modbus_single[7].addr = &mgr->single_mmap->set_chn_close_delay;
+        modbus_single[8].addr = &mgr->single_mmap->set_chn_switch_status;
+        modbus_single[9].addr = &mgr->single_mmap->set_chn_all_switch_status;
+        printf("single dc address init 4000\n");
     }else
     {
         return -1;
@@ -72,13 +62,14 @@ void cascade_slave_read(cascade_handle_t *cas,uint32_t addr,uint32_t lenth)
 {
 
     GlobalDeviceManager* mgr = get_dm();
-    if(mgr->_global_device_info->product_pwr_type == SmartPDU_AC)
+    if(mgr->_global_device_info->product_pwr_type == SmartPDU_AC || 
+            mgr->_global_device_info->product_pwr_type == SmartPDU_DC)
     {
         switch (addr)
         {
             case 4000:
                 {
-                    uint32_t *base_addr = (uint32_t *)modbus_single[0].addr;
+                    uint16_t *base_addr = (uint16_t *)modbus_single[0].addr;
                     uint32_t step = addr - cas->map->start_registers;
                     base_addr = base_addr + (addr - modbus_single[0].offset);
                     uint16_t *map_addr = (uint16_t *)&(cas->map->tab_registers[step]);
@@ -106,7 +97,7 @@ void cascade_slave_read(cascade_handle_t *cas,uint32_t addr,uint32_t lenth)
                 }
             }
             break;
-            case 4769 ... 4776:
+            case 4769 ... 4778:
             {
                 uint32_t *base_addr = (uint32_t *)modbus_single[2].addr;
                 uint32_t step = addr - cas->map->start_registers;
@@ -120,9 +111,9 @@ void cascade_slave_read(cascade_handle_t *cas,uint32_t addr,uint32_t lenth)
                 }
             }
             break;
-            case 4777 ... 4840:
+            case 4779 ... 4842:
             {
-                uint32_t *base_addr = (uint32_t *)modbus_single[3].addr;
+                uint16_t *base_addr = (uint16_t *)modbus_single[3].addr;
                 uint32_t step = addr - cas->map->start_registers;
                 base_addr = base_addr + (addr - modbus_single[3].offset);
                 uint16_t *map_addr = (uint16_t *)&(cas->map->tab_registers[step]);
@@ -134,9 +125,9 @@ void cascade_slave_read(cascade_handle_t *cas,uint32_t addr,uint32_t lenth)
                 }               
             }
             break;
-            case 4841 ... 4904:
+            case 4843 ... 4906:
             {
-                uint32_t *base_addr = (uint32_t *)modbus_single[4].addr;
+                uint16_t *base_addr = (uint16_t *)modbus_single[4].addr;
                 uint32_t step = addr - cas->map->start_registers;
                 base_addr = base_addr + (addr - modbus_single[4].offset);
                 uint16_t *map_addr = (uint16_t *)&(cas->map->tab_registers[step]);
@@ -148,9 +139,9 @@ void cascade_slave_read(cascade_handle_t *cas,uint32_t addr,uint32_t lenth)
                 }
             }
             break;
-            case 4905 ... 4968:
+            case 4907 ... 4970:
             {
-                uint32_t *base_addr = (uint32_t *)modbus_single[5].addr;
+                uint16_t *base_addr = (uint16_t *)modbus_single[5].addr;
                 uint32_t step = addr - cas->map->start_registers;
                 base_addr = base_addr + (addr - modbus_single[5].offset);
                 uint16_t *map_addr = (uint16_t *)&(cas->map->tab_registers[step]);
@@ -162,100 +153,69 @@ void cascade_slave_read(cascade_handle_t *cas,uint32_t addr,uint32_t lenth)
                 }
             }
             break;
-        default:
-            break;
-        }
-    }else if(mgr->_global_device_info->product_pwr_type == SmartPDU_DC)
-    {
-        switch (addr)
-        {
-            case 6000:
-                {
-                    uint32_t *base_addr = (uint32_t *)modbus_dc[0].addr;
-                    uint32_t step = addr - cas->map->start_registers;
-                    base_addr = base_addr + (addr - modbus_dc[0].offset);
-                    uint16_t *map_addr = (uint16_t *)&(cas->map->tab_registers[step]);
-                    printf("step = %d   base_addr = 0x%x  map_addr = 0x%x\n", step,base_addr,map_addr);
-                    if(lenth < 126)
-                    {
-                        pthread_mutex_lock(&cas->mutex);
-                        memcpy(map_addr, base_addr,2*lenth);
-                        pthread_mutex_unlock(&cas->mutex);
-                    }
-                }
-                break;
-            case 6001:
+            case 4971 ... 4999:
             {
-                uint32_t *base_addr = (uint32_t *)modbus_dc[1].addr;
-                uint32_t step = addr - cas->map->start_registers;
-                base_addr = base_addr + (addr - modbus_dc[1].offset);
-                uint16_t *map_addr = (uint16_t *)&(cas->map->tab_registers[step]);
-                if(lenth < 126)
-                {
-                        pthread_mutex_lock(&cas->mutex);
-                        memcpy(map_addr, base_addr,2*lenth);
-                        pthread_mutex_unlock(&cas->mutex);
-                }
+                
             }
             break;
-            case 6002:
+            case 5000 ... 5063:
             {
-                uint32_t *base_addr = (uint32_t *)modbus_dc[2].addr;
+                uint16_t *base_addr = (uint16_t *)modbus_single[6].addr;
                 uint32_t step = addr - cas->map->start_registers;
-                base_addr = base_addr + (addr - modbus_dc[2].offset);
+                base_addr = base_addr + (addr - modbus_single[6].offset);
                 uint16_t *map_addr = (uint16_t *)&(cas->map->tab_registers[step]);
-                if(lenth < 126)
+                if (lenth < 126)
                 {
-                        pthread_mutex_lock(&cas->mutex);
-                        memcpy(map_addr, base_addr,2*lenth);
-                        pthread_mutex_unlock(&cas->mutex);
+                    pthread_mutex_lock(&cas->mutex);
+                    memcpy(map_addr, base_addr, 2 * lenth);
+                    pthread_mutex_unlock(&cas->mutex);
                 }
             }
             break;
-            case 6003:
+            case 5064 ... 5127:
             {
-                uint32_t *base_addr = (uint32_t *)modbus_dc[3].addr;
+                uint16_t *base_addr = (uint16_t *)modbus_single[7].addr;
                 uint32_t step = addr - cas->map->start_registers;
-                base_addr = base_addr + (addr - modbus_dc[3].offset);
+                base_addr = base_addr + (addr - modbus_single[7].offset);
                 uint16_t *map_addr = (uint16_t *)&(cas->map->tab_registers[step]);
-                if(lenth < 126)
+                if (lenth < 126)
                 {
-                        pthread_mutex_lock(&cas->mutex);
-                        memcpy(map_addr, base_addr,2*lenth);
-                        pthread_mutex_unlock(&cas->mutex);
+                    pthread_mutex_lock(&cas->mutex);
+                    memcpy(map_addr, base_addr, 2 * lenth);
+                    pthread_mutex_unlock(&cas->mutex);
                 }
             }
             break;
-            case 6004:
+            case 5128 ... 5191:
             {
-                uint32_t *base_addr = (uint32_t *)modbus_dc[4].addr;
+                uint16_t *base_addr = (uint16_t *)modbus_single[8].addr;
                 uint32_t step = addr - cas->map->start_registers;
-                base_addr = base_addr + (addr - modbus_dc[4].offset);
+                base_addr = base_addr + (addr - modbus_single[8].offset);
                 uint16_t *map_addr = (uint16_t *)&(cas->map->tab_registers[step]);
-                if(lenth < 126)
+                if (lenth < 126)
                 {
-                        pthread_mutex_lock(&cas->mutex);
-                        memcpy(map_addr, base_addr,2*lenth);
-                        pthread_mutex_unlock(&cas->mutex);
+                    pthread_mutex_lock(&cas->mutex);
+                    memcpy(map_addr, base_addr, 2 * lenth);
+                    pthread_mutex_unlock(&cas->mutex);
                 }
             }
             break;
-            case 6005 ... 6260:
+            case 5192 :
             {
-                uint32_t *base_addr = (uint32_t *)modbus_dc[5].addr;
+                uint16_t *base_addr = (uint16_t *)modbus_single[9].addr;
                 uint32_t step = addr - cas->map->start_registers;
-                base_addr = base_addr + (addr - modbus_dc[5].offset);
+                base_addr = base_addr + (addr - modbus_single[9].offset);
                 uint16_t *map_addr = (uint16_t *)&(cas->map->tab_registers[step]);
-                if(lenth < 126)
+                if (lenth < 126)
                 {
-                        pthread_mutex_lock(&cas->mutex);
-                        memcpy(map_addr, base_addr,2*lenth);
-                        pthread_mutex_unlock(&cas->mutex);
+                    pthread_mutex_lock(&cas->mutex);
+                    memcpy(map_addr, base_addr, 2 * lenth);
+                    pthread_mutex_unlock(&cas->mutex);
                 }
             }
             break;
-            default:
-                break;
+        default:
+            break;
         }
     }
 }
@@ -266,100 +226,114 @@ void cascade_slave_write(cascade_handle_t *cas, uint32_t addr, uint16_t val)
 {   
     GlobalDeviceManager* mgr = get_dm();
     uint16_t buff[128] = {0};
-    if(mgr->_global_device_info->product_pwr_type == SmartPDU_AC)   
+    if(mgr->_global_device_info->product_pwr_type == SmartPDU_AC || mgr->_global_device_info->product_pwr_type == SmartPDU_DC)   
     {
         switch(addr)
         {
-            case 5128 ... 5191:
+            case 5000 ... 5063:
             {
-                int start_chn = addr - 5128 + 1;
+                int start_chn = addr - modbus_single[6].offset;
                 GlobalPowerManger* _globalPowerMangerTemp = NULL ;
-
                 list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
                 {
-                        
-                        if(_globalPowerMangerTemp==NULL)
+                    if(_globalPowerMangerTemp==NULL)
                             break;
                         if((start_chn+1) == _globalPowerMangerTemp->product_ch_id)
                         {
-                            int ret=g_switch_set_all_chn_ctrl(&__globalDeviceManage._globalRelaySampManger,_globalPowerMangerTemp,
-                            _globalPowerMangerTemp->product_saddr,
-                            _globalPowerMangerTemp->product_ch_addr, 
-                            val,false);
-                          //  printf("ret = %d 0x%x\n",ret,val);
+                            if(mgr->_global_device_info->product_pwr_type == SmartPDU_AC){
+                                _globalPowerMangerTemp->product_ch_start_delay=val;
+                                g_switch_set_ac_single_s_start_time_delay(&__globalDeviceManage._globalRelaySampManger,_globalPowerMangerTemp->product_saddr,
+                                                _globalPowerMangerTemp->product_ch_addr,val);
+                            }else
+                            {
+                                _globalPowerMangerTemp->product_ch_start_delay=val;
+                                g_switch_set_dcpdu_start_time_delay(&__globalDeviceManage._globalRelaySampManger,_globalPowerMangerTemp->product_saddr,
+                                        _globalPowerMangerTemp->product_ch_addr,val/1000);
+                            }
+                            if (dev_update_power_manage_genera_info(__globalDeviceManage.db, _globalPowerMangerTemp->product_id, _globalPowerMangerTemp->product_ch_id, _globalPowerMangerTemp) != 0)
+                            {
+                                log_e("update pwr general data err.");
+                            }
+                            printf("val = %d start_chn = %d\n",val,start_chn);
+                          //  *(uint16_t *)((uint16_t*)(modbus_single[6].addr) + start_chn) = val;
                             break;
-                        }
+                        }                    
                 }
-
             }
             break;
-            case 5192:
+            case 5064 ... 5127:
             {
+                 int start_chn = addr - modbus_single[7].offset;
                 GlobalPowerManger* _globalPowerMangerTemp = NULL ;
                 list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
                 {
                     if(_globalPowerMangerTemp==NULL)
-                    break;
-                    int rec=g_switch_set_all_ctrl(&__globalDeviceManage._globalRelaySampManger,_globalPowerMangerTemp->product_ch_type,_globalPowerMangerTemp->product_saddr,val);
-                    //printf("rec = %d 0x%x\n",rec,val);
+                            break;
+                        if((start_chn+1) == _globalPowerMangerTemp->product_ch_id)
+                        {
+                            if(mgr->_global_device_info->product_pwr_type == SmartPDU_AC){
+                                  _globalPowerMangerTemp->product_ch_stop_delay=val;
+                                g_switch_set_ac_single_s_stop_time_delay(&__globalDeviceManage._globalRelaySampManger,_globalPowerMangerTemp->product_saddr,
+                                                _globalPowerMangerTemp->product_ch_addr,val);
+                            }else
+                            {
+                                  _globalPowerMangerTemp->product_ch_stop_delay=val;
+                                g_switch_set_dcpdu_stop_time_delay(&__globalDeviceManage._globalRelaySampManger,_globalPowerMangerTemp->product_saddr,
+                                        _globalPowerMangerTemp->product_ch_addr,val/1000);
+                            }
+                            if (dev_update_power_manage_genera_info(__globalDeviceManage.db, _globalPowerMangerTemp->product_id, _globalPowerMangerTemp->product_ch_id, _globalPowerMangerTemp) != 0)
+                            {
+                                log_e("update pwr general data err.");
+                            }
+                            printf("val = %d",val);
+                            //*(uint16_t *)((uint16_t*)(modbus_single[7].addr) + start_chn) = val;
+                            //printf("modbus_single[7].addr = %d ",modbus_single[7].addr);
+                            break;
+                        }                    
                 }
             }
             break;
-
-            default:
-            break;
-        }
-    }else if(mgr->_global_device_info->product_pwr_type == SmartPDU_DC)
-    {
-        switch (addr)
-        {
-            case 6756 ... 6819:
+            case 5128 ... 5191:
             {
-                int start_chn = addr - 6756 + 1;
-                GlobalPowerManger* _globalPowerMangerTemp = NULL;
-
+                int start_chn = addr - modbus_single[8].offset;
+                GlobalPowerManger* _globalPowerMangerTemp = NULL ;
+                if (val == 0 || val == 1)
+                {
                     list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
                     {
-                        
-                        if(_globalPowerMangerTemp==NULL)
+                        if (_globalPowerMangerTemp == NULL)
                             break;
-                        if((start_chn+1) == _globalPowerMangerTemp->product_ch_id)
+                        if ((start_chn + 1) == _globalPowerMangerTemp->product_ch_id)
                         {
-                            int ret=g_switch_set_all_chn_ctrl(&__globalDeviceManage._globalRelaySampManger,_globalPowerMangerTemp,
-                            _globalPowerMangerTemp->product_saddr,
-                            _globalPowerMangerTemp->product_ch_addr, 
-                            val,false);
+                            int ret = g_switch_set_all_chn_ctrl(&__globalDeviceManage._globalRelaySampManger, _globalPowerMangerTemp,
+                                                                _globalPowerMangerTemp->product_saddr,
+                                                                _globalPowerMangerTemp->product_ch_addr,
+                                                                val, false);
+                            //  printf("ret = %d 0x%x\n",ret,val);
+                            *(uint16_t *)((uint16_t *)(modbus_single[8].addr) + start_chn) = val;
                             break;
                         }
                     }
-            }
-            break;
-            case 7012:
-            {
-                
-                GlobalPowerManger* _globalPowerMangerTemp = NULL ;
-                list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
-                {
-                    if(_globalPowerMangerTemp==NULL)
-                    break;
-                    if(val == 0x1)
-                        g_switch_set_all_ctrl(&__globalDeviceManage._globalRelaySampManger,_globalPowerMangerTemp->product_ch_type,_globalPowerMangerTemp->product_saddr,1);
                 }
             }
             break;
-            case 7013:
+            case 5192:
             {
-                
-                GlobalPowerManger* _globalPowerMangerTemp = NULL ;
-                list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
+                if (val == 0 || val == 1)
                 {
-                    if(_globalPowerMangerTemp==NULL)
-                    break;
-                    if(val == 0x1)
-                        g_switch_set_all_ctrl(&__globalDeviceManage._globalRelaySampManger,_globalPowerMangerTemp->product_ch_type,_globalPowerMangerTemp->product_saddr,0);
+                    GlobalPowerManger *_globalPowerMangerTemp = NULL;
+                    list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
+                    {
+                        if (_globalPowerMangerTemp == NULL)
+                            break;
+                        int rec = g_switch_set_all_ctrl(&__globalDeviceManage._globalRelaySampManger, _globalPowerMangerTemp->product_ch_type, _globalPowerMangerTemp->product_saddr, val);
+                        // printf("rec = %d 0x%x\n",rec,val);
+                    }
+                    *(uint16_t *)(modbus_single[9].addr) = val;
                 }
             }
             break;
+
             default:
             break;
         }

+ 7 - 2
pro/src/common.h

@@ -648,7 +648,7 @@ typedef struct cascade_pw_info{
     uint32_t           factor                                      ;//功率因素 
 }cascade_single_chn_info;     //siggle hell 
 
-
+#pragma pack (1)
 typedef struct cascade_single_mmap{
     uint16_t dev_chn;
     cascade_single_chn_info all_ch[128];
@@ -660,8 +660,14 @@ typedef struct cascade_single_mmap{
     uint16_t chn_status[64];
     uint16_t open_delay[64];
     uint16_t close_delay[64];
+    uint16_t reservers[29];
+    uint16_t set_chn_open_delay[64];
+    uint16_t set_chn_close_delay[64];
+    uint16_t set_chn_switch_status[64];
+    uint16_t set_chn_all_switch_status;
 }cascade_single_mmap_t;
 
+#pragma pack ()
 
 typedef struct pw_info_dc{
     uint32_t o_valtage;
@@ -734,7 +740,6 @@ typedef struct
     smartPDU_shm_data* g_shm_Data;
     pthread_mutex_t     _power_ds;        //定时器锁 
     pthread_mutex_t     _power_update;        //数据刷新锁
-    cascade_dc_mmap_t *dc_mmap;
     cascade_single_mmap_t *single_mmap;
 }GlobalDeviceManager;
 GlobalDeviceManager __globalDeviceManage;

+ 2 - 2
pro/src/websocket_handle.c

@@ -85,8 +85,8 @@ static void fn(mg_conn_t *c, int ev, void *ev_data)
 
     case MG_EV_WS_MSG:
     {
-      struct mg_ws_message *wm = (struct mg_ws_message *) ev_data;
-      mg_ws_send(c, wm->data.ptr, wm->data.len, WEBSOCKET_OP_TEXT);
+     // struct mg_ws_message *wm = (struct mg_ws_message *) ev_data;
+     // mg_ws_send(c, wm->data.ptr, wm->data.len, WEBSOCKET_OP_TEXT);
     }
     break;
   }