Przeglądaj źródła

传感器负温度显示,NTP导致系统重启问题。

liyi 4 miesięcy temu
rodzic
commit
245303f88e
9 zmienionych plików z 122 dodań i 20 usunięć
  1. 80 0
      pro/config/cfg.h
  2. 29 12
      pro/src/app.c
  3. 2 2
      pro/src/common.h
  4. 1 1
      pro/src/ntpclient.c
  5. 1 1
      pro/src/sensor_handle.c
  6. 5 1
      pro/ui/font.c
  7. 2 0
      pro/ui/lang.c
  8. 1 2
      pro/ui/lang.h
  9. 1 1
      pro/ui/menu.c

+ 80 - 0
pro/config/cfg.h

@@ -64,6 +64,10 @@
 
 //#define PRJ_New_Malaysia_AC_I3_O1
 
+//#define PRJ_RAO_AC_I1_O1
+#define PRJ_GJ20_07K_2IN_OLED
+//#define PRJ_GJ20_08K_2IN_OLED
+
 
 
 
@@ -364,12 +368,72 @@
 
     #define BRD_MAX                             4
 
+    #define USE_UI
+    //#define NO_SENSOR_UI                        
+
+    #define USE_WATCHDOG
+
+    #define FLIP_TIME                           5
+#elif (defined PRJ_GJ20_08K_2IN_OLED)
+    #define LANGUAGE                            0           //chinese
+    #define SMPLE_TIME                          30          //ms
+    #define SAVE_TIME                           60000       //ms
+    #define CASCADE_CNT                         0
+
+    #define PHASE_GROUP                         8
+    #define CHANNEL_DELAY                      8
+
+    #define PROD_POWER_TYPE                     0
+
+    #define BRD_MAX                             3
+
+    #define USE_UI
+    //#define NO_SENSOR_UI                        
+
+    #define USE_WATCHDOG
+
+    #define FLIP_TIME                           5
+
+#elif (defined PRJ_GJ20_07K_2IN_OLED)
+    #define LANGUAGE                            0           //chinese
+    #define SMPLE_TIME                          30          //ms
+    #define SAVE_TIME                           60000       //ms
+    #define CASCADE_CNT                         0
+
+    #define PHASE_GROUP                         8
+    #define CHANNEL_DELAY                      8
+
+    #define PROD_POWER_TYPE                     0
+
+    #define BRD_MAX                             4
+
+    #define USE_UI
+    //#define NO_SENSOR_UI                        
+
+    #define USE_WATCHDOG
+
+    #define FLIP_TIME                           5
+
+#elif defined PRJ_JUNGONG_AC_I1_O1_OLED
+    #define LANGUAGE                            0           //chinese
+    #define SMPLE_TIME                          30          //ms
+    #define SAVE_TIME                           60000       //ms
+    #define CASCADE_CNT                         0
+
+    #define PHASE_GROUP                         8
+    #define CHANNEL_DELAY                      8
+
+    #define PROD_POWER_TYPE                     0
+
+    #define BRD_MAX                             2
+
     #define USE_UI
     #define NO_SENSOR_UI                        
 
     #define USE_WATCHDOG
 
     #define FLIP_TIME                           5
+
 #elif defined PRJ_CHANGCHUN_AC_I1_O1_OLED
     #define LANGUAGE                            0           //chinese
     #define SMPLE_TIME                          30          //ms
@@ -723,6 +787,21 @@
     #define USE_BEEP                            1
     #define USE_LED                             1
     #define BRD_MAX                             1
+
+#elif (defined PRJ_RAO_AC_I1_O1)
+
+    #define LANGUAGE                            0
+    #define SMPLE_TIME                          30          //ms
+    #define SAVE_TIME                           60000       //ms
+    #define CASCADE_CNT                         0
+
+    #define PHASE_GROUP                         8
+    #define CHANNEL_DELAY                       8
+    #define PROD_POWER_TYPE                     0
+    #define USE_BEEP                            1
+    #define USE_LED                             1
+    #define BRD_MAX                             4
+
 #elif (defined PRJ_IP_XXXXXXXXXX_AC_I1_O1)
 
     #define LANGUAGE                            1
@@ -737,6 +816,7 @@
     #define USE_BEEP                            1
     #define USE_LED                             1
     #define MONWAY                              1               // 1总检测  2分监分控  3分监不控
+    
 #elif (defined PRJ_IP_YUNNAN_AC_I1_O1)
     #define LANGUAGE                            0
     #define SMPLE_TIME                          30          //ms

+ 29 - 12
pro/src/app.c

@@ -1133,6 +1133,15 @@ static void* power_thread(void* arg)
                 _globalPowerInfo._power_info.OperAllowFlag=1;
             }   
 #endif
+
+#ifdef PRJ_JUNGONG_AC_I1_O1_OLED
+            if (_globalPowerMangerTemp->product_ch_id > 7)
+            {
+                _globalPowerInfo._power_info.OperAllowFlag=1;
+            }  
+#endif
+
+
             //全局记录一份数据
             if (!isErrorBreak)
             {
@@ -2405,8 +2414,8 @@ static void* sensor_thread(void* arg)
        // _globalDeviceManager->g_modebus_read.humidity = 0;
       //  _globalDeviceManager->g_modebus_read.fCO2 = 0;
 
-        uint32_t Max_Temprature=0;
-        uint32_t Max_Temprature2=0;
+        int32_t Max_Temprature=-999999;
+        int32_t Max_Temprature2=-999999;
         uint32_t Max_humi=0;
         uint32_t Max_CO2=0;
 
@@ -2485,9 +2494,9 @@ static void* sensor_thread(void* arg)
                 }
                 _globalSensorMangerTemp->Cur_sensor_info=_globalSensorInfo;
 
-                Max_Temprature=  _globalSensorInfo.val1*100>Max_Temprature? _globalSensorInfo.val1*100:Max_Temprature;
+                if(_globalSensorMangerTemp->sensor_status == 0)
+                    Max_Temprature=  _globalSensorInfo.val1*100>Max_Temprature? _globalSensorInfo.val1*100:Max_Temprature;
                 Max_humi=  _globalSensorInfo.val2*100>Max_humi? _globalSensorInfo.val2*100:Max_humi;
-
                 for(int i =0 ; i < NOARTH_MAX_SENSOR;i++)           //最多4个
                 {
                     if(_globalSensorMangerTemp->sensor_addr == sen.serser_addr[i])
@@ -2652,8 +2661,8 @@ static void* sensor_thread(void* arg)
                     _globalSensorMangerTemp->sensor_check_count = 0;
                 }
                 _globalSensorMangerTemp->Cur_sensor_info=_globalSensorInfo;
-
-                Max_Temprature=  _globalSensorInfo.val1*100>Max_Temprature? _globalSensorInfo.val1*100:Max_Temprature;
+                if(_globalSensorMangerTemp->sensor_status == 0)
+                    Max_Temprature=  _globalSensorInfo.val1*100>Max_Temprature? _globalSensorInfo.val1*100:Max_Temprature;
                 for(int i = 0 ; i < NOARTH_MAX_SENSOR;i++)           //最多4个
                 {
                     if(_globalSensorMangerTemp->sensor_addr == sen.serser_addr[i])
@@ -2777,9 +2786,11 @@ static void* sensor_thread(void* arg)
                 // log_d("sensor val:%0.2f %0.2f\n",temperature,humidity);
                 // printf("get temperature=%f   humidity=%f\n",temperature,humidity);
                 _globalSensorMangerTemp->Cur_sensor_info=_globalSensorInfo;
-
-                Max_Temprature=  _globalSensorInfo.val1*100>Max_Temprature? _globalSensorInfo.val1*100:Max_Temprature;
-                Max_Temprature2=  _globalSensorInfo.val2*100>Max_Temprature2? _globalSensorInfo.val2*100:Max_Temprature2;
+                if(_globalSensorMangerTemp->sensor_status == 0)
+                {
+                    Max_Temprature=  _globalSensorInfo.val1*100>Max_Temprature? _globalSensorInfo.val1*100:Max_Temprature;
+                    Max_Temprature2=  _globalSensorInfo.val2*100>Max_Temprature2? _globalSensorInfo.val2*100:Max_Temprature2;
+                }
 
                 for(int i = 0 ; i < NOARTH_MAX_SENSOR;i++)           //最多4个
                 {
@@ -2851,9 +2862,15 @@ static void* sensor_thread(void* arg)
             else usleep(1000);
         }
         lock_s_release(LOCK_ID_SENSOR);
-
-        _globalDeviceManager->g_modebus_read.temprature = Max_Temprature;
-        _globalDeviceManager->g_modebus_read.temprature2 = Max_Temprature2;
+        if(Max_Temprature == -999999)
+        {
+            _globalDeviceManager->g_modebus_read.temprature = 0;
+        }else
+            _globalDeviceManager->g_modebus_read.temprature = Max_Temprature;
+        if(Max_Temprature2 == -999999)
+            _globalDeviceManager->g_modebus_read.temprature2 = 0;
+        else
+            _globalDeviceManager->g_modebus_read.temprature2 = Max_Temprature2;
         _globalDeviceManager->g_modebus_read.humidity = Max_humi;
         _globalDeviceManager->g_modebus_read.fCO2 = Max_CO2;
 

+ 2 - 2
pro/src/common.h

@@ -1231,12 +1231,12 @@ struct modbus_slave_read_reg{
     uint32_t consumption_cur;           //耗电量
     uint32_t freq;                      //频率
     uint32_t factor;                    //功率因素
-    uint32_t temprature;                //温度值
+    int32_t temprature;                //温度值
     uint32_t humidity;                  //湿度值
     uint32_t warning;                   //告警
     uint16_t power_supplay_status;      //供电状态
     uint16_t sencor_status;             //传感器状态
-    uint32_t temprature2;                //温度值2
+    int32_t temprature2;                //温度值2
     uint32_t fCO2;                     //CO2
 
 //    uint32_t Warinfo;

+ 1 - 1
pro/src/ntpclient.c

@@ -129,7 +129,7 @@ NTPClient* createNTPClient(const char* ntp_server, int port, int timeout_sec) {
     client->res = NULL;
     client->flag = 0;
     pthread_create(&tid, NULL, tmp_thread, client);
-    pthread_detach(tid);
+    pthread_join(tid,NULL);
     for(int i=0; i<timeout_sec; i++) {
         if(client->flag) {
             break;

+ 1 - 1
pro/src/sensor_handle.c

@@ -62,7 +62,7 @@ int sensor_get_temperature_value(void* manger,int saddr,float* temp,float* humi)
     //解算湿度值
     *humi = data_temp[0]/10.0 ;
     //解算温度值
-    *temp = data_temp[1]/10.0 ; 
+    *temp = ((int16_t)data_temp[1])/10.0 ; 
     return 0;
 }
 int sensor_get_temperature_value_anderson(void* manger,int saddr,float* temp,float* humi)

+ 5 - 1
pro/ui/font.c

@@ -397,7 +397,7 @@ static const uint8_t font_en_2412[95][36] =
 };
 
 //新宋体▶→
-static const char *font_cn_str="→输出入通道状态率耗电压流量功率因素温湿度数据版本日期时间地址模式保存退出取消设置开关主从";
+static const char *font_cn_str="→输出入通道状态率耗电压流量功率因素温湿度数据版本日期时间地址模式保存退出取消设置开关主从℃";
 static const uint8_t font_cn_1212[][24] =
 {
 {0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0x20,0x00,0xA8,0x00,0x70,0x00,0x70,0x00,0x20,0x00,0x20,0x00,0x00,0x00},/*"→",0*/
@@ -445,6 +445,8 @@ static const uint8_t font_cn_1212[][24] =
 {0x40,0x08,0x48,0x08,0x49,0x04,0x4A,0x02,0x48,0x01,0xF8,0x00,0x48,0x01,0x4A,0x02,0x49,0x04,0x48,0x08,0x40,0x08,0x00,0x00},/*"关",42*/
 {0x00,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0x89,0x08,0xFA,0x0F,0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0x00,0x08,0x00,0x00},/*"主",43*/
 {0x00,0x08,0x00,0x06,0xE0,0x01,0x1F,0x00,0xE0,0x09,0x00,0x06,0xC0,0x01,0x3F,0x00,0xC0,0x01,0x00,0x06,0x00,0x08,0x00,0x00},/*"从",44*/
+{0x02,0x00,0x05,0x00,0x02,0x00,0xF8,0x00,0x04,0x01,0x02,0x02,0x02,0x02,0x02,0x02,0x04,0x02,0x0E,0x01,0x80,0x00,0x00,0x00},/*"℃",0*/
+
 };
 static const uint8_t font_cn_1616[][32] =
 {
@@ -493,6 +495,7 @@ static const uint8_t font_cn_1616[][32] =
 {0x00,0x81,0x00,0x81,0x10,0x41,0x11,0x41,0x16,0x21,0x10,0x11,0x10,0x0D,0xF0,0x03,0x10,0x0D,0x10,0x11,0x14,0x21,0x13,0x41,0x10,0x41,0x00,0x81,0x00,0x81,0x00,0x00},/*"关",42*/
 {0x00,0x40,0x08,0x40,0x08,0x41,0x08,0x41,0x08,0x41,0x08,0x41,0x09,0x41,0xFA,0x7F,0x08,0x41,0x08,0x41,0x08,0x41,0x08,0x41,0x08,0x41,0x08,0x40,0x00,0x40,0x00,0x00},/*"主",43*/
 {0x00,0x80,0x00,0x40,0x00,0x30,0x00,0x0E,0xFF,0x01,0x00,0x82,0x00,0x4C,0x00,0x20,0x00,0x18,0x00,0x07,0xFF,0x00,0x00,0x07,0x00,0x18,0x00,0x60,0x00,0x80,0x00,0x00},/*"从",44*/
+{0x06,0x00,0x09,0x00,0x09,0x00,0xE6,0x07,0xF8,0x1F,0x0C,0x30,0x04,0x20,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x02,0x40,0x04,0x20,0x1E,0x10,0x00,0x00,0x00,0x00},/*"℃",0*/
 };
 static const uint8_t font_cn_2424[][72] =
 {
@@ -541,6 +544,7 @@ static const uint8_t font_cn_2424[][72] =
 {0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x40,0x40,0x10,0x20,0x40,0x10,0x20,0x40,0x10,0x10,0x40,0x10,0x10,0x44,0x10,0x08,0x4C,0x10,0x04,0x78,0x10,0x03,0x40,0xD0,0x01,0xC0,0x7F,0x00,0xC0,0x13,0x00,0x40,0x70,0x00,0x70,0x90,0x01,0x4E,0x10,0x03,0x44,0x10,0x04,0x40,0x10,0x08,0x40,0x10,0x18,0x40,0x10,0x30,0x40,0x18,0x70,0x00,0x10,0x20,0x00,0x00,0x20,0x00,0x00,0x00},/*"关",42*/
 {0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x80,0x00,0x20,0x80,0x00,0x20,0x80,0x40,0x20,0x80,0x40,0x20,0x80,0x40,0x20,0x80,0x40,0x20,0x84,0x40,0x20,0x88,0x40,0x20,0xB8,0xFF,0x3F,0xF0,0xFF,0x3F,0x80,0x40,0x20,0x80,0x40,0x20,0x80,0x40,0x20,0x80,0x40,0x20,0x80,0x40,0x20,0x80,0x60,0x20,0xC0,0x40,0x20,0x80,0x00,0x30,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00},/*"主",43*/
 {0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x08,0x00,0x00,0x06,0x00,0xC0,0x01,0x00,0x7F,0x00,0xFC,0x0F,0x40,0x08,0x10,0x20,0x00,0x60,0x10,0x00,0xC0,0x19,0x00,0x00,0x0C,0x00,0x00,0x03,0x00,0xE0,0x01,0xFC,0x7F,0x00,0xF8,0x03,0x00,0x00,0x3C,0x00,0x00,0xC0,0x01,0x00,0x00,0x07,0x00,0x00,0x0C,0x00,0x00,0x38,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00},/*"从",44*/
+{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x88,0x00,0x00,0x88,0x00,0x00,0x70,0x00,0x00,0x00,0x7E,0x00,0x80,0xFF,0x03,0xC0,0x00,0x07,0x60,0x00,0x0C,0x30,0x00,0x08,0x10,0x00,0x18,0x10,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x08,0x20,0x00,0x08,0x20,0x00,0x04,0xC0,0x00,0x02,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"℃",0*/
 };
 
 static inline int utf8_chrlen(uint8_t *str)

+ 2 - 0
pro/ui/lang.c

@@ -34,6 +34,7 @@ const char *lang_str_pool[2][STR_ID_MAX]={
         "关",       //STR_ID_OFF
         "主",       //STR_ID_MASTER
         "从",       //STR_ID_SLAVE
+        "℃",             
     },
     
     {
@@ -59,6 +60,7 @@ const char *lang_str_pool[2][STR_ID_MAX]={
         "Off",      //STR_ID_OFF
         "Master",   //STR_ID_MASTER
         "Slave",    //STR_ID_SLAVE
+        "",
     },
 };
 

+ 1 - 2
pro/ui/lang.h

@@ -24,8 +24,7 @@ enum {
     STR_ID_OFF,
     STR_ID_MASTER,
     STR_ID_SLAVE,
-    
-    
+    STR_ID_TEMPLOG,
     STR_ID_MAX,
 };
 

+ 1 - 1
pro/ui/menu.c

@@ -338,7 +338,7 @@ static void menu_sensor_paint(menu_handle_t *h, int font1, int font2, int item_h
     sprintf(tmp, "%0.1f", dm->g_modebus_read.humidity/100.0f);
     lcd_draw_string(LCD_WIDTH/2, item_h*2, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 #else
-    sprintf(tmp, " %s: %0.1f", lang_get_str(h->lang, STR_ID_TEMP), h->dm->g_modebus_read.temprature/100.0f);
+    sprintf(tmp, " %s: %0.1f%s", lang_get_str(h->lang, STR_ID_TEMP), h->dm->g_modebus_read.temprature/100.0f,lang_get_str(0,STR_ID_TEMPLOG));
     lcd_draw_string(0, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 
     sprintf(tmp, " %s: %0.1f%%", lang_get_str(h->lang, STR_ID_HUMI), h->dm->g_modebus_read.humidity/100.0f);