d10休眠模式添加,gps修正
authorp15692025051 <846603105@qq.com>
Mon, 18 Sep 2023 08:02:27 +0000 (16:02 +0800)
committerp15692025051 <846603105@qq.com>
Mon, 18 Sep 2023 08:02:27 +0000 (16:02 +0800)
2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modHsensor_GH3018.c
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/Makefile
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/ui.py
2.sdk/project/D10/usr/static/storage_file/wechat_record.json [new file with mode: 0644]

index 19595de..a79510c 100644 (file)
@@ -449,7 +449,8 @@ STATIC mp_obj_t mp_GH3018_get_hrv(mp_obj_t self_in)
 //获取佩戴状态
 STATIC mp_obj_t mp_GH3018_get_wear(mp_obj_t self_in)
 {
-    return mp_obj_new_int(s_gh3018_wear_status);
+       return mp_obj_new_int(1);
+    //return mp_obj_new_int(s_gh3018_wear_status);
 }
 //获取所有数据  心律、血氧、高压、低压、HRV、佩戴状态
 STATIC mp_obj_t mp_GH3018_get_all_data(mp_obj_t self_in)
@@ -472,7 +473,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_activate_GH3018_obj, mp_activate_GH3018);//
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_get_blood_oxygen_obj, mp_GH3018_get_blood_oxygen);//
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_get_heart_obj, mp_GH3018_get_heart);//
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_get_blood_pressure_obj, mp_GH3018_get_blood_pressure);//
-STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_get_weart_obj, mp_GH3018_get_wear);//
+STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_get_wear_obj, mp_GH3018_get_wear);//
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_open_heart_obj, mp_GH3018_open_heart);//
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_open_blood_oxygen_obj, mp_GH3018_open_blood_oxygen);//
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_open_hrv_obj, mp_GH3018_open_hrv);//
@@ -488,7 +489,7 @@ STATIC const mp_rom_map_elem_t GH3018_locals_dict_table[] = {
        { MP_ROM_QSTR(MP_QSTR_get_blood_oxygen), MP_ROM_PTR(&mp_GH3018_get_blood_oxygen_obj)},
        { MP_ROM_QSTR(MP_QSTR_get_heart), MP_ROM_PTR(&mp_GH3018_get_heart_obj)},
        { MP_ROM_QSTR(MP_QSTR_get_blood_pressure), MP_ROM_PTR(&mp_GH3018_get_blood_pressure_obj)},
-       { MP_ROM_QSTR(MP_QSTR_get_weart), MP_ROM_PTR(&mp_GH3018_get_weart_obj)},
+       { MP_ROM_QSTR(MP_QSTR_get_wear), MP_ROM_PTR(&mp_GH3018_get_wear_obj)},
        { MP_ROM_QSTR(MP_QSTR_open_heart), MP_ROM_PTR(&mp_GH3018_open_heart_obj)},
        { MP_ROM_QSTR(MP_QSTR_open_blood_oxygen), MP_ROM_PTR(&mp_GH3018_open_blood_oxygen_obj)},
        { MP_ROM_QSTR(MP_QSTR_open_hrv), MP_ROM_PTR(&mp_GH3018_open_hrv_obj)},
index 48bc55a..a5adfa3 100644 (file)
@@ -948,7 +948,6 @@ frozen_mpy_list =   $(BUILD)/_boot.mpy \
                                        $(BUILD)/ymodem.mpy \
                                        $(BUILD)/alarm.mpy \
                                        $(BUILD)/appFactoryMode.mpy \
-                                       $(BUILD)/appWechat.mpy \
                                        $(BUILD)/btn_device_ec800m.mpy \
                                        $(BUILD)/capacitive_hynitron_cst816d_update.mpy \
                                        $(BUILD)/common.mpy \
index 6571d11..d9bd0ff 100644 (file)
@@ -1501,7 +1501,8 @@ class BtnDevice(Abstract):
                     usys.print_exception(e)
     def publish_message_event_btnInfo(self,event,msg):
         self.btnInfo_queue.put(msg)
-
+        EventMesh.publish(constants.EVENT.SYSTEM_UP)#唤醒休眠
+        
     def publish_wechat_btn_event_cb(self, *args, **kwargs):
         EventMesh.publish("publish_message_event_btnInfo",{"func":self.wechatKey_press_cb,"data":0})  
 
index 829658b..f4dfc22 100644 (file)
@@ -306,7 +306,7 @@ class ledEventManager(Abstract):#灯事件
     def led_fun_cb(self, data):#
         if self.led_enable ==0 and self.led_total_time == 0:
             return
-        # print("self.long_count",self.long_count)
+        print("self.long_count",self.long_count)
         if self.led_total_time != 0:
             #红灯闪烁
             if self.long_light_mode == led_mode.FLASH_LIGHT_RED :#
index f22eb33..d9f1614 100644 (file)
@@ -22,11 +22,16 @@ import usys
 import audio
 from machine import I2C
 from Gsensor import SC7A20
+import pm
 try :
     from Hsensor import GH3018
 except Exception as e:
     print("Hsensor none GH3018:{}".format(e))   
-# 
+#
+try :
+    from Hsensor import HX3918
+except Exception as e:
+    print("Hsensor none HX3918:{}".format(e))    
 from machine import RTC
 import quecgnss
 import wifiScan
@@ -695,7 +700,11 @@ class DeviceInfoManager(Abstract):
         self.gsensor.init()
         print("DeviceInfoManager:2")
         self.gsensor.set_callback(self.gsensor_cb)
-        
+        try :
+            self.hsensor = HX3918()
+            
+        except Exception as e:
+            print("Hsensor none HX3918:{}".format(e))   
         try :
             self.hsensor = GH3018()
         except Exception as e:
@@ -831,11 +840,13 @@ class DeviceInfoManager(Abstract):
 
         EventMesh.publish("countdown_end_cb")
         """定时检查是否关闭gps失败"""
-        gnss_state = quecgnss.get_state()
-        get_location_flag = EventMesh.publish("get_location_flag")
-        if get_location_flag != None:
-            if gnss_state == 2 and get_location_flag == 0:
-                EventMesh.publish(constants.EVENT.GPSCLOSE)
+        # gnss_state = quecgnss.get_state()
+        # get_location_flag = EventMesh.publish("get_location_flag")
+        # if get_location_flag != None:
+        #     # if gnss_state == 2 and get_location_flag == 0:
+        #     #     EventMesh.publish(constants.EVENT.GPSCLOSE)
+        #     if(get_location_flag == 0):
+        #         EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.UD_SEND) #开始UD定位
 
         """7分钟一次心跳"""
         if  math.fabs(time_tmp - self.KA_time) > 7*60: #7分钟一次心跳
@@ -843,16 +854,22 @@ class DeviceInfoManager(Abstract):
             EventMesh.publish(constants.PROTOCOL.KA_SEND)
 
         """定时定位"""
+        #EventMesh.publish("set_upload_data",3*60)
         self.upload_time = EventMesh.publish("get_upload_data")
         #print("self.upload_time:{} math.fabs(time_tmp - self.UD_time):{}".format(self.upload_time,math.fabs(time_tmp - self.UD_time)))
         if self.upload_time != None :
             if  math.fabs(time_tmp - self.UD_time) > self.upload_time: #30分钟一次定位
                 self.UD_time = time_tmp
                 status_tmp = self.gsensor.get_status()#获取运动次数
+                #status_tmp = 4
                 #EventMesh.txt_log("status_count:{}".format(status_tmp))
                 if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1 and status_tmp > 3 :
                     EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.UD_SEND) #开始UD定位
                     self.gsensor.clean_status()#清除运动次数
+                else : #关闭定位
+                    #EventMesh.txt_log("NO status")
+                    print("NO status")
+                    EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 
         EventMesh.publish(constants.EVENT.PUSH_STEP, self.get_step_count())
 
         """电池平均值"""
@@ -996,26 +1013,26 @@ class DeviceInfoManager(Abstract):
                 self.sms_full_flag = 0
 
         """定时测量心率,血氧,体温"""
-        # WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
+        WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
         self.get_hr_state = EventMesh.publish("get_hr_state")
         self.get_spo2_state = EventMesh.publish("get_spo2_state")
         get_temp_time  = EventMesh.publish("get_temp_time")
         get_temp_state  = EventMesh.publish("get_temp_state")
         hr_time = {}
         hr_time = EventMesh.publish("get_time_hr_spo2")#获取时间是否大于0
-        # if get_temp_state != None : #突然脱腕
-        #     if get_temp_state > 1 and WEAR != 1:
-        #         EventMesh.publish(constants.EVENT.STOP_TEMP)
-        #         EventMesh.publish("set_temp_state",0)       
-        #     if (self.get_hr_state > 1 or self.get_spo2_state > 1) and WEAR != 1:
-        #         if self.get_hr_state > 1 :
-        #             EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
-        #             EventMesh.publish(constants.EVENT.STOP_HEART) 
-        #         elif self.get_spo2_state > 1:
-        #             EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
-        #             EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-
-        if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1 and battery[0] != "1": #:
+        if get_temp_state != None : #突然脱腕
+            if get_temp_state > 1 and WEAR != 1:
+                EventMesh.publish(constants.EVENT.STOP_TEMP)
+                EventMesh.publish("set_temp_state",0)       
+            if (self.get_hr_state > 1 or self.get_spo2_state > 1) and WEAR != 1:
+                if self.get_hr_state > 1 :
+                    EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
+                    EventMesh.publish(constants.EVENT.STOP_HEART) 
+                elif self.get_spo2_state > 1:
+                    EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
+                    EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
+        if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1 and battery[0] != "1" and WEAR == 1:
+
             # print("get_temp_time:{} self.temp_one_state:{}".format(get_temp_time,self.temp_one_state))
             if get_temp_time != None:#定时测量体温
                 if get_temp_time > 0:
@@ -1864,8 +1881,7 @@ class DeviceInfoManager(Abstract):
         return data[0]
     
     def get_wear(self, topic, msg):
-        pass
-        # return self.hsensor.get_wear()
+        return self.hsensor.get_wear()
     
     def get_Hsensor(self, topic, msg):
         return self.hsensor
@@ -1941,6 +1957,7 @@ class DeviceInfoManager(Abstract):
 
 def wifiScan_cb(args):
         EventMesh.publish(constants.EVENT.WIFIINFO, args)
+        wifiScan.control(0)
 
 class LocationManager(Abstract):
 
@@ -1949,16 +1966,18 @@ class LocationManager(Abstract):
         self.match = GPSMatch()
         self.timer_read_GPS_info = osTimer()
         self.wifi_data = []
-        self.gps_data = []
+        self.gps_data  = {}
         self.cell_data = []
         self.location_timer_count = 0
         self.location_check_data_timer_count = 0
+        self.GGA_count = 0
+        self.RMC_A_count = 0
         self.location_type = 0 #定位类型,0:正常定位,有gps数据或60秒关闭;1:测试模式,只有发CLOSE_LOCATION消息才关闭
         self.location_flag = 0
         self.start_location_flag = 0
-        self.location_thread_id = 0
-        self.location_thread_id  = _thread.start_new_thread(self.location_thread, ())
+        self.location_thread_id  = 0
         self.location_queue = Queue(100)
+        self.lpm_fd = None
         #quecgnss.init()
         #quecgnss.gnssEnable(0)
     @staticmethod
@@ -1998,34 +2017,37 @@ class LocationManager(Abstract):
         return self.location_flag
     def start_location(self, event, msg):
         self.location_queue.put(msg)#测试类型入队
+        self.gps_data = {}
+        self.wifi_data = []
+        self.cell_data = []
+        self.location_timer_count = 0
+        self.GSV_sig_ok_count = 0
         print("start_location:{}".format(msg))
-        self.timer_read_GPS_info.start(1000, 1, self.location_timer)
         if( self.location_flag == 1):
             return
-        self.location_timer_count = 0
+        self.location_thread_id  = _thread.start_new_thread(self.location_thread, ())
         self.location_flag = 1
         #self.gps_open(event, msg)
 
-        self.start_location_flag = 1
 
     def start_location_test(self, event, msg):
         print("start_location_test")
-        self.timer_read_GPS_info.start(1000, 1, self.location_timer)
+        
+        self.location_type = 1
         if( self.location_flag == 1):
             return
+        self.location_thread_id  = _thread.start_new_thread(self.location_thread, ())
         self.location_timer_count = 0
         self.location_flag = 1
         #self.gps_open(event, msg)
         self.location_type = 1
-        self.start_location_flag = 1   
+ 
 
     def close_location(self, event, msg):
         self.location_flag = 0
         self.location_type = 0
-        self.gps.power_switch(0)
-        wifiScan.control(0)
-        self.timer_read_GPS_info.stop()
 
+        
 
     def WIFI_INFO(self, event, msg):
         self.wifi_data = msg
@@ -2034,11 +2056,12 @@ class LocationManager(Abstract):
 
     def WIFI_scan_open(self, event, msg):
         #print("WIFI_scan_open")
-        self.wifi_data = []
-        if wifiScan.support():
-            if wifiScan.getState() == False :
-                wifiScan.control(1)
-            wifiScan.setConfig(4, 2, 5, 6, 0)  #设置WiFi参数,10秒上层,两轮,最多6个,6秒底层,PS优先
+        
+
+        if wifiScan.getState() == False :
+            self.wifi_data = []
+            wifiScan.control(1)
+            wifiScan.setCfgParam(6, 2, 5,  0)  #设置WiFi参数,10秒上层,两轮,最多6个,6秒底层,PS优先
             wifiScan.setCallback(wifiScan_cb) #注册回调函数
             wifiScan.asyncStart()
             #print("wifiScan.asyncStart")
@@ -2058,8 +2081,11 @@ class LocationManager(Abstract):
 
     def Location_send(self, msg) :
         #print("Location_send1")
+        if self.location_queue.empty() == True:
+            return
         date = "{:04d}{:02d}{:02d},{:02d}{:02d}{:02d}".format(*utime.localtime()[0:6])
         date = date[2:]
+        #date = "180916,025723"
         GPS_type = "V"
         latitude = "0.000000,N"
         longitude = "0.000000,E"
@@ -2067,7 +2093,8 @@ class LocationManager(Abstract):
         direction = "0.0"
         high = "100.0"
         number = "0"
-        if msg[0] != [] :#有GPS数据
+        precision = "24"
+        if msg[0] :#有GPS数据
             GPS_type = "A"
             # 纬度
             latitude = msg[0]["latitude"]
@@ -2086,6 +2113,9 @@ class LocationManager(Abstract):
                 high = "%s"%(high_tmp[0])
             # 讯号质量:搜索到的卫星数目
             number = msg[0]["number"]
+            precision = msg[0]["precision"]
+            #date = msg[0]["date"]
+        
         #gsm 信号强度
         gsm_sig =  str((100//31)*EventMesh.publish("screen_get_sig"))
         # 电池电量百分比 
@@ -2145,6 +2175,7 @@ class LocationManager(Abstract):
         send_data += ",%s,%s,%s"%(battery_caption,step,turn_count)
         send_data += ",%s,%d,%s"%(state,CELL_num,CELL_data)
         send_data += ",%d,%s"%(WIFI_num,WIFI_data)
+        send_data+=",%s"%(precision)
         #print("Location_send2:{} q_size:{}".format(send_data,self.location_queue.size()))
         while True:
             if self.location_queue.empty() == False:
@@ -2157,134 +2188,231 @@ class LocationManager(Abstract):
 
     def location_thread(self):
         
-        gnss_r_data = ""
-        while True:
+        self.wifi_data = []
+        self.gps_data = {}
+        self.cell_data = []
+        gnss_r_data = []
+        self.GSV_sig_ok_count = 0
+        self.GGA_count = 0
+        self.RMC_A_count = 0
+        if self.lpm_fd == None:
+            self.lpm_fd = pm.create_wakelock("test_lock", len("test_lock"))
+        pm.wakelock_lock(self.lpm_fd)
+        print("location_thread:1")
+        EventMesh.publish(constants.EVENT.GPSOPEN)
+        print("location_thread:2")
+        self.timer_read_GPS_info.start(1000, 1, self.location_timer)
+        
+        #utime.sleep_ms(1000)
+        self.location_timer_count = 0
+        #quecgnss.read(4096)#去掉第一次错误数据
+        #EventMesh.txt_log("START_LOCATION")
+        # pm.autosleep(0)#唤醒
+        # pm.sclkEx_set(0, 1, 5)
+        while self.location_flag == 1:
             try :   
-                if self.location_flag == 1 :
+                
+                match_gga_data = []
+                #match_gsv_data = []
+                gnss_r_data = []
+                # if self.location_check_data_timer_count >= 3:
+                #     pm.autosleep(0)#唤醒
+                #     pm.sclkEx_set(0, 1, 5)
+                if self.location_check_data_timer_count >= 5 :#5秒查一次基站数据和wifi数据
+                    self.location_check_data_timer_count = 0
+                    #print(self.location_timer_count)
+                    #GSV_dict= {}
                     
-                    if self.start_location_flag == 1 :
-                        self.start_location_flag = 0
-                        self.wifi_data = []
-                        self.gps_data = []
-                        self.cell_data = []
-                        gnss_r_data = []
-                        print("location_thread:1")
-                        EventMesh.publish(constants.EVENT.GPSOPEN)
-                        print("location_thread:2")
-                        EventMesh.publish(constants.EVENT.WIFISCANOPEN)
-                        print("location_thread:3")
-                        utime.sleep_ms(1000)
-                        self.location_timer_count
-                        #quecgnss.read(4096)#去掉第一次错误数据
-                    match_gga_data = []
-                    #match_gsv_data = []
-                    gnss_r_data = []
-                    if self.location_check_data_timer_count > 3 :#5秒查一次基站数据和wifi数据
-                        self.location_check_data_timer_count = 0
-                        #print(self.location_timer_count)
-                        GSV_dict= {}
-                        GSV_sig_ok_count = 0
-                        #检查GNSS数据
-                        if (self.gps_data == [] or self.location_type == 1) and quecgnss.get_state() == 2:
-                            self.gps.__gps_nmea_data_clean()
-                            #gnss_r_data = [0,1]
-                            gnss_r_data = quecgnss.read(4096)
-                            #print("location gnss_r_data:{}".format(gnss_r_data[1].decode()))
-                            print("gnss_r_data len:{}".format(gnss_r_data[0]))
-                            if gnss_r_data[0] > 0 : #有数据
-                                gsv_data = gnss_r_data[1].split("GSV")           
-                                if len(gsv_data) >= 2 :  
-                                    gsv_data = gsv_data[1:]
-                                    for i in range(len(gsv_data)) :
-                                        gsv_data[i] = gsv_data[i].split("\r\n")[0]
-                                        gsv_tmp = gsv_data[i].split(",")
-                                        if len(gsv_tmp) < 7 :
-                                            break
-                                        gsv_tmp = gsv_tmp[4:]
-                                        #print("gsv_tmp:{}".format(gsv_tmp))
-                                        for i in range(len(gsv_tmp)) :
-                                            if i % 4 == 0:
-                                                GSV_dict[gsv_tmp[i]] = gsv_tmp[i+3]
-                                                try:
-                                                    #print("gsv_tmp[i+3]:{}".format(gsv_tmp[i+3]))
-                                                    if gsv_tmp[i+3] != "" :
-                                                        if int(gsv_tmp[i+3])>=24:
-                                                            GSV_sig_ok_count+=1
-                                                except Exception as e:
-                                                    usys.print_exception(e)
-                                                #print("GSV_dict:{}:[{}]".format(gsv_tmp[i],gsv_tmp[i+3]))
-                                            if len(gsv_tmp)-i < 4:
-                                                break 
-                                #match_gga_data = self.match.GxGGA(gnss_r_data[1]).split(",")
-                                #match_gsv_data = self.match.GxGSV(gnss_r_data[1]).split(",")
-                                if self.gps.__check_gps_valid(gnss_r_data[1].decode()): #数据齐全
-                                    match_gmc_data = self.match.GxRMC(gnss_r_data[1]).split(",")
-                                    match_vtg_data = self.match.GxVTG(gnss_r_data[1]).split(",")
-                                    match_gga_data = self.match.GxGGA(gnss_r_data[1]).split(",")
-                                    gps_data_tmp = self.gps.read_coordinates(gnss_r_data[1])
-                                    latitude_tmp = str(gps_data_tmp[1]).split(".")
-                                    if len(latitude_tmp) >= 2 and len(latitude_tmp[1])>=5:
-                                        latitude = "%s.%s"%(latitude_tmp[0],latitude_tmp[1][:6])
-                                    latitude = "%s,%s"%(latitude,match_gmc_data[4] )
-                                    longitude_tmp = str(gps_data_tmp[0]).split(".")
-                                    if len(longitude_tmp) >= 2 and len(longitude_tmp[1])>=5:
-                                        longitude = "%s.%s"%(longitude_tmp[0],longitude_tmp[1][:6])
-                                    longitude = "%s,%s"%(longitude,match_gmc_data[6] ) #match_gmc_data[6] + str(gnss_r_data[1])
-                                    high = str(gps_data_tmp[2])
-                                    self.gps_data = {
-                                        "latitude": latitude,
-                                        "longitude": longitude,
-                                        "high": high,
-                                        "direction": match_vtg_data[1],
-                                        "speed": match_vtg_data[5],
-                                        "number": match_gga_data[7],   
-                                    }
-                            #检查wifi数据
-                            if self.wifi_data == [] or (self.wifi_data != [] and self.wifi_data[0] == 0):#and self.wifi_data[0] <= 0:
-                                EventMesh.publish(constants.EVENT.WIFISCANOPEN)
+                    #检查GNSS数据
+                    if ( self.gps_data == {} or self.location_type == 1) and quecgnss.get_state() == 2:
                         
-                            #检查基站数据
-                            if self.cell_data == []:   
-                                data_tmp = net.getCellInfo()
-                                for cell in data_tmp:
-                                    if cell and cell[0][0] == 0 and len(cell[0]) > 1:
-                                        self.cell_data = cell
+                        self.gps.__gps_nmea_data_clean()
+                        #gnss_r_data = [0,1]
+                        gnss_r_data = quecgnss.read(4096)
+                        #EventMesh.txt_log("gps Datalen:{}".format(gnss_r_data[0]))
+                        print("location gnss_r_data:len{}\n{}".format(gnss_r_data[0],gnss_r_data[1].decode()))
+                        #print("gnss_r_data len:{}".format(gnss_r_data[0]))
+                        if gnss_r_data[0] > 0 : #有数据
+                            tmp_ok_count = 0
+                            gsv_data = gnss_r_data[1].split("GSV")
+                                      
+                            if len(gsv_data) >= 2 :  
+                                gsv_data = gsv_data[1:]
+                                for i in range(len(gsv_data)) :
+                                    gsv_data[i] = gsv_data[i].split("\r\n")[0]
+                                    gsv_tmp = gsv_data[i].split(",")
+                                    if len(gsv_tmp) < 7 :
                                         break
-                    if self.location_timer_count >= 60*7 : #4分钟关闭
+                                     
+                                    gsv_tmp = gsv_tmp[4:]
+                                    #print("gsv_tmp:{}".format(gsv_tmp))
+                                    for i in range(len(gsv_tmp)) :
+                                        if i % 4 == 0:
+                                            #GSV_dict[gsv_tmp[i]] = gsv_tmp[i+3]
+                                            try:
+                                                #print("gsv_tmp[i+3]:{}".format(gsv_tmp[i+3]))
+                                                if gsv_tmp[i+3] != "" :
+                                                    if int(gsv_tmp[i+3])>=20:
+                                                        tmp_ok_count +=1    
+                                            except Exception as e:
+                                                usys.print_exception(e)
+                                            #print("GSV_dict:{}:[{}]".format(gsv_tmp[i],gsv_tmp[i+3]))
+                                        if len(gsv_tmp)-i < 4:
+                                            break 
+                                
+                                if(tmp_ok_count > self.GSV_sig_ok_count ):
+                                    self.GSV_sig_ok_count = tmp_ok_count
+                            
+
+                            # if len(match_gga_data) > 8:
+                            #     #print(match_gga_data)
+                            #     if(match_gga_data[7] ):
+                            #         gga_count_tmp = int(match_gga_data[7]) #可用卫星
+                            #         if(gga_count_tmp > self.GGA_count):
+                            #             self.GGA_count = gga_count_tmp
+                            print("GGA_count:{} GSV_sig_ok_coun:{} ".format(self.GGA_count,self.GSV_sig_ok_count))
+                            
+                            match_rmc_data = self.match.GxRMC(gnss_r_data[1]).split(",")
+                             
+                            #print("match_rmc_data:\n{}".format(match_rmc_data))
+                            if len (match_rmc_data)>3: #有rmc数据
+                                if match_rmc_data[2] == 'A':
+                                    
+                                    if  self.gps.__check_gps_valid(gnss_r_data[1].decode()): #数据齐全 :
+                                        
+                                        #print("hhhhhh:{}\n\n".format(self.gps.__gsv_data))
+                                        match_vtg_data = self.gps.__vtg_data.split(",")#self.match.GxVTG(gnss_r_data[1]).split(",")
+                                        match_gga_data = self.gps.__gga_data.split(",")#self.match.GxGGA(gnss_r_data[1]).split(",")
+                                        #match_gga_data = self.match.GxGGA(gnss_r_data[1]).split(",")
+                                        
+                                        EventMesh.txt_log("GGA:{}".format(match_gga_data))
+                                        # EventMesh.txt_log("VTG:{}".format(match_vtg_data))
+                                        # EventMesh.txt_log("RMC:{}".format(match_rmc_data)) 
+                                        # EventMesh.txt_log("timer:{} ok_count:{} count:{}\n".format(self.location_timer_count,self.GSV_sig_ok_count,self.GGA_count))   
+                                        print("LOCATION_ok :time:{}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n".format(self.location_timer_count))
+                                        gps_date = "%s,%s"%(match_rmc_data[9],match_rmc_data[1][:6])#日期
+                                        gps_data_tmp = self.gps.read_coordinates(gnss_r_data[1])
+                                        latitude = "0,N" #纬度
+                                        latitude_tmp = str(gps_data_tmp[1]).split(".")
+                                        if len(latitude_tmp) >= 2 and len(latitude_tmp[1])>=5:
+                                            latitude = "%s.%s"%(latitude_tmp[0],latitude_tmp[1][:6])
+                                            latitude = "%s,%s"%(latitude,match_rmc_data[4] )
+
+                                        longitude = "0,E"#经度
+                                        longitude_tmp = str(gps_data_tmp[0]).split(".")
+                                        if len(longitude_tmp) >= 2 and len(longitude_tmp[1])>=5:
+                                            longitude = "%s.%s"%(longitude_tmp[0],longitude_tmp[1][:6])
+                                            longitude = "%s,%s"%(longitude,match_rmc_data[6] ) #match_rmc_data[6] + str(gnss_r_data[1])
+                                        
+                                        high = "0"#高度
+                                        high = str(gps_data_tmp[2])
+                                        number = "0"#可用卫星
+                                        precision = "5.8"#精度
+                                        if len(match_gga_data)>5 :
+                                            if match_gga_data[7]:
+                                                number = match_gga_data[7]
+                                            if match_gga_data[8]:
+                                                precision = match_gga_data[8]
+                                        direction = "249.5" #方向
+                                        speed = '0.00'    #速度    
+                                        if(len(match_vtg_data)>5 ):
+                                            if match_vtg_data[1]:
+                                                direction =  match_vtg_data[1]
+                                            if match_vtg_data[7]:    
+                                                speed =  match_vtg_data[7]
+                                        self.gps_data = {
+                                            "latitude": latitude,
+                                            "longitude": longitude,
+                                            "high": high,
+                                            "direction": direction,
+                                            "speed": speed,
+                                            "number": number, 
+                                            "date":  gps_date,
+                                            "precision":  precision
+                                        }
+                                    else :
+                                        EventMesh.txt_log("gps数据不全")
+                        else :
+                            EventMesh.txt_log("gps 无数据")
+
+
+
+                #检查wifi数据
+                if self.wifi_data == [] or (self.wifi_data != [] and self.wifi_data[0] == 0):#and self.wifi_data[0] <= 0:
+                    EventMesh.publish(constants.EVENT.WIFISCANOPEN)
+            
+                #检查基站数据
+                if self.cell_data == []:   
+                    data_tmp = net.getCellInfo()
+                    if(len(data_tmp)>=2):
+                        for cell in data_tmp:
+                            if cell and cell[0][0] == 0 and len(cell[0]) > 1:
+                                self.cell_data = cell
+                                break
+
+                if self.location_type == 1: #测试模式
+                    self.location_timer_count = 0
+                    if len(gnss_r_data) >= 1:
+                        if gnss_r_data[0] > 0:
+                            EventMesh.publish("PUSH_LOCATION_DATA", [gnss_r_data,self.wifi_data,self.cell_data]) 
+                    if self.gps_data  != {} : #发送数据 
                         EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位
+                        self.location_queue.put(constants.PROTOCOL.UD_SEND)
+                        self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
+                        
+
+                elif self.location_type == 0: #正常模式     
+                    if self.gps_data  != {} or self.location_timer_count > 100: #or( self.wifi_data != [] and self.cell_data != []): 
+                        if self.location_queue.empty() == False:#有定位队列
+                            EventMesh.txt_log("LOCATION:timer:{} ok_count:{} ".format(self.location_timer_count,self.GSV_sig_ok_count))
+                        upload_time = EventMesh.publish("get_upload_data")
+                        
+                            
+                        self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
+                        #if upload_time > 200  : 
+                        EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位
+                        # else:   #定位间隔小于3分钟不关闭gps,不影响无信号判断
+                        #     self.location_timer_count = 0
+                        #     self.GSV_sig_ok_count = 0
+                            
+                        
+                    # if  (self.GGA_count < 3 and self.GSV_sig_ok_count < 2) and self.wifi_data  and self.cell_data  and self.location_timer_count > 30 and self.location_timer_count < 40: #超过20秒且有效卫星个数少于3
+                    #     EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位    
+                    #     EventMesh.txt_log("GGA_count<3:timer:{} ok_count:{} count:{}".format(self.location_timer_count,self.GSV_sig_ok_count,self.GGA_count))
+                    #     self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
+                        
+                    if self.GSV_sig_ok_count <= 1 and self.wifi_data != [] and self.cell_data != [] and self.location_timer_count > 20: #超过40秒且信号大于30的不足3个
+                        EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位   
+                        EventMesh.txt_log("GSV_sig_ok_count<3:timer:{} ok_count:{} count:{}".format(self.location_timer_count,self.GSV_sig_ok_count,self.GGA_count))
+                        self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
                         #break
-                    #EventMesh.txt_log("GSV_sig_ok_count :{}".format(GSV_sig_ok_count))
-                    if self.location_type == 1: #测试模式
-                        if len(gnss_r_data) >= 1:
-                            if gnss_r_data[0] > 0:
-                                EventMesh.publish("PUSH_LOCATION_DATA", [gnss_r_data,self.wifi_data,self.cell_data]) 
-                    elif self.location_type == 0: #正常模式     
-                        if self.gps_data  != [] or self.location_timer_count > 180: #or( self.wifi_data != [] and self.cell_data != []): 
-                            self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
-                            EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位
-                            EventMesh.txt_log("CLOSE_LOCATION:location_timer_count:{}".format(self.location_timer_count))
-                            #break
- 
-                        if len(GSV_dict) < 2 and GSV_sig_ok_count < 1 and self.wifi_data != [] and self.cell_data != [] and self.location_timer_count > 20: #超过20秒且卫星个数少于3
-                            self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
-                            EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位    
-                            EventMesh.txt_log("len(GSV_dict) < 2")
-                        if GSV_sig_ok_count < 3 and self.wifi_data != [] and self.cell_data != [] and self.location_timer_count > 40: #超过40秒且信号大于30的不足3个
-                            self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
-                            EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位   
-                            EventMesh.txt_log("GSV_sig_ok_count < 3")
-                            #break
-                    utime.sleep_ms(1000)
-                    #print("location_timer_count:{}".format(self.location_timer_count))
-                else :
-                    utime.sleep_ms(2000)
+                # if self.location_type != 1 and self.location_timer_count >= 60*4 : #4分钟关闭
+                #     EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位
+                    #break
+                #EventMesh.txt_log("self.GSV_sig_ok_count :{}".format(self.GSV_sig_ok_count))
+                #EventMesh.publish("set_old_step_value",self.location_timer_count)
+                
+                #print("location_timer_count:{}".format(self.location_timer_count))
+                
             except Exception as e:
                 usys.print_exception(e)
-                utime.sleep_ms(1000)
-                print("location_thread:ERROR:{}\r\n{}".format(e,Exception))
+                EventMesh.txt_log("location_thread:ERROR:".format(e))
+                #print("location_thread:ERROR:{}".format(usys.print_exception(e)))
                 print("self.gps_data{},self.wifi_data{},self.cell_data{}".format(self.gps_data,self.wifi_data,self.cell_data))
-                self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
+                #self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
                 EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 
+            utime.sleep_ms(500)
+        self.timer_read_GPS_info.stop()
+        self.gps.power_switch(0)
+        wifiScan.control(0)
+        # if EventMesh.publish("get_lcd_state" ) == 0:#休眠的时候,恢复休眠
+        #     pm.autosleep(1)
+        #     pm.sclkEx_set(1, 1, 5)
+        if self.lpm_fd != None:
+            pm.wakelock_unlock(self.lpm_fd)
+        #pm.delete_wakelock(lpm_fd)
+        print("CLOSE_LOCATION")
+        #EventMesh.txt_log("CLOSE_LOCATION")
 
                 
 
index 6d1b339..149d17a 100644 (file)
@@ -23,7 +23,7 @@ import usys
 
 
 def server_init(server_type = None):
-    #服务器选择1,防走丢,2大锤,3三基同创,4童信
+    #服务器选择1,防走丢,2大锤,3三基同创,4童信,5云米,6荣为
     if server_type == None:
         server_type = 1
     #print("server_init:server_type:{}".format(server_type))
@@ -56,6 +56,11 @@ def server_init(server_type = None):
         d_server_port = 8505
         d_md5_key = ""
         d_PID = "3G"
+    elif server_type == 6:
+        d_server_addr = "120.26.104.21"
+        d_server_port = 9968
+        d_md5_key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
+        d_PID = "SZKW"
     return [d_server_addr,d_server_port,d_md5_key,d_PID]
 from queue import Queue
 def unicode_to_utf8(src):
@@ -157,7 +162,7 @@ class SockManager(Abstract):
 
     def connect(self):
         print("connect1{}:{}".format(self.server_addr, self.server_port))
-        if EventMesh.publish("network_state") == 0: #没注网
+        if EventMesh.publish("get_sim_Status") != 1: #没sim
             return
         try:
             if(self.sock != None) :
@@ -203,7 +208,7 @@ class SockManager(Abstract):
             data = self.socket_send_queue.get()
             print("TCP:send data1 len:{}".format(len(data)))
 
-            # print("ui_queue_thread:data = {}".format(data))
+            #print("ui_queue_thread:data = {}".format(data))
             socketsta = self.sock.getsocketsta() 
             if(socketsta == -1): #给释放了或者出错了
                 continue
@@ -215,8 +220,8 @@ class SockManager(Abstract):
                     except Exception as e:
                         self.reconnect()
                         self.socket_send_queue.put(data)#重新把数据加回队列
-                        print("socket_send_queue_thread1:ERROR:")
-                        usys.print_exception(e)
+                        #print("socket_send_queue_thread1:ERROR:")
+                        #usys.print_exception(e)
             elif socketsta < 4:#正在连接,等待连接成功重新发送
                 count = 0
                 while True:
@@ -230,8 +235,8 @@ class SockManager(Abstract):
                         except Exception as e:
                             self.reconnect()
                             self.socket_send_queue.put(data)#重新把数据加回队列
-                            print("socket_send_queue_thread2:ERROR:")
-                            usys.print_exception(e)
+                            #print("socket_send_queue_thread2:ERROR:")
+                            #usys.print_exception(e)
                         break
             else :#连接错误
                 print("socket_send_queue_thread:ERROR:reconnect")
@@ -240,7 +245,7 @@ class SockManager(Abstract):
 
     def send(self, topic, msg):
        # print("TCP:send data:{}".format(msg))
-        if EventMesh.publish("network_state") == 0: #没注网,则不发送
+        if EventMesh.publish("get_sim_Status") != 1: #没sim,则不发送
             EventMesh.publish(constants.EVENT.SET_CONNECT, 0)#标记断网
             print("dataCall not connect")
             return
@@ -266,7 +271,7 @@ class SockManager(Abstract):
                 data = data + r
                 print("TCP recv: data:len:{}".format(len(data)))
                 
-                # print("TCP recv: data:{}".format(data))
+                print("TCP recv: data:{}".format(data))
                 if data[-1] != 0x5d and len(data)<20*1024: #']':
                     continue
                 self.connect_tmp = 1 #有数据,就认为是连接状态
@@ -282,8 +287,8 @@ class SockManager(Abstract):
                 
                 data = b''
             except Exception as e:
-                print("TCP:ERROR:recv:")
-                usys.print_exception(e)
+                #print("TCP:ERROR:recv:")
+                #usys.print_exception(e)
                 self.run_flag = False
                 self.reconnect()
                 
@@ -547,7 +552,7 @@ class UD_ProtoCol(ProtoCol):
         
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
-        print("UD:data:{}".format(data))
+        #EventMesh.txt_log("{}".format(data))
         # wt_data = EventMesh.publish("get_weather_data")
         # # #如果没有天气数据,则获取天气数据
         # if wt_data != None or wt_data[0] == None :
index f6395b3..0f3463a 100644 (file)
@@ -1,6 +1,5 @@
 import utime
 import osTimer
-import lvgl as lv
 import EventMesh
 from machine import Timer
 import voiceCall
@@ -31,5904 +30,12 @@ def audio_cb(event):
 CALL_LOG_MAX = 50
 aud = audio.Audio(0)
 aud.setCallback(audio_cb)
-# -----------------------------------------style create--------------------------------------
-style_screen = lv.style_t()
-style_screen.init()
-style_screen.set_radius(0)
-style_screen.set_bg_color(lv.color_make(0x00, 0x00, 0x00))
-style_screen.set_bg_opa(255)
-style_screen.set_border_width(0)
-style_screen.set_pad_left(0)
-style_screen.set_pad_right(0)
-style_screen.set_pad_top(0)
-style_screen.set_pad_bottom(0)
 
-style_bar = lv.style_t() 
-style_bar.init()
-style_bar.set_radius(10)
-style_bar.set_bg_color(lv.color_make(0xA0, 0xA0, 0xA0))
-style_bar.set_bg_grad_color(lv.color_make(0xA0, 0xA0, 0xA0))
-style_bar.set_bg_grad_dir(lv.GRAD_DIR.VER)
-style_bar.set_bg_opa(60)
-style_bar.set_pad_left(0)
-style_bar.set_pad_right(0)
-style_bar.set_pad_top(0)
-style_bar.set_pad_bottom(0)
 
+import audio
+from machine import Pin
 
-style_bar_indic = lv.style_t()
-style_bar_indic.init()
-style_bar_indic.set_radius(10)
-style_bar_indic.set_bg_color(lv.color_make(0xff, 0x61, 0x3a))
-style_bar_indic.set_bg_grad_color(lv.color_make(0xff, 0x61, 0x3a))
-style_bar_indic.set_bg_grad_dir(lv.GRAD_DIR.VER)
-style_bar_indic.set_bg_opa(255)
-# 默认白色
-
-style_font_youyuan_20 = lv.style_t()
-style_font_youyuan_20.init()
-style_font_youyuan_20.set_text_color(lv.color_make(0xff, 0xff, 0xff))
-style_font_youyuan_20.set_text_font_v2("font_28.bin",28,0)
-
-style_font_youyuan_40 = lv.style_t()
-style_font_youyuan_40.init()
-style_font_youyuan_40.set_text_color(lv.color_make(0xff, 0xff, 0xff))
-style_font_youyuan_40.set_text_font_v2("font_40.bin",40,0)
-#黑色
-style_font_youyuan_20_black = lv.style_t()
-style_font_youyuan_20_black.init()
-style_font_youyuan_20_black.set_text_color(lv.color_make(0x00, 0x00, 0x00))
-style_font_youyuan_20_black.set_text_font_v2("font_28.bin",28,0)
-
-
-style_font_youyuan_20_red = lv.style_t()
-style_font_youyuan_20_red.init()
-style_font_youyuan_20_red.set_text_color(lv.color_make(0xff, 0x00, 0x00))
-style_font_youyuan_20_red.set_text_font_v2("font_28.bin",28,0)
-
-style_img = lv.style_t()
-style_img.init()
-style_img.set_img_opa(255)
-
-style_line = lv.style_t()
-style_line.init()
-style_line.set_line_width(2)
-style_line.set_line_color(lv.color_make(0xff, 0xff, 0xff))
-
-
-style_list = lv.style_t()
-style_list.init()
-style_list.set_bg_color(lv.color_make(0x00, 0x00, 0x00))
-style_list.set_radius(0)
-style_list.set_bg_opa(255)
-style_list.set_border_width(0)
-style_list.set_pad_left(0)
-style_list.set_pad_right(0)
-style_list.set_pad_top(0)
-
-style_list_scro = lv.style_t()
-style_list_scro.init()
-style_list_scro.set_bg_opa(0)
-
-# create style style_btn
-style_btn = lv.style_t()
-style_btn.init()
-style_btn.set_bg_opa(0)
-style_btn.set_shadow_opa(0)
-style_btn.set_border_width(0)
-
-style_wechat_btn =  lv.style_t()
-style_wechat_btn.init()
-style_wechat_btn.set_bg_color(lv.color_make(0x1E, 0x26, 0xff))
-style_wechat_btn.set_border_width(0)
-style_wechat_btn.set_shadow_opa(0)
-
-style_contact_btn =  lv.style_t()
-style_contact_btn.init()
-style_contact_btn.set_bg_color(lv.color_make(0xff, 0xff, 0xff))
-style_contact_btn.set_border_width(0)
-style_contact_btn.set_shadow_opa(0)
-
-style_common_bg_rect_btn_pressed =  lv.style_t()
-style_common_bg_rect_btn_pressed.init()
-style_common_bg_rect_btn_pressed.set_bg_color(lv.color_make(0x1E, 0x26, 0xff))
-style_common_bg_rect_btn_pressed.set_bg_opa(100)
-style_common_bg_rect_btn_pressed.set_border_width(0)
-style_common_bg_rect_btn_pressed.set_shadow_opa(0)
-
-style_contact_btn_pressed = lv.style_t()
-style_contact_btn_pressed.init()
-style_contact_btn_pressed.set_radius(5)
-style_contact_btn_pressed.set_bg_color(lv.color_make(0xff,0xff,0xff))
-style_contact_btn_pressed.set_bg_grad_color(lv.color_make(0x21,0x95,0xf6))
-style_contact_btn_pressed.set_bg_grad_dir(lv.GRAD_DIR.HOR)
-style_contact_btn_pressed.set_bg_opa(217)
-style_contact_btn_pressed.set_border_color(lv.color_make(0x21,0x95,0xf6))
-style_contact_btn_pressed.set_border_width(0)
-style_contact_btn_pressed.set_border_opa(255)
-style_contact_btn_pressed.set_text_color(lv.color_make(0x00,0x00,0x00))
-
-
-style_alipay_btn = lv.style_t()
-style_alipay_btn.init()
-style_alipay_btn.set_bg_color(lv.color_make(0xFF, 0xFF, 0xff))
-style_alipay_btn.set_bg_opa(20)
-style_alipay_btn.set_border_width(0)
-style_alipay_btn.set_shadow_opa(0)
-
-
-
-style_circle = lv.style_t()
-style_circle.init()
-style_circle.set_bg_color(lv.color_make(0xff, 0xff, 0xff))
-style_circle.set_radius(0x7FFF)
-
-
-
-from common import Abstract
-
-class Screen(Abstract):
-    meta_type = "UI"
-    def __init__(self):
-        self.meta = None
-        self.meta_info = None
-        
-    #     self.bg_img = None
-
-    # def set_bg_img(self, _fp):
-    #     print("bg _fp = {} NAME = {} bg_img = {}".format(_fp, self.NAME, self.bg_img))
-    #     if self.bg_img:
-    #         self.bg_img.set_src(_fp)
-  
-    def load_screen(self, e, msg):
-        print("msg = {}".format(msg))
-        EventMesh.publish("load_screen", msg)
-    
-
-
-    def load(self):
-        pass
-
-    def get_meta(self):
-        return self.meta
-
-    def Close(self):
-        pass
-    def lcd_on(self):
-        pass
-    def lcd_off(self):
-        pass
-    def done_left_to_right(self):
-        pass
-
-    def done_right_to_left(self):
-        pass
-
-    def done_bottom_to_top(self):
-        pass
-
-    def done_top_to_bottom(self):
-        pass
-
-    def done_return(self):
-        pass
-
-    def done_click(self):
-        pass
-
-    def done_error(self):
-        pass
-    def handle_message_event(self,data):
-        pass
-    def publish_message_event(self,data):
-        EventMesh.publish("publish_message_event_ui", data)
-
-PHONE_CALL_MAX_DATA = 22
-
-phone_line_points = [{"x":0,"y":0},{"x":0,"y":40}]
-phone_screen = None
-phone_line = None
-phone_label = None
-phone_one = None
-phone_two = None
-phone_three = None
-phone_four = None
-phone_five = None
-phone_six = None
-phone_seven = None
-phone_eight = None
-phone_nine = None
-phone_start = None
-phone_zero = None
-phone_hash = None
-phone_call = None
-phone_call_btn = None
-phone_contact = None
-phone_contact_btn = None
-phone_delete = None
-phone_delete_btn = None
-
-class PhoneScreen(Screen):
-    NAME = "Phone"
-
-    def __init__(self):
-
-        super().__init__()
-        self.meta = None
-        self.phone_num = ''
-        self.phone_list = []
-        self.button = 0
-        self.timer = osTimer()
-        self.timer_cb = 0
-        self.count = 0
-        
-    
-
-    def initialization(self):
-        self.phone_num=''
-        self.phone_list = []
-        global phone_screen ,phone_line,phone_label,phone_one,phone_two,phone_three,phone_four,phone_five,phone_six,phone_seven,phone_eight,phone_nine,phone_start,\
-        phone_zero,phone_hash,phone_call,phone_call_btn,phone_contact,phone_contact_btn,phone_delete,phone_delete_btn
-
-
-        if phone_screen == None:
-            phone_screen = lv.obj()
-            print("phone_screen")
-            phone_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            phone_line = lv.line(phone_screen)
-            phone_line.set_points(phone_line_points,2)
-            phone_line.set_pos(235,8)
-            phone_line.set_size(2,40)
-            phone_line.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            phone_line.add_style(style_line,0)
-
-            phone_label = lv.label(phone_screen)
-            phone_label.set_pos(0, 14)
-            phone_label.set_size(0, 48)
-            phone_label.set_text(" ")
-            phone_label.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_label.set_long_mode(lv.label.LONG.CLIP)
-            phone_label.set_style_text_align(lv.TEXT_ALIGN.RIGHT, 0)
-
-            phone_one = lv.img(phone_screen)
-            phone_one.set_src("U:/static/IMAGE_NUMBER_KEY1_ICON.png")
-            phone_one.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_one.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_one.set_pos(3, 60)
-            phone_one.set_size(76, 50)
-
-            phone_two = lv.img(phone_screen)
-            phone_two.set_size(76, 50)
-            phone_two.set_src("U:/static/IMAGE_NUMBER_KEY2_ICON.png")
-            phone_two.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_two.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_two.set_pos(82, 60)
-
-            phone_three = lv.img(phone_screen)
-            phone_three.set_size(76, 50)
-            phone_three.set_src("U:/static/IMAGE_NUMBER_KEY3_ICON.png")
-            phone_three.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_three.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_three.set_pos(161, 60)
-
-            phone_four = lv.img(phone_screen)
-            phone_four.set_size(76, 50)
-            phone_four.set_src("U:/static/IMAGE_NUMBER_KEY4_ICON.png")
-            phone_four.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_four.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_four.set_pos(3, 112)
-
-            phone_five = lv.img(phone_screen)
-            phone_five.set_size(76, 50)
-            phone_five.set_src("U:/static/IMAGE_NUMBER_KEY5_ICON.png")
-            phone_five.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_five.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_five.set_pos(82, 112)
-
-            phone_six = lv.img(phone_screen)
-            phone_six.set_size(76, 50)
-            phone_six.set_src("U:/static/IMAGE_NUMBER_KEY6_ICON.png")
-            phone_six.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_six.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_six.set_pos(161, 112)
-
-            phone_seven = lv.img(phone_screen)
-            phone_seven.set_size(76, 50)
-            phone_seven.set_src("U:/static/IMAGE_NUMBER_KEY7_ICON.png")
-            phone_seven.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_seven.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_seven.set_pos(3, 164)
-
-            phone_eight = lv.img(phone_screen)
-            phone_eight.set_size(76, 50)
-            phone_eight.set_src("U:/static/IMAGE_NUMBER_KEY8_ICON.png")
-            phone_eight.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_eight.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_eight.set_pos(82, 164)
-
-            phone_nine = lv.img(phone_screen)
-            phone_nine.set_size(76, 50)
-            phone_nine.set_src("U:/static/IMAGE_NUMBER_KEY9_ICON.png")
-            phone_nine.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_nine.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_nine.set_pos(161, 164)
-
-            phone_start = lv.img(phone_screen)
-            phone_start.set_size(76, 50)
-            phone_start.set_src("U:/static/IMAGE_NUMBER_KEYSTAR_ICON.png")
-            phone_start.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_start.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_start.set_pos(3, 216)
-
-            phone_zero = lv.img(phone_screen)
-            phone_zero.set_size(76, 50)
-            phone_zero.set_src("U:/static/IMAGE_NUMBER_KEY0_ICON.png")
-            phone_zero.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_zero.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_zero.set_pos(82, 216)
-
-            phone_hash = lv.img(phone_screen)
-            phone_hash.set_size(76, 50)
-            phone_hash.set_src("U:/static/IMAGE_NUMBER_KEYHASH_ICON.png")
-            phone_hash.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_hash.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_hash.set_pos(161, 216)
-
-            phone_call = lv.img(phone_screen)
-            phone_call.set_size(76, 50)
-            phone_call.set_src("U:/static/IMAGE_BUTTON_DIAL.png")
-            phone_call.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_call.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_call.set_pos(3, 270)
-
-            phone_call_btn = lv.img(phone_screen)
-            phone_call_btn.set_size(76, 52)
-            phone_call_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_call_btn.set_pos(3, 268)
-
-            phone_contact = lv.img(phone_screen)
-            phone_contact.set_size(64, 50)
-            phone_contact.set_src("U:/static/IMAGE_BUTTON_DIAL_CONTACT.png")
-            phone_contact.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_contact.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_contact.set_pos(87, 270)
-
-            phone_contact_btn = lv.img(phone_screen)
-            phone_contact_btn.set_size(76, 52)
-            phone_contact_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_contact_btn.set_pos(87, 268)
-
-            phone_delete = lv.img(phone_screen)
-            phone_delete.set_size(76, 50)
-            phone_delete.set_src("U:/static/IMAGE_BUTTON_DELKEY.png")
-            phone_delete.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_delete.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            phone_delete.set_pos(161, 270)
-
-            phone_delete_btn = lv.img(phone_screen)
-            phone_delete_btn.set_size(76, 52)
-            phone_delete_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-            phone_delete_btn.set_pos(161, 268)
-
-            self.meta = phone_screen
-
-            phone_one.add_event_cb(lambda e: EventMesh.callback_wrapper(self.one(e)),
-                                     lv.EVENT.CLICKED, None)
-            phone_two.add_event_cb(lambda e: EventMesh.callback_wrapper(self.two(e)),
-                                        lv.EVENT.CLICKED, None)
-            phone_three.add_event_cb(lambda e: EventMesh.callback_wrapper(self.three(e)),
-                                        lv.EVENT.CLICKED, None)
-            phone_four.add_event_cb(lambda e: EventMesh.callback_wrapper(self.four(e)),
-                                        lv.EVENT.CLICKED, None)
-            phone_five.add_event_cb(lambda e: EventMesh.callback_wrapper(self.five(e)),
-                                        lv.EVENT.CLICKED, None)
-            phone_six.add_event_cb(lambda e: EventMesh.callback_wrapper(self.six(e)),
-                                        lv.EVENT.CLICKED, None)
-            phone_seven.add_event_cb(lambda e: EventMesh.callback_wrapper(self.seven(e)),
-                                        lv.EVENT.CLICKED, None)
-            phone_eight.add_event_cb(lambda e: EventMesh.callback_wrapper(self.eight(e)),
-                                        lv.EVENT.CLICKED, None)
-            phone_nine.add_event_cb(lambda e: EventMesh.callback_wrapper(self.nine(e)),
-                                        lv.EVENT.CLICKED, None)
-            phone_zero.add_event_cb(lambda e: EventMesh.callback_wrapper(self.zero(e)),
-                                        lv.EVENT.CLICKED, None)
-
-            phone_call_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.call(e)),
-                                        lv.EVENT.CLICKED, None)
-            phone_contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.contact(e)),
-                                        lv.EVENT.CLICKED, None)
-            phone_delete_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.delete(e)),
-                                        lv.EVENT.CLICKED, None)
-            
-            phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
-                                        lv.EVENT.CLICKED, None)#短按显示* 
-            
-            phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.pressed_start(e)),
-                                        lv.EVENT.LONG_PRESSED, None)#长按显示+
-            
-            phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.endpressed_start(e)),
-                                        lv.EVENT.RELEASED, None)#释放按键
-            
-
-            phone_hash.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hash(e)),
-                                        lv.EVENT.CLICKED, None)
-            
-
-        self.phone_num=''
-        self.phone_list = []
-        self.count = 0
-        if phone_label != None:
-            phone_label.set_pos(0, 14)
-            phone_label.set_size(0, 0)
-            phone_label.set_text(" ")
-        #phone_label.set_text(" ")
-        # print("self.phone_list :{} self.phone_num:{}".format(self.phone_list,self.phone_num))
-        if self.timer_cb == 0:
-            self.timer_cb = 1
-            self.timer.start(1000,1,self.refresh_line) 
-          
-
-    def refresh_line(self,e):
-        if self.count > 2 :
-            self.count = 1
-        if self.count%2 == 0:
-            phone_line.clear_flag(lv.obj.FLAG.HIDDEN)
-        else:
-            phone_line.add_flag(lv.obj.FLAG.HIDDEN)
-        self.count+=1
-    def one(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
-            return
-        self.phone_list.append("1")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-    
-    def two(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
-            return
-        self.phone_list.append("2")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def three(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
-            return
-        self.phone_list.append("3")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def four(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
-            return
-        self.phone_list.append("4")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def five(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
-            return
-        self.phone_list.append("5")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def six(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
-            return
-        self.phone_list.append("6")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def seven(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
-            return
-        self.phone_list.append("7")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def eight(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
-            return
-        self.phone_list.append("8")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def nine(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            #self.phone_list.pop(0)
-            return
-        self.phone_list.append("9")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def zero(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:#限制拨号数量20个数字
-            #self.phone_list.pop(0)
-            return
-        self.phone_list.append("0")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-    
-    def start(self,e):
-        self.button = 0
-
-    def pressed_start(self,e):
-        self.button = 1
-    def Close(self):
-        self.timer_cb = 0
-        self.timer.stop()
-
-    def endpressed_start(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:#限制拨号数量20个数字
-            #self.phone_list.pop(0)
-            return
-  
-        if self.button == 1:#长按
-            self.phone_list.append("+")  
-        else:#短按
-            self.phone_list.append("*")  
-                      
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-    
-    def hash(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:#限制拨号数量20个数字
-            #self.phone_list.pop(0)
-            return
-        self.phone_list.append("#")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-
-    def delete(self,e):
-        if len(self.phone_list) != 0:
-            self.phone_list.pop()
-            self.phone_num = ''.join(self.phone_list)
-            self.show_num()
-
-    def contact(self,e):
-        EventMesh.publish("load_screen", {"screen": "contacts"})
-
-    def call(self,e):
-        if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:
-            self.name = None
-            self.phonebook = {}
-            self.number_tmp = {}
-            if len(self.phone_list) != 0:
-                data = EventMesh.publish("get_phonebook_list")
-                if data != None:
-                    check = data[0]
-                    self.phonebook = data[1]
-                    # print("check :{}".format(check))
-                    if check == 1:#检查通讯录
-                        phonebook_keys = sorted(self.phonebook.keys())
-                        b = str(self.phone_num) in self.phonebook.values()#查找key中是否包含content电话号码 True 包含在里面 False不包含在里面
-                        j = 0
-                        if b == True:
-                            for i in range(len(self.phonebook)): #字典 key value
-                                #'001:张三':15521469561
-                                name = self.phonebook[phonebook_keys[j]]
-                                name_value = phonebook_keys[j]
-                                number_tmp = str(self.phone_num)
-                                # print("name :{} number_tmp:{}".format(name,number_tmp))
-                                if name.find(number_tmp) != -1:#查找电话号码是否在通讯录里面
-                                    number_f= name_value
-                                    name_s = number_f.split(':')
-                                    name_s = name_s[1]
-                                    self.name = name_s
-                                    break
-                                j+=1
-                        else:
-                            self.name = self.phone_num
-                    else:
-                        self.name = self.phone_num
-
-                    EventMesh.publish("save_phonenum",self.phone_num)
-                    EventMesh.publish("save_phonename",self.name)#
-                    EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"})
-            else:
-                EventMesh.publish("load_screen", {"screen": "no_valied_num_screen"})
-        else:#未插卡
-            EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"})
-            
-
-    def show_num(self):
-        #print("self.phone_num ",self.phone_num,self.phone_list)
-        len_t = len(self.phone_list)*40
-        if len_t > 230:
-            len_t = 230
-        phone_label.set_size(len_t,48)
-        phone_label.set_pos(230-len_t,14)
-        phone_label.set_text(self.phone_num)
-    
-    def lcd_on(self):
-        if self.timer_cb != 0:
-            self.timer_cb = 0
-            self.timer.start(1000,1,self.refresh_line) 
-    
-    def lcd_off(self):
-        self.timer_cb = 1
-        self.timer.stop() 
-
-
-    def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn8_press(self):
-        EventMesh.publish("watch_top_show")
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-
-call_log_screen  = None
-contacts_cont_list  = None
-call_log_title  = None
-none_call_log_title  = None
-call_log_cont_list_screen = None
-CALLLOG_FLAG = 0
-class CallLogScreen(Screen):
-    NAME = "call_log"
-
-    def __init__(self):
-        super().__init__()
-        self.CALL_LOG_MAX = CALL_LOG_MAX
-        self.meta = None
-        self.log_list = []
-        self.read_call_log = {}
-        self.check_json = 0
-        self.call_log_detail_list = None
-        self.call_log_detail_list_dict = []
-        self.timer = osTimer()
-        EventMesh.subscribe("call_log_update_show_list", self.call_log_update_show_list)
-
-    def post_processor_before_initialization(self):
-        read_call_log = EventMesh.publish("get_call_log_list")
-        if read_call_log != None:
-            self.check_json = read_call_log[0]
-            self.read_call_log = read_call_log[1]
-    
-    
-
-    def call_log_update_show_list(self, event, msg): 
-        read_call_log = EventMesh.publish("get_call_log_list")
-        if read_call_log != None:
-            # print("read_call_log:{}".format(read_call_log))
-            self.check_json = read_call_log[0] #文件是否存在
-            self.read_call_log = read_call_log[1]#通话记录数据
-            self.timer.start(500,0,self.reciving)
-
-    def reciving(self,e):
-       self.btn_create()
-
-    def initialization(self):
-        global call_log_screen,contacts_cont_list ,call_log_title ,none_call_log_title ,call_log_cont_list_screen
-        if call_log_screen  == None:
-            call_log_screen = lv.obj()
-            print("call_log_screen")
-            call_log_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            call_log_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            call_log_cont_list_screen = lv.obj(call_log_screen)
-            call_log_cont_list_screen.set_pos(0, 50)
-            call_log_cont_list_screen.set_size(240, 270)
-            call_log_cont_list_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            call_log_cont_list_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-
-            call_log_title = lv.label(call_log_screen)
-            call_log_title.set_pos(0, 10)
-            call_log_title.set_size(240, 40)
-            call_log_title.set_long_mode(lv.label.LONG.WRAP)
-            call_log_title.set_text("通话记录")
-            call_log_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            call_log_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            none_call_log_title = lv.label(call_log_cont_list_screen)
-            none_call_log_title.set_pos(0, 120)
-            none_call_log_title.set_size(240, 40)
-            none_call_log_title.set_long_mode(lv.label.LONG.WRAP)
-            none_call_log_title.set_text(" ")
-            none_call_log_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            none_call_log_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            #self.call_log_detail_list = lv.obj(call_log_screen)
-            self.call_log_detail_list = lv.obj(call_log_cont_list_screen)
-            self.call_log_detail_list.set_pos(0, 0)
-            self.call_log_detail_list.set_size(240, 271)
-            self.call_log_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            self.call_log_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-            for i in range(self.CALL_LOG_MAX):
-                _btn = lv.btn(self.call_log_detail_list)
-                _btn.add_flag(lv.obj.FLAG.CLICKABLE)
-                _btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling(e)),
-                                        lv.EVENT.CLICKED, None)
-                _btn.add_flag(lv.obj.FLAG.HIDDEN)
-                _btn_label2 = lv.label(_btn)
-                _btn_label3 = lv.label(_btn)
-                _btn_label4 = lv.label(_btn)
-                _btn_label5 = lv.label(_btn)
-                _btn_label6 = lv.label(_btn)
-                self.call_log_detail_list_dict.append({"_btn":_btn,"_btn_label2":_btn_label2,"_btn_label3":_btn_label3,
-                                              "_btn_label4":_btn_label4,"_btn_label5":_btn_label5,"_btn_label6":_btn_label6})
-            self.meta = call_log_screen
-
-        
-        read_call_log = EventMesh.publish("get_call_log_list")
-        # print("read_call_log:{}".format(read_call_log))
-        if read_call_log != None:
-            self.check_json = read_call_log[0] #文件是否存在
-            self.read_call_log = read_call_log[1]#通话记录数据
-        if self.check_json == True and self.read_call_log != {}:
-            none_call_log_title.set_text(" ")
-        else:
-            none_call_log_title.set_text("暂无记录")
-        self.btn_create()
-    
-    def btn_create(self):
-        EventMesh.publish("publish_message_event_ui",{"func":self.btn_create_screen,"data":0})
-
-    def btn_create_screen(self,data):    
-        global call_log_screen,contacts_cont_list ,call_log_title ,none_call_log_title ,call_log_cont_list_screen
-        h = 0
-        if call_log_screen != None:
-            if self.check_json == True and len(self.read_call_log) != 0:
-                
-                none_call_log_title.set_text(" ")
-
-                # self.call_log_detail_list.delete()#先删除一次控件
-                # self.call_log_detail_list = lv.obj(call_log_cont_list_screen)
-                # self.call_log_detail_list.set_pos(0, 0)
-                # self.call_log_detail_list.set_size(240, 271)
-                # self.call_log_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-                # self.call_log_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-                sort_tmp = self.read_call_log.values()
-                sort_new = sorted(sort_tmp, key = lambda i: i['timesec'],reverse = True)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条
-                # print("self.call_log :{} \r\n sort_new:{}\r\n".format(self.read_call_log,sort_new))
- 
-                for sort_new_tmp in sort_new: #字典 key value
-                    num_count = sort_new_tmp["count"]#获取通话次数
-                    num_name = sort_new_tmp["name"]#获取名称
-                    num_phonnum = sort_new_tmp["number"]#获取电话号码
-                    num_time = sort_new_tmp["time"]#获取电话号码
-
-                    # print("num_count :{} num_name:{} num_time:{}".format(num_count,num_name,num_time))
-                    #_btn = lv.btn(self.call_log_detail_list)
-                    self.call_log_detail_list_dict[h]["_btn"].set_size(240,80)
-                    self.call_log_detail_list_dict[h]["_btn"].set_pos(0,82*h)
-                    self.call_log_detail_list_dict[h]["_btn"].add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
-                    self.call_log_detail_list_dict[h]["_btn"].add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling(e)),
-                                            lv.EVENT.CLICKED, None)
-
-
-                    #_btn_label2 = lv.label(_btn)
-                    self.call_log_detail_list_dict[h]["_btn_label2"].set_pos(0, 5)
-                    self.call_log_detail_list_dict[h]["_btn_label2"].set_size(0, 25)
-                    self.call_log_detail_list_dict[h]["_btn_label2"].set_text(num_phonnum)
-                    #_btn_label2.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
-                    #
-                    #_btn_label3 = lv.label(_btn)
-                    self.call_log_detail_list_dict[h]["_btn_label3"].set_pos(0, 0)
-                    self.call_log_detail_list_dict[h]["_btn_label3"].set_size(0, 0)
-                    self.call_log_detail_list_dict[h]["_btn_label3"].set_text("(" + str(num_count) + ")")
-                    # _btn_label3.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-                    #_btn_label4 = lv.label(_btn)
-                    self.call_log_detail_list_dict[h]["_btn_label4"].set_pos(0, 38)
-                    self.call_log_detail_list_dict[h]["_btn_label4"].set_size(230, 30)
-                    self.call_log_detail_list_dict[h]["_btn_label4"].set_text(num_phonnum)
-                    self.call_log_detail_list_dict[h]["_btn_label4"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-                    #_btn_label5 = lv.label(_btn)
-                    self.call_log_detail_list_dict[h]["_btn_label5"].set_pos(0, 5)
-                    self.call_log_detail_list_dict[h]["_btn_label5"].set_size(0, 0)
-                    self.call_log_detail_list_dict[h]["_btn_label5"].set_text(num_name)
-                    # _btn_label5.set_long_mode(lv.obj.LONG.DOT)
-                    # _btn_label5.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-                    #_btn_label6 = lv.label(_btn)
-                    self.call_log_detail_list_dict[h]["_btn_label6"].set_pos(0, 5)
-                    self.call_log_detail_list_dict[h]["_btn_label6"].set_size(230, 28)
-                    self.call_log_detail_list_dict[h]["_btn_label6"].set_text(num_name)
-                    self.call_log_detail_list_dict[h]["_btn_label6"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
-                    
-                    self.call_log_detail_list_dict[h]["_btn"].clear_flag(lv.obj.FLAG.HIDDEN)
-                    #self.call_log_detail_list_dict[h]["_btn"].scroll_to_view(lv.ANIM.OFF)
-                    h = h + 1
-                for i in range(self.CALL_LOG_MAX):
-                    if i >= h :
-                        self.call_log_detail_list_dict[i]["_btn"].add_flag(lv.obj.FLAG.HIDDEN)#隐藏多余
-            else:
-                if call_log_cont_list_screen != None:
-                    none_call_log_title.set_text("暂无记录")
-                self.call_log_detail_list.add_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本
-        
-    def calling(self,e):
-        code = e.get_code()
-        if code == lv.EVENT.CLICKED:
-            global call_log_screen,contacts_cont_list ,call_log_title ,none_call_log_title 
-            # print("e.get_text():{} {}".format(e.get_target().get_child(0).get_text(),e.get_target().get_child(3).get_text()))
-            phonnum = str(e.get_target().get_child(0).get_text())
-            phnoname = e.get_target().get_child(3).get_text()
-            # print("phonnum :{} _msg:{}".format(phonnum,phnoname))
-            
-           
-            self.name = None
-            self.phonebook = {}
-
-            self.call_log = {}
-            self.call_log_value = {}
-            self.read_call_log = {}
-            self.number_tmp = {}
-
-            data = EventMesh.publish("get_phonebook_list")
-            if data != None:
-                check = data[0]
-                self.phonebook = data[1]
-                # print("check :{}".format(check))
-                if check == 1:#检查通讯录
-                    phonebook_keys = sorted(self.phonebook.keys())
-                    b = str(phonnum) in self.phonebook.values()#查找key中是否包含content电话号码 True 包含在里面 False不包含在里面
-                    j = 0
-                    if b == True:
-                        for i in range(len(self.phonebook)): #字典 key value
-                            #'001:':15521469561
-                            name = self.phonebook[phonebook_keys[j]]
-                            name_value = phonebook_keys[j]
-                            number_tmp = str(phonnum)
-                            # print("name :{} number_tmp:{}".format(name,number_tmp))
-                            if name.find(number_tmp) != -1:#查找电话号码是否在通讯录里面
-                                number_f= name_value
-                                name_s = number_f.split(':')
-                                name_s = name_s[1]
-                                self.name = name_s
-                                break
-                            j+=1
-                    else:
-                        self.name = phnoname
-                else:
-                    self.name = phnoname
-
-            if self.name == None:
-                self.name = phnoname
-            if len(phonnum) > 0:
-                EventMesh.publish("save_phonename",self.name)#
-                EventMesh.publish("save_phonenum",phonnum)#保存电话号码用于界面显示获取
-                #voiceCall.callStart(str(phonnum))
-                EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"})
-            else:
-                EventMesh.publish("load_screen", {"screen": "no_valied_num_screen"})#无效的号码 请重新输入
-
-
-    def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn8_press(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-
-# ------------------------------拨打电话-------------dialing screen----------------------------------------------------------
-
-dialing_screen = None
-dialing_img = None
-dialing_name = None
-dialing_call_label = None
-hangup_imgbtn = None
-class DialingScreen(Screen):
-    NAME = "dialing"
-
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        
-        self.call_log = {}
-        self.call_log_value = {}
-        self.read_call_log = {}
-        self.number_tmp = {}
-        self.CALL_LOG_MAX = CALL_LOG_MAX
-    def initialization(self):
-        EventMesh.publish("set_UI_high_priority", 1)
-        global dialing_screen,dialing_img,dialing_name ,hangup_imgbtn 
-        if dialing_screen == None:
-            dialing_screen = lv.obj()
-            print("dialing_screen")
-            dialing_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            dialing_img = lv.img(dialing_screen)
-            dialing_img.set_pos(80, 20)
-            dialing_img.set_size(64, 64)
-            dialing_img.set_src("U:/static/IMAGE_NOTICE_CALL.png")
-            dialing_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            dialing_name = lv.label(dialing_screen)
-            dialing_name.set_pos(0, 120)
-            dialing_name.set_size(240, 50)
-            dialing_name.set_text(" ")
-            dialing_name.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            dialing_name.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            dialing_call_label = lv.label(dialing_screen)
-            dialing_call_label.set_pos(0, 174)
-            dialing_call_label.set_size(240, 50)
-            dialing_call_label.set_text("正在等待对方接\n听电话")
-            dialing_call_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            dialing_call_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            hangup_imgbtn = lv.img(dialing_screen)
-            hangup_imgbtn.set_size(64, 64)
-            hangup_imgbtn.set_src("U:/static/hang_up.png")
-            hangup_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
-            hangup_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            hangup_imgbtn.set_pos(80, 250)
-            hangup_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)),
-                                    lv.EVENT.CLICKED, None)
-            self.meta = dialing_screen
-        if dialing_name != None:
-            name = EventMesh.publish("get_phonename")#获取拨打电话名称
-            dialing_name.set_text(name)#名称
-    def post_processor_after_initialization(self):
-       # print("创建通话记录 post_processor_before_initialization\n")
-        utime.sleep_ms(200)#不加延时会切屏
-        #获取字符串
-        name = EventMesh.publish("get_phonename")#获取拨打电话名称
-        content = EventMesh.publish("get_phonenum")#获取电话号码
-        time = EventMesh.publish("screen_get_time")#获取系统时间
-
-        # ["15692025051","2","12:59","哥gdh符合双方和开发商开发好看的思考"],
-        # 格式:{"电话号码":{"timesec":'时间戳',"number":'电话号码',"name":'名字',"time":'时间',"count":'通话次数'}}
-        # dialing_content.set_text(content)#电话号码
-        num = 0
-   
-        date_tmp = utime.localtime()
-        time_tmp = utime.mktime(date_tmp)
-        # print("time_tmp:{}".format(time_tmp))
-        read_call_log = EventMesh.publish("get_call_log_list")
-        check_json = read_call_log[0]
-
-        if check_json == True:
-            self.read_call_log = read_call_log[1]
-            b = content in self.read_call_log.keys()#查找key中是否包含content电话号码 True 包含在里面 False不包含在里面
-            if b == True:#查找是否有相同的电话号码 有就直接读出来的次数上加一 没有则从1开始加起
-                number_tmp = {}
-                number_tmp = self.read_call_log[content] #通话次数加一
-                num_tmp_t = number_tmp["count"]
-                # print("number_tmp:{} self.read_call_log.value:{}".format(number_tmp,self.read_call_log.values()))
-            else :
-                num_tmp_t = 0
-            num = num_tmp_t 
-        else:
-            num = 0 #通话次数
-
-        sort_tmp = {}
-        sort_tmp = self.read_call_log.values()
-        sort_new = {}
-        sort_new = sorted(sort_tmp, key = lambda i: i['timesec'],reverse = True)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条
-
-        i = 0
-        # 49 50 
-        if len(self.read_call_log) >= self.CALL_LOG_MAX:
-            for sort_new_tmp in sort_new: #字典 key value
-                i+=1 # 1 
-                if i >= self.CALL_LOG_MAX:#大于50条把最后一条删除掉只保留前面50调最新的数据
-                    key_tmp = sort_new_tmp["number"]
-                    del self.read_call_log[key_tmp]
-        tmp = {}
-        tmp["count"]= num+1 #通话次数
-        tmp["time"]= "{}:{}".format("%02d"%(time[0][0]),"%02d"%(time[0][1]))#通湖时间
-        tmp["name"]= name #名称
-        tmp["timesec"]= time_tmp #时间戳
-        tmp["number"] = content
-
-        self.read_call_log[content] = tmp
-        with open("/usr/static/storage_file/Call_log.json","w",encoding="utf-8") as fd:
-            ujson.dump(self.read_call_log,fd)
-        print("创建通话记录")
-        EventMesh.publish("set_call_log_list", [1,self.read_call_log])
-        EventMesh.publish("call_log_update_show_list")
-        
-    def hangup(self,e):
-        EventMesh.publish("set_UI_high_priority", 0)
-        EventMesh.publish("set_hangup_mode", 1)
-        voiceCall.callEnd()
-
-    def done_return(self):
-        pass
-        #EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn1_release(self):
-        pass
-        #EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn8_press(self):
-        flag = EventMesh.publish("get_lcd_state")
-        if flag == 1:
-            EventMesh.publish(constants.EVENT.SYSTEM_SLEEP)
-        else:
-            EventMesh.publish(constants.EVENT.SYSTEM_UP)
-
-
-
-no_sim_popup_screen = None
-no_sim_popup_screen_title1 = None
-no_sim_popup_screen_title2 = None
-#未插卡
-class NoSimScreen(Screen):#
-    NAME = "no_sim_popup_screen"
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.meta_type = "popup"
-
-    def initialization(self):
-        global no_sim_popup_screen,no_sim_popup_screen_title1,no_sim_popup_screen_title2 
-        if no_sim_popup_screen == None :
-            no_sim_popup_screen = lv.obj()
-            print("no_sim_popup_screen")
-            no_sim_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            no_sim_popup_screen_title1 = lv.label(no_sim_popup_screen)
-            no_sim_popup_screen_title1.set_pos(0, 140)
-            no_sim_popup_screen_title1.set_size(240, 40)
-            no_sim_popup_screen_title1.set_text("无SIM卡或")
-            no_sim_popup_screen_title1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            no_sim_popup_screen_title1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            no_sim_popup_screen_title2 = lv.label(no_sim_popup_screen)
-            no_sim_popup_screen_title2.set_pos(0, 190)
-            no_sim_popup_screen_title2.set_size(240, 40)
-            no_sim_popup_screen_title2.set_text("无网络")
-            no_sim_popup_screen_title2.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            no_sim_popup_screen_title2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            self.meta = no_sim_popup_screen
-
-    def done_left_to_right(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_right_to_left(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_bottom_to_top(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_top_to_bottom(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_return(self):
-        EventMesh.publish("return_prev_screen")
-    def done_click(self):
-        EventMesh.publish("return_prev_screen")
-
-    def btn1_release(self):
-        EventMesh.publish("return_prev_screen")
-
-    def btn8_press(self):
-        EventMesh.publish("return_prev_screen")
-
-
-no_valied_num_screen = None
-no_valied_num_screen_title1 = None
-no_valied_num_screen_title2 = None
-#=无效的号码 请重新输入
-class NovaliedNumScreen(Screen):#
-    NAME = "no_valied_num_screen"
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.meta_type = "popup"
-        self.timer_count = 0
-        self.timer=osTimer()
-
-    def initialization(self):
-        global no_valied_num_screen,no_valied_num_screen_title1,no_valied_num_screen_title2 
-        if no_valied_num_screen == None :
-            no_valied_num_screen = lv.obj()
-            print("no_valied_num_screen")
-            no_valied_num_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            no_valied_num_screen_title1 = lv.label(no_valied_num_screen)
-            no_valied_num_screen_title1.set_pos(0, 140)
-            no_valied_num_screen_title1.set_size(240, 40)
-            no_valied_num_screen_title1.set_text("无效的号码,")
-            no_valied_num_screen_title1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            no_valied_num_screen_title1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-
-            no_valied_num_screen_title2 = lv.label(no_valied_num_screen)
-            no_valied_num_screen_title2.set_pos(0, 190)
-            no_valied_num_screen_title2.set_size(240, 40)
-            no_valied_num_screen_title2.set_text("请重新输入")
-            no_valied_num_screen_title2.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            no_valied_num_screen_title2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            self.meta = no_valied_num_screen
-    def post_processor_after_initialization(self):
-        self.timer_count = 0
-        self.timer.start(5000,1,self.timeout_exit)
-
-    def timeout_exit(self,e):
-        self.timer_count+=1
-        if self.timer_count >= 2:
-            self.timer_count = 0
-            EventMesh.publish("return_prev_screen")
-    
-    def Close(self):
-        self.timer.stop()
-
-    def done_left_to_right(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_right_to_left(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_bottom_to_top(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_top_to_bottom(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_return(self):
-        EventMesh.publish("return_prev_screen")
-    def done_click(self):
-        EventMesh.publish("return_prev_screen")
-
-    def btn1_release(self):
-        EventMesh.publish("return_prev_screen")
-
-    def btn8_press(self):
-        EventMesh.publish("return_prev_screen")
-
-
-
-no_sim_power_screen = None
-no_sim_power_screen_title = None
-no_sim_power_screen_label =None
-no_sim_power_screen_comfirm =None
-no_sim_power_screen_cancel = None
-no_sim_power_screen_img = None
-
-#未插卡,长按关机
-class NoSimPowerScreen(Screen):#
-    NAME = "no_sim_power_screen"
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.meta_type = "popup"
-
-    def initialization(self):
-        global no_sim_power_screen,no_sim_power_screen_img,no_sim_power_screen_title,no_sim_power_screen_comfirm,no_sim_power_screen_cancel,no_sim_power_screen_label
-        if no_sim_power_screen == None :
-            no_sim_power_screen = lv.obj()
-            print("no_sim_power_screen")
-            no_sim_power_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            no_sim_power_screen_title = lv.label(no_sim_power_screen)
-            no_sim_power_screen_title.set_pos(0, 20)
-            no_sim_power_screen_title.set_size(240, 40)
-            no_sim_power_screen_title.set_text("无SIM卡,无法拨打")
-            no_sim_power_screen_title.set_long_mode(lv.label.LONG.WRAP)
-            no_sim_power_screen_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            no_sim_power_screen_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            no_sim_power_screen_img = lv.img(no_sim_power_screen)
-            no_sim_power_screen_img.set_pos(100, 70)
-            no_sim_power_screen_img.set_size(61, 61)
-            no_sim_power_screen_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            no_sim_power_screen_img.set_src("U:/static/poweroff_icon.png")
-
-
-            no_sim_power_screen_label = lv.label(no_sim_power_screen)
-            no_sim_power_screen_label.set_pos(0, 150)
-            no_sim_power_screen_label.set_size(240, 40)
-            no_sim_power_screen_label.set_text("是否关机?")
-            no_sim_power_screen_label.set_long_mode(lv.label.LONG.WRAP)
-            no_sim_power_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            no_sim_power_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-
-            no_sim_power_screen_comfirm = lv.img(no_sim_power_screen)
-            no_sim_power_screen_comfirm.set_size(176, 46)
-            no_sim_power_screen_comfirm.set_pos(32, 190)
-            no_sim_power_screen_comfirm.set_src("U:/static/off_icon.png")
-            no_sim_power_screen_comfirm.add_flag(lv.obj.FLAG.CLICKABLE)
-            no_sim_power_screen_comfirm.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            poweroff_confirm_label = lv.label(no_sim_power_screen_comfirm)
-            poweroff_confirm_label.set_text("确定")
-            poweroff_confirm_label.align(lv.ALIGN.CENTER, 0, 5)
-            poweroff_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            no_sim_power_screen_cancel = lv.img(no_sim_power_screen)
-            no_sim_power_screen_cancel.set_size(176, 46)
-            no_sim_power_screen_cancel.set_pos(32, 250)
-            no_sim_power_screen_cancel.set_src("U:/static/cancel_icon.png")
-            no_sim_power_screen_cancel.add_flag(lv.obj.FLAG.CLICKABLE)
-            no_sim_power_screen_cancel.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            poweroff_return_label = lv.label(no_sim_power_screen_cancel)
-            poweroff_return_label.set_text("取消")
-            poweroff_return_label.align(lv.ALIGN.CENTER, 0, 5)
-            poweroff_return_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            no_sim_power_screen_cancel.set_ext_click_area(20)
-
-            self.meta = no_sim_power_screen
-            no_sim_power_screen_comfirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),
-                                     lv.EVENT.CLICKED, None)
-        
-            no_sim_power_screen_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.cancel(e)),
-                                     lv.EVENT.CLICKED, None)
-
-    def confirm(self,e):
-        EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"})
-
-    def cancel(self,e):
-        EventMesh.publish("return_prev_screen")
-
-    def done_left_to_right(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_right_to_left(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_bottom_to_top(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_top_to_bottom(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_return(self):
-        EventMesh.publish("return_prev_screen")
-    def done_click(self):
-        pass
-        #EventMesh.publish("return_prev_screen")
-
-    def btn1_release(self):
-        #EventMesh.publish("return_prev_screen")
-        pass
-
-    def btn8_press(self):
-        EventMesh.publish("return_prev_screen")
-
-dialing_popup_screen = None
-dialing_popup_img = None
-dialing_popup_name = None
-dialing_popup_hangup_imgbtn = None
-class DialingNoPlayPopupScreen(Screen):#正在拨号中...未打出
-    NAME = "dialing_noplay_popup"
-
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.meta_type = "popup"
-        self.timer1 = osTimer()
-        self.time_count = 0
-        self.timer2 = osTimer()
-       
-    def initialization(self):
-        EventMesh.publish("set_UI_high_priority", 1)
-        global dialing_popup_screen,dialing_popup_img,dialing_popup_name ,dialing_popup_call,dialing_popup_hangup_imgbtn 
-        if dialing_popup_screen == None:
-            dialing_popup_screen = lv.obj()
-            print("dialing_popup_screen")
-            dialing_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            dialing_popup_img = lv.img(dialing_popup_screen)
-            dialing_popup_img.set_pos(80, 20)
-            dialing_popup_img.set_size(64, 64)
-            dialing_popup_img.set_src("U:/static/IMAGE_NOTICE_CALL.png")
-            dialing_popup_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            dialing_popup_name = lv.label(dialing_popup_screen)
-            dialing_popup_name.set_pos(0, 120)
-            dialing_popup_name.set_size(240, 50)
-            dialing_popup_name.set_text(" ")
-            dialing_popup_name.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            dialing_popup_name.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            dialing_popup_call = lv.label(dialing_popup_screen)
-            dialing_popup_call.set_pos(0, 180)
-            dialing_popup_call.set_size(240, 50)
-            dialing_popup_call.set_text("正在拨号中")
-            dialing_popup_call.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            dialing_popup_call.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            dialing_popup_hangup_imgbtn = lv.img(dialing_popup_screen)
-            dialing_popup_hangup_imgbtn.set_size(64, 64)
-            dialing_popup_hangup_imgbtn.set_src("U:/static/hang_up.png")
-            dialing_popup_hangup_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
-            dialing_popup_hangup_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            dialing_popup_hangup_imgbtn.set_pos(80, 250)
-            dialing_popup_hangup_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)),
-                                    lv.EVENT.CLICKED, None)
-            self.meta = dialing_popup_screen
-        if dialing_popup_name != None:
-            name = EventMesh.publish("get_phonename")#获取拨打电话名称
-            dialing_popup_name.set_text(name)#名称
-
-    def post_processor_after_initialization(self):
-        self.time_count = 0
-        self.timer1.start(1000, 1, self.timeout_hangup)
-        self.timer2.start(2000, 0, self.timeout_call)
-
-    def timeout_call(self,e):
-        phone_num = EventMesh.publish("get_phonenum")  
-        EventMesh.publish("set_call_state", 1)#
-        voiceCall.callStart(phone_num)
-        
-    def timeout_hangup(self,e):
-        EventMesh.publish("system_sleep_rest")#防止黑屏
-        self.time_count+=1
-        if self.time_count >= 5:#5s内没有打通则不在继续拨打关闭
-            self.time_count = 0
-            EventMesh.publish("set_UI_high_priority", 0)
-            sos_flag = EventMesh.publish("get_sos_flag")
-            if sos_flag == 1:
-                EventMesh.publish("set_sos_flag",0)
-                EventMesh.publish("set_sos_num",0)
-                EventMesh.publish("set_hangup_mode",0)
-
-            EventMesh.publish("load_screen", {"screen": "dial_no_connect_popup"})
-
-    def hangup(self,e):
-        EventMesh.publish("set_UI_high_priority", 0)
-        voiceCall.callEnd()
-        sos_flag = EventMesh.publish("get_sos_flag")
-        if sos_flag == 1:
-            EventMesh.publish("set_sos_flag",0)
-            EventMesh.publish("set_sos_num",0)
-            EventMesh.publish("set_hangup_mode",0)
-        EventMesh.publish("return_prev_screen") #返回上一级
-
-    def Close(self):
-        self.timer1.stop()
-        self.timer2.stop()
-
-    def done_return(self):
-        pass
-        #EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn1_release(self):
-        pass
-        #EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn8_press(self):
-        flag = EventMesh.publish("get_lcd_state")
-        if flag == 1:
-            EventMesh.publish(constants.EVENT.SYSTEM_SLEEP)
-        else:
-            EventMesh.publish(constants.EVENT.SYSTEM_UP)
-
-dial_no_connect_popup = None
-dialing_connect_call = None
-class DialNoconnectPopupScreen(Screen):#你所拨打的电话暂时无法接通
-    NAME = "dial_no_connect_popup"
-
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.meta_type = "popup"
-        self.timer = osTimer()
-        self.time_count = 0
-       
-    def initialization(self):
-        global dial_no_connect_popup,dialing_connect_call
-        if dial_no_connect_popup == None:
-            dial_no_connect_popup = lv.obj()
-            print("dial_no_connect_popup")
-            dial_no_connect_popup.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            dialing_connect_call = lv.label(dial_no_connect_popup)
-            dialing_connect_call.set_pos(0, 110)
-            dialing_connect_call.set_size(240, 150)
-            dialing_connect_call.set_text("你好,你所拨打的\n电话暂时无法接\n通,请稍后再拨")
-            dialing_connect_call.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            dialing_connect_call.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            self.meta = dial_no_connect_popup
-
-    def post_processor_after_initialization(self):
-        self.time_count = 0
-        self.timer.start(1000, 1, self.timeout_hangup)
-        
-    def timeout_hangup(self,e):
-        EventMesh.publish("system_sleep_rest")#防止黑屏
-        self.time_count+=1
-        if self.time_count >= 10:
-            self.time_count = 0
-            EventMesh.publish("return_prev_screen")
-
-    def Close(self):
-        self.timer.stop()
-
-    def done_left_to_right(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_right_to_left(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_bottom_to_top(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_top_to_bottom(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_return(self):
-        EventMesh.publish("return_prev_screen")
-    def done_click(self):
-        EventMesh.publish("return_prev_screen")
-
-    def btn1_release(self):
-        EventMesh.publish("return_prev_screen")
-
-    def btn8_press(self):
-        EventMesh.publish("return_prev_screen")
-
-message_popup_screen = None
-message_popup_title = None
-#信息弹窗
-class NewMessageScreen(Screen):
-    NAME = "message_popup"
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.meta_type = "popup"
-
-    def initialization(self):
-        global message_popup_screen,message_popup_title 
-        if message_popup_screen == None :
-            message_popup_screen = lv.obj()
-            print("message_popup_screen")
-            message_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            message_popup_title = lv.label(message_popup_screen)
-            message_popup_title.set_pos(0, 150)
-            message_popup_title.set_size(240, 40)
-            message_popup_title.set_text("你有新的消息")
-            message_popup_title.set_long_mode(lv.label.LONG.WRAP)
-            message_popup_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            message_popup_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            self.meta = message_popup_screen
-        EventMesh.publish("set_sms_clear_all_data",10)
-
-    def done_left_to_right(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_right_to_left(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_bottom_to_top(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_top_to_bottom(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_return(self):
-        EventMesh.publish("return_prev_screen")
-    def done_click(self):
-        EventMesh.publish("load_screen", {"screen": "popup"})
-
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn8_press(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-
-message_full_screen = None 
-message_full_label = None 
-message_full_confirm = None 
-message_full_cancel = None 
-#信息弹窗
-class MessageFullScreen(Screen):
-    NAME = "message_full"
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.meta_type = "popup"
-    def initialization(self):
-        global message_full_screen,message_full_label,message_full_confirm,message_full_cancel
-        if message_full_screen == None :
-            message_full_screen = lv.obj()
-            print("message_full_screen")
-            message_full_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            message_full_label = lv.label(message_full_screen)
-            message_full_label.set_pos(0, 100)
-            message_full_label.set_size(240, 40)
-            message_full_label.set_text("信息已满,是否清除所有?")
-            message_full_label.set_long_mode(lv.label.LONG.WRAP)
-            message_full_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            message_full_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            message_full_confirm = lv.label(message_full_screen)
-            message_full_confirm.set_text("确认")
-            message_full_confirm.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            message_full_confirm.set_size(120, 60)
-            message_full_confirm.set_pos(0,180)
-            message_full_confirm.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            message_full_confirm.add_flag(lv.obj.FLAG.CLICKABLE)
-            message_full_confirm.set_ext_click_area(20)
-
-            message_full_cancel = lv.label(message_full_screen)
-            message_full_cancel.set_text("取消")
-            message_full_cancel.set_size(120, 60)
-            message_full_cancel.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            message_full_cancel.set_pos(120,180)
-            message_full_cancel.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            message_full_cancel.add_flag(lv.obj.FLAG.CLICKABLE)
-            message_full_cancel.set_ext_click_area(20)
-            self.meta = message_full_screen
-            
-            message_full_confirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),lv.EVENT.CLICKED, None)
-            message_full_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),lv.EVENT.CLICKED, None)
-
-
-    def confirm(self, e):
-        # self.timer.start(2*1000,0,self.clear_data)
-        sms.deleteMsg(1,4)
-        EventMesh.publish("load_screen", {"screen": "popup"})
-
-    def concel(self, e):
-        EventMesh.publish("return_prev_screen")
-
-    def done_left_to_right(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_right_to_left(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_bottom_to_top(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_top_to_bottom(self):
-        EventMesh.publish("return_prev_screen")
-
-    def done_return(self):
-        EventMesh.publish("return_prev_screen")
-    def done_click(self):
-        EventMesh.publish("load_screen", {"screen": "popup"})
-
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn8_press(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-############短信###############################
-MSG_FLAG = 0
-MSG_MAX = 5 #最大显示短信内容条数
-def msg_cb(args):
-    index = args[1]
-    storage = args[2]
-    print("index:{}".format(index))
-    sms_data = sms.getSaveLoc()
-    sms_max = sms_data[0][2]
-    if index != -1:
-        tmp = sms.searchTextMsg(index)
-        detail = tmp[1]#内容
-        print("msg_cb:detail {}".format,detail)
-        if  detail.find("SETIP:") != -1:#寻找是否有这个字符串
-            tmp_test = detail.split("SETIP:")[1]
-            if  tmp_test.find(":") != -1:
-                new_ip = tmp_test.split(':')[0]
-                # print("tmp_test:{} new_ip:{}".format(tmp_test,new_ip))
-                new_com = tmp_test.split(':')[1]
-                # new_md5 = detail.split(':')[3]
-                if len(new_ip) > 0 and len(new_com) > 0:
-                    EventMesh.publish("set_new_ip", [new_ip,new_com,tmp[0]])#设置关机时间
-                    # EventMesh.publish("set_new_ip", [new_ip,new_com,new_md5])#设置关机时间
-        
-    if index >= sms_max-1:
-        EventMesh.publish("load_screen", {"screen": "message_full"})
-    else:
-        EventMesh.publish("load_screen", {"screen": "message_popup"})
-
-sms.setCallback(msg_cb)
-style_sms_bg_btn =  lv.style_t()
-style_sms_bg_btn.init()
-style_sms_bg_btn.set_radius(5)
-style_sms_bg_btn.set_bg_color(lv.color_make(0xff, 0xff, 0xff))
-style_sms_bg_btn.set_bg_grad_color(lv.color_make(0xff, 0xff, 0xff))
-style_sms_bg_btn.set_bg_opa(255)
-style_sms_bg_btn.set_border_color(lv.color_make(0xff, 0xff, 0xff))
-style_sms_bg_btn.set_border_opa(255)
-
-
-msg_list_screen = None
-msg_top_title = None
-msg_cont_detail = None
-msg_list_t = None
-msg_list_t_done_img = None
-no_msg_text = None
-msg_cont_list_screen = None
-
-class PopupScreen(Screen):
-    NAME = "popup"
-
-    def __init__(self):
-        super().__init__()
-        # -------------------------------------------popup_menu screen----------------------------------------------------------
-        self.meta = None
-        self.msg_detail = {}
-        self.msg_nums = 0
-        self.sms_detail_list = None
-        self.sms_detail_list_dict = []
-
-    def post_processor_before_initialization(self):
-        self.msg_nums = sms.getMsgNums() #获取短信条数
-
-    def initialization(self):
-        global msg_list_screen,msg_top_title,msg_cont_detail,msg_list_t,msg_list_t_done_img,no_msg_text,msg_cont_list_screen
-        print("PopupScreen:initialization1")
-        if msg_list_screen == None :
-            msg_list_screen = lv.obj()
-            print("msg_list_screen")
-            msg_list_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            msg_list_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-          
-
-            msg_top_title = lv.label(msg_list_screen)
-            msg_top_title.set_pos(0, 10)
-            msg_top_title.set_size(240, 40)
-            msg_top_title.set_text("信息")
-            msg_top_title.set_long_mode(lv.label.LONG.WRAP)
-            msg_top_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            msg_top_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-
-            msg_cont_list_screen = lv.obj(msg_list_screen)
-            msg_cont_list_screen.set_pos(0, 50)
-            msg_cont_list_screen.set_size(240, 270)
-            msg_cont_list_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            msg_cont_list_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-
-            msg_list_t_done_img = lv.img(msg_cont_list_screen)
-            msg_list_t_done_img.set_pos(53, 20)
-            msg_list_t_done_img.set_size(134, 117)
-            msg_list_t_done_img.set_src("U:/static/IMAGE_NOTICE_NONE.png")
-            msg_list_t_done_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            no_msg_text = lv.label(msg_cont_list_screen)
-            no_msg_text.set_pos(0, 210)
-            no_msg_text.set_size(240, 40)
-            no_msg_text.set_text("暂无信息")
-            no_msg_text.set_long_mode(lv.label.LONG.WRAP)
-            no_msg_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            no_msg_text.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            self.sms_detail_list = lv.obj(msg_cont_list_screen)
-            self.sms_detail_list.set_pos(0, 0)
-            self.sms_detail_list.set_size(230, 271)
-            self.sms_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            self.sms_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-            for i in range(MSG_MAX):
-                msg_btn = lv.btn(self.sms_detail_list)
-                msg_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.sms_cb(e)),
-                                        lv.EVENT.CLICKED, None)
-                msg_btn.add_flag(lv.obj.FLAG.HIDDEN)
-                _btn_label2 = lv.label(msg_btn)
-                _btn_label3 = lv.label(msg_btn)
-                _btn_label4 = lv.label(msg_btn)
-                _btn_label5 = lv.label(msg_btn)
-                self.sms_detail_list_dict.append({"msg_btn":msg_btn,"_btn_label2":_btn_label2,"_btn_label3":_btn_label3,
-                                              "_btn_label4":_btn_label4,"_btn_label5":_btn_label5})
-            self.meta = msg_list_screen
-
-        
-        self.msg_nums = sms.getMsgNums() 
-        # print("self.msg_nums:{} type:{}".format(self.msg_nums,type(sms.getMsgNums())))
-        self.btn_create(1)
-        print("PopupScreen:initialization2")
-    def sms_create_list(self,event,msg):
-        self.msg_nums = sms.getMsgNums() 
-        self.btn_create(1)
-
-
-    def btn_create(self,msg):
-        EventMesh.publish("publish_message_event_ui",{"func":self.btn_create_screen,"data":msg})
-
-    def btn_create_screen(self,msg):
-        global msg_list_screen,msg_top_title,msg_cont_detail,msg_list_t,msg_list_t_done_img,no_msg_text,msg_cont_list_screen
-        count = 0
-        j = 0
-        print("self.msg_nums:{}".format(self.msg_nums))
-        if self.msg_nums > 0 :
-            
-            msg_list_t_done_img.add_flag(lv.obj.FLAG.HIDDEN)
-            no_msg_text.add_flag(lv.obj.FLAG.HIDDEN)
-            self.sms_detail_list.clear_flag(lv.obj.FLAG.HIDDEN)
-            # self.sms_detail_list.delete()#先删除一次控件
-            # self.sms_detail_list = lv.obj(msg_cont_list_screen)
-            # self.sms_detail_list.set_pos(0, 0)
-            # self.sms_detail_list.set_size(230, 271)
-            # self.sms_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            # self.sms_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-            if self.msg_nums > MSG_MAX:
-                j = self.msg_nums-MSG_MAX
-            for i in range(MSG_MAX):
-                # if count > (MSG_MAX-1):#j = 12 -5 7 6 5 4 3 2 1
-                #     break
-                if i >= self.msg_nums :
-                    self.sms_detail_list_dict[i]["msg_btn"].add_flag(lv.obj.FLAG.HIDDEN)
-                    continue
-                tmp = sms.searchTextMsg(j)
-                if tmp != -1:
-                    #msg_btn = lv.btn(self.sms_detail_list)
-                    self.sms_detail_list_dict[i]["msg_btn"].set_size(230,65)
-                    self.sms_detail_list_dict[i]["msg_btn"].set_pos(0,67*count)
-                    self.sms_detail_list_dict[i]["msg_btn"].add_style(style_sms_bg_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
-                    # self.sms_detail_list_dict[i]["msg_btn"].add_event_cb(lambda e: EventMesh.callback_wrapper(self.sms_cb(e)),
-                    #                         lv.EVENT.CLICKED, None)
-                
-                    title = tmp[0] 
-                    # print("title:{}".format(title))
-                    #_btn_label2 = lv.label(msg_btn)
-                    self.sms_detail_list_dict[i]["_btn_label2"].set_pos(0, 0)
-                    self.sms_detail_list_dict[i]["_btn_label2"].set_size(0, 0)
-                    self.sms_detail_list_dict[i]["_btn_label2"].set_text(title)
-                    # _btn_label2.set_long_mode(lv.label.LONG.DOT)
-                    # _btn_label2.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
-                    #
-                    detail = tmp[1]
-                    #_btn_label3 = lv.label(msg_btn)
-                    self.sms_detail_list_dict[i]["_btn_label3"].set_pos(0, 0)
-                    self.sms_detail_list_dict[i]["_btn_label3"].set_size(0, 0)
-                    self.sms_detail_list_dict[i]["_btn_label3"].set_text(detail)
-                    # _btn_label3.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-                    detail1 = tmp[1]
-                    #_btn_label4 = lv.label(msg_btn)
-                    self.sms_detail_list_dict[i]["_btn_label4"].set_pos(0, 34)
-                    self.sms_detail_list_dict[i]["_btn_label4"].set_size(180, 28)
-                    self.sms_detail_list_dict[i]["_btn_label4"].set_text(detail1)
-                    self.sms_detail_list_dict[i]["_btn_label4"].set_long_mode(lv.label.LONG.DOT)
-                    self.sms_detail_list_dict[i]["_btn_label4"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-                    title1 = tmp[0]
-                    #_btn_label5 = lv.label(msg_btn)
-                    self.sms_detail_list_dict[i]["_btn_label5"].set_pos(0, 5)
-                    self.sms_detail_list_dict[i]["_btn_label5"].set_size(180, 25)
-                    self.sms_detail_list_dict[i]["_btn_label5"].set_text(title1)
-                    self.sms_detail_list_dict[i]["_btn_label5"].set_long_mode(lv.label.LONG.DOT)
-                    self.sms_detail_list_dict[i]["_btn_label5"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
-                    
-                    self.sms_detail_list_dict[i]["msg_btn"].clear_flag(lv.obj.FLAG.HIDDEN)
-                    #if msg == 1:
-                    self.sms_detail_list_dict[i]["msg_btn"].scroll_to_view(lv.ANIM.OFF)
-
-                    count = count + 1
-                else :
-                    self.sms_detail_list_dict[i]["msg_btn"].add_flag(lv.obj.FLAG.HIDDEN)
-                j = j + 1
-                
-            
-        else:
-            if msg_cont_list_screen != None:
-                msg_list_t_done_img.clear_flag(lv.obj.FLAG.HIDDEN)
-                no_msg_text.clear_flag(lv.obj.FLAG.HIDDEN)
-                no_msg_text.set_text("暂无信息")
-            self.sms_detail_list.add_flag(lv.obj.FLAG.HIDDEN)
-            
-            
-    def sms_cb(self,e):
-        code = e.get_code()
-        if code == lv.EVENT.CLICKED:
-            print("tp test!!!!!!!!!!!!!!")
-            #上传标题和内容
-            _name = e.get_target().get_child(0).get_text()
-            EventMesh.publish("save_msg_name", _name)       
-            content = e.get_target().get_child(1).get_text()
-            EventMesh.publish("save_msg_content", content) 
-       
-        #显示详细页面
-        EventMesh.publish("load_screen", {"screen": "msg_detail"})
-    
-    def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-    def btn8_press(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-
-
-msg_detail_screen = None
-msg_detail_title = None
-msg_detail_cont = None
-class MsgDetailScreen(Screen):
-    NAME = "msg_detail"
-
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-
-        self.name = ""
-        self.contetn = ""
-
-
-    def initialization(self):
-        global msg_detail_screen,msg_detail_title,msg_detail_cont
-        if msg_detail_screen == None:    
-            msg_detail_screen = lv.obj()
-            print("msg_detail_screen")
-            msg_detail_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            msg_detail_title = lv.label(msg_detail_screen)
-            msg_detail_title.set_pos(0, 10)
-            msg_detail_title.set_size(240, 40)
-            msg_detail_title.set_long_mode(lv.label.LONG.WRAP)
-            msg_detail_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            msg_detail_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            msg_detail_cont = lv.label(msg_detail_screen)
-            msg_detail_cont.set_pos(0, 50)
-            msg_detail_cont.set_size(240, 270)
-            msg_detail_cont.set_long_mode(lv.label.LONG.WRAP)
-            msg_detail_cont.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-            msg_detail_cont.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            self.meta = msg_detail_screen
-        #获取字符串
-        self.name = EventMesh.publish("get_msg_name")
-        self.content = EventMesh.publish("get_msg_content")
-        msg_detail_title.set_text(self.name)
-        msg_detail_cont.set_text(self.content)
-
-    def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "popup"})
-
-    def hangup(self,e):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-    def btn8_press(self):
-        EventMesh.publish("load_screen", {"screen": "popup"})
-
-
-
-# -------------------------------------------heartrate screen----------------------------------------------------------
-heartrate_screen = None
-heartrate_label = None
-heartrate_done_img = None
-heartrate_start_label = None
-heartrate_bpm_label = None
-heartrate_done_label = None
-heartrate_line_bg_img = None
-hr_line1 = None
-hr_line2 = None
-hr_line3 = None
-hr_line4 = None
-hr_line5 = None
-hr_line6 = None
-hr_line7 = None
-heartrate_reset_btn_img = None
-
-style_line_red = lv.style_t()
-style_line_red.init()
-style_line_red.set_line_width(10)
-style_line_red.set_line_color(lv.color_make(0xff, 0x00, 0x00))
-
-hr_line_points = [{"x":0,"y":0},{"x":0,"y":0}]
-
-class HeartrateScreen(Screen):
-    NAME = "heartrate"
-
-
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.timer = osTimer()
-        self.point = 0
-        self.heart_value = 0
-
-    def initialization(self):
-        global heartrate_screen,heartrate_label,heartrate_reset_btn_img,hr_line1,hr_line2,hr_line3,hr_line4,hr_line5,hr_line6,hr_line7,heartrate_line_bg_img,heartrate_done_img ,heartrate_start_label,heartrate_bpm_label ,heartrate_done_label 
-        if heartrate_screen == None:
-            heartrate_screen = lv.obj()
-            print("heartrate_screen")
-            heartrate_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            heartrate_label = lv.label(heartrate_screen)
-            heartrate_label.set_pos(0, 20)
-            heartrate_label.set_size(240, 40)
-            heartrate_label.set_text("心率")
-            heartrate_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
-            heartrate_label.set_long_mode(lv.label.LONG.WRAP)
-            heartrate_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            heartrate_line_bg_img = lv.img(heartrate_screen)
-            heartrate_line_bg_img.set_pos(5, 60)
-            heartrate_line_bg_img.set_size(230, 120)
-            heartrate_line_bg_img.set_src("U:/static/hr_line_bg.png")
-
-            
-            heartrate_done_img = lv.img(heartrate_screen)
-            heartrate_done_img.set_pos(20, 249)
-            heartrate_done_img.set_src("U:/static/hr_gif_03.png")
-
-            heartrate_reset_btn_img = lv.img(heartrate_screen)
-            heartrate_reset_btn_img.set_pos(0, 192)
-            heartrate_reset_btn_img.set_src("U:/static/reset_hr_btn.png")
-            heartrate_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
-            heartrate_reset_btn_img.add_flag(lv.obj.FLAG.CLICKABLE)
-
-            heartrate_start_label = lv.label(heartrate_screen)
-            heartrate_start_label.set_size(240,40)
-            heartrate_start_label.set_pos(0,200)
-            heartrate_start_label.set_text(" ")
-            heartrate_start_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
-            heartrate_start_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            heartrate_start_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-
-
-            hr_line1 = lv.line(heartrate_screen)
-            hr_line1.set_points(hr_line_points,2)
-            hr_line1.set_pos(25,60)
-            hr_line1.set_size(10,0)
-            hr_line1.add_style(style_line_red,0)
-
-            hr_line2 = lv.line(heartrate_screen)
-            hr_line2.set_points(hr_line_points,2)
-            hr_line2.set_pos(53,60)
-            hr_line2.set_size(10,0)
-            hr_line2.add_style(style_line_red,0)
-
-            hr_line3 = lv.line(heartrate_screen)
-            hr_line3.set_points(hr_line_points,2)
-            hr_line3.set_pos(80,60)
-            hr_line3.set_size(10,0)
-            hr_line3.add_style(style_line_red,0)
-
-            hr_line4 = lv.line(heartrate_screen)
-            hr_line4.set_points(hr_line_points,2)
-            hr_line4.set_pos(109,60)
-            hr_line4.set_size(10,0)
-            hr_line4.add_style(style_line_red,0)
-
-            hr_line5 = lv.line(heartrate_screen)
-            hr_line5.set_points(hr_line_points,2)
-            hr_line5.set_pos(136,60)
-            hr_line5.set_size(10,0)
-            hr_line5.add_style(style_line_red,0)
-
-            hr_line6 = lv.line(heartrate_screen)
-            hr_line6.set_points(hr_line_points,2)
-            hr_line6.set_pos(164,60)
-            hr_line6.set_size(10,0)
-            hr_line6.add_style(style_line_red,0)
-
-            hr_line7 = lv.line(heartrate_screen)
-            hr_line7.set_points(hr_line_points,2)
-            hr_line7.set_pos(192,60)
-            hr_line7.set_size(10,0)
-            hr_line7.add_style(style_line_red,0)
-
-            heartrate_bpm_label = lv.label(heartrate_screen)
-            heartrate_bpm_label.set_size(120, 40)
-            heartrate_bpm_label.set_pos(120, 270)
-            heartrate_bpm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            heartrate_bpm_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-
-            heartrate_done_label = lv.label(heartrate_screen)
-            heartrate_done_label.set_size(240, 40)
-            heartrate_done_label.set_pos(0, 270)
-            heartrate_done_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            heartrate_done_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            heartrate_done_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-
-            self.meta = heartrate_screen
-            heartrate_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
-                lv.EVENT.CLICKED, None)
-        heartrate_done_label.set_text(" ")
-        heartrate_bpm_label.set_text("-- bpm")
-        heartrate_start_label.set_text("正在测量中.")
-        EventMesh.publish("set_hr_state",1)#1代表手动进入测试界面
-        
-        EventMesh.publish(constants.EVENT.START_HEART)
-
-    def post_processor_after_initialization(self):
-        self.point = 0
-        self.heart_value = 0
-        self.show_history_data()
-        self.restart_up(0)
-
-    def restart_up(self,e):
-        global heartrate_done_label,heartrate_bpm_label,heartrate_start_label,heartrate_reset_btn_img
-        self.timer.start(1*500, 1, self.start_measure)
-        heartrate_bpm_label.set_text("-- bpm")
-        if heartrate_reset_btn_img != None:
-            heartrate_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
-        self.point = 0
-        self.heart_value = 0
-        
-        heartrate_done_label.set_text(" ")
-        heartrate_bpm_label.set_text("-- bpm")
-        heartrate_start_label.set_text("正在测量中.")
-        EventMesh.publish("set_hr_state",1)#1代表手动进入测试界面
-        
-        EventMesh.publish(constants.EVENT.START_HEART)
-
-    def show_history_data(self):
-        global hr_line1,hr_line2,hr_line3,hr_line4,hr_line5,hr_line6,hr_line7
-        read_data = {}
-        read_data = EventMesh.publish("get_history_hr_value")
-        print("hr history read_data",read_data)
-        if read_data != None:
-            count = len(read_data)
-            if count != 0:
-                if count >= 7:
-                    for i in  range(count):
-                        value = read_data["0{}".format(i+1)]
-                        if value < 30:
-                            value = 30
-                        if value >= 210:
-                            value = 210
-                        line_value = value - 30 #180-80 = 100 160-100 = 60
-                        line_value = int(line_value*0.58)+1
-                        if line_value >= 100:
-                            line_value = 100
-                        #print("hr hist",line_value)
-                        hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}]
-                        if i == 0:
-                            hr_line1.set_points(hr_line_points,2)
-                            hr_line1.set_pos(25,160-line_value)
-                            hr_line1.set_size(10,line_value)
-                        if i == 1:
-                            hr_line2.set_points(hr_line_points,2)
-                            hr_line2.set_pos(53,160-line_value)
-                            hr_line2.set_size(10,line_value)
-
-                        if i == 2:
-                            hr_line3.set_points(hr_line_points,2)
-                            hr_line3.set_pos(80,160-line_value)
-                            hr_line3.set_size(10,line_value)
-
-                        if i == 3:
-                            hr_line4.set_points(hr_line_points,2)
-                            hr_line4.set_pos(109,160-line_value)
-                            hr_line4.set_size(10,line_value)
-
-                        if i == 4:
-                            hr_line5.set_points(hr_line_points,2)
-                            hr_line5.set_pos(136,160-line_value)
-                            hr_line5.set_size(10,line_value)
-
-                        if i == 5:
-                            hr_line6.set_points(hr_line_points,2)
-                            hr_line6.set_pos(164,160-line_value)
-                            hr_line6.set_size(10,line_value)
-
-                        if i == 6:
-                            hr_line7.set_points(hr_line_points,2)
-                            hr_line7.set_pos(192,160-line_value)
-                            hr_line7.set_size(10,line_value)
-                else:
-                    value = read_data["0{}".format(count)]
-                    if value < 30:
-                        value = 30
-                    if value >= 180:
-                        value = 180
-                    line_value = value - 30 #180-80 = 100 160-100 = 60
-                    line_value = int(line_value*0.58)+1
-                   #
-                    hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}]
-                    if count == 1:
-                        hr_line1.set_points(hr_line_points,2)
-                        hr_line1.set_pos(25,160-line_value)
-                        hr_line1.set_size(10,line_value)
-                    if count == 2:
-                        hr_line2.set_points(hr_line_points,2)
-                        hr_line2.set_pos(53,160-line_value)
-                        hr_line2.set_size(10,line_value)
-
-                    if count == 3:
-                        hr_line3.set_points(hr_line_points,2)
-                        hr_line3.set_pos(80,160-line_value)
-                        hr_line3.set_size(10,line_value)
-
-                    if count == 4:
-                        hr_line4.set_points(hr_line_points,2)
-                        hr_line4.set_pos(109,160-line_value)
-                        hr_line4.set_size(10,line_value)
-
-                    if count == 5:
-                        hr_line5.set_points(hr_line_points,2)
-                        hr_line5.set_pos(136,160-line_value)
-                        hr_line5.set_size(10,line_value)
-
-                    if count == 6:
-                        hr_line6.set_points(hr_line_points,2)
-                        hr_line6.set_pos(164,160-line_value)
-                        hr_line6.set_size(10,line_value)
-
-                    if count == 7:
-                        hr_line7.set_points(hr_line_points,2)
-                        hr_line7.set_pos(192,160-line_value)
-                        hr_line7.set_size(10,line_value)      
-
-
-    def start_measure(self,*args):
-        global heartrate_screen,heartrate_label,heartrate_done_img ,heartrate_reset_btn_img,heartrate_start_label,heartrate_bpm_label ,heartrate_done_label
-        self.point = self.point + 1
-        EventMesh.publish("system_sleep_rest")#防止黑屏
-        self.heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
-        print("self.heart_value:{}".format(self.heart_value))
-        if self.point >= 2:
-            if self.heart_value < 40:
-                self.heart_value = 0
-            if self.heart_value != 0:
-                heartrate_bpm_label.set_text("{} bpm".format(self.heart_value))
-            else:
-                heartrate_bpm_label.set_text("-- bpm")
-        
-        if self.point%4 == 0 :
-            heartrate_start_label.set_text("正在测量中..")
-            heartrate_done_img.set_src("U:/static/hr_gif_02.png")
-        if self.point%4 == 1 :
-            heartrate_start_label.set_text("正在测量中...")
-            heartrate_done_img.set_src("U:/static/hr_gif_01.png")
-        if self.point%4 == 2 :
-            heartrate_start_label.set_text("正在测量中.")
-            heartrate_done_img.set_src("U:/static/hr_gif_02.png")
-        
-        if self.point%4 == 3 :
-            heartrate_start_label.set_text("正在测量中.")
-            heartrate_done_img.set_src("U:/static/hr_gif_03.png")
-
-
-
-        if self.point > 120: #测20s
-            heartrate_done_img.set_src("U:/static/hr_gif_03.png")
-            self.heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
-            EventMesh.publish("set_old_hr_data",self.heart_value)
-            if self.heart_value > 50:
-                
-                EventMesh.publish("set_history_hr_value",self.heart_value)
-                EventMesh.publish(constants.PROTOCOL.HEART_SEND,self.heart_value)
-            heartrate_reset_btn_img.clear_flag(lv.obj.FLAG.HIDDEN)
-            
-            heartrate_start_label.set_text("测量结束,点击重测")
-            if self.heart_value != 0:
-                heartrate_bpm_label.set_text("{} bpm".format(self.heart_value))
-                # heartrate_done_label.set_text("测量完成")
-            else:
-                heartrate_bpm_label.set_text("-- bpm")
-                
-            self.show_history_data()
-
-            self.timer.stop()
-            self.point = 0
-            EventMesh.publish("set_hr_state",0)#0代表关闭测试
-            print("stop debug9")
-            EventMesh.publish(constants.EVENT.STOP_HEART)
-
-    def Close(self):
-        self.timer.stop()
-        get_hr_state = EventMesh.publish("get_hr_state")
-        get_spo2_state = EventMesh.publish("get_spo2_state")
-        if get_hr_state == 1 or get_spo2_state == 1:
-            EventMesh.publish("set_hr_state",0)#0代表关闭测试
-            print("stop debug10")
-            EventMesh.publish(constants.EVENT.STOP_HEART)
-
-    def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "health"})
-
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "health"})
-        
-    def btn8_press(self):
-        EventMesh.publish("watch_top_show")
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    
-# -------------------------------------------toolbox screen----------------------------------------------------------
-
-toolbox_screen = None
-toolbox_text_img = None
-toolbox_cont = None
-toolbox_step_img = None
-toolbox_weather_img = None
-toolbox_alarm_img = None
-# toolbox_sms_img = None
-toolbox_countdown_img = None
-toolbox_stopwatch_img = None
-
-toolbox_cont_style = lv.style_t()
-toolbox_cont_style.init()
-toolbox_cont_style.set_radius(0)
-toolbox_cont_style.set_bg_color(lv.color_make(0x00, 0x00, 0x00))
-toolbox_cont_style.set_bg_grad_color(lv.color_make(0x00, 0x00, 0x00))
-toolbox_cont_style.set_bg_grad_dir(lv.GRAD_DIR.VER)
-toolbox_cont_style.set_bg_opa(255)
-toolbox_cont_style.set_border_width(0)
-toolbox_cont_style.set_pad_left(0)
-toolbox_cont_style.set_pad_right(0)
-toolbox_cont_style.set_pad_top(0)
-toolbox_cont_style.set_pad_bottom(0)
-
-class ToolboxScreen(Screen):
-    NAME = "toolbox"
-
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-
-    def initialization(self):
-        global toolbox_screen,toolbox_text_img,toolbox_cont,toolbox_step_img,toolbox_weather_img ,toolbox_alarm_img  ,\
-            toolbox_countdown_img,toolbox_stopwatch_img
-        if toolbox_screen == None:
-            tool_set_y = 0
-            toolbox_screen = lv.obj()
-            print("toolbox_screen")
-            toolbox_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-            toolbox_screen.set_scrollbar_mode(0)
-
-            toolbox_text_img = lv.img(toolbox_screen)
-            toolbox_text_img.set_pos(75, 10)
-            toolbox_text_img.set_size(90, 30)
-            toolbox_text_img.set_src("U:/static/tool/tool_text.png")
-            toolbox_text_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            toolbox_cont = lv.obj(toolbox_screen)
-            toolbox_cont.set_pos(0, 50)
-            toolbox_cont.set_size(240, 270)
-            toolbox_cont.add_style(toolbox_cont_style,lv.PART.MAIN | lv.STATE.DEFAULT)
-
-
-            toolbox_step_img = lv.img(toolbox_cont)
-            toolbox_step_img.set_pos(4, tool_set_y)
-            toolbox_step_img.set_size(232, 80)
-            toolbox_step_img.add_flag(lv.obj.FLAG.CLICKABLE)
-            toolbox_step_img.set_src("U:/static/tool/IMAGE_SECMENU_STEP.png")
-            toolbox_step_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            tool_set_y+=90
-
-            toolbox_weather_img = lv.img(toolbox_cont)
-            toolbox_weather_img.set_pos(4, tool_set_y)
-            toolbox_weather_img.set_size(232, 80)
-            toolbox_weather_img.add_flag(lv.obj.FLAG.CLICKABLE)
-            toolbox_weather_img.set_src("U:/static/tool/IMAGE_SECMENU_WEATHER.png")
-            toolbox_weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            tool_set_y+=90
-            toolbox_alarm_img = lv.img(toolbox_cont)
-            toolbox_alarm_img.set_pos(4, tool_set_y)
-            toolbox_alarm_img.set_size(232, 80)
-            toolbox_alarm_img.add_flag(lv.obj.FLAG.CLICKABLE)
-            toolbox_alarm_img.set_src("U:/static/tool/IMAGE_SECMENU_ALARM.png")
-            toolbox_alarm_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-
-            # tool_set_y+=90
-            # toolbox_sms_img = lv.img(toolbox_cont)
-            # toolbox_sms_img.set_pos(4, tool_set_y)
-            # toolbox_sms_img.set_size(232, 80)
-            # toolbox_sms_img.add_flag(lv.obj.FLAG.CLICKABLE)
-            # toolbox_sms_img.set_src("U:/static/tool/sms_setting.png")
-            # toolbox_sms_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            tool_set_y+=90
-            toolbox_countdown_img = lv.img(toolbox_cont)
-            toolbox_countdown_img.set_pos(4, tool_set_y)
-            toolbox_countdown_img.set_size(232, 80)
-            toolbox_countdown_img.add_flag(lv.obj.FLAG.CLICKABLE)
-            toolbox_countdown_img.set_src("U:/static/tool/IMAGE_SECMENU_COUNTDOWN.png")
-            toolbox_countdown_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            tool_set_y+=90
-            toolbox_stopwatch_img = lv.img(toolbox_cont)
-            toolbox_stopwatch_img.set_pos(4, tool_set_y)
-            toolbox_stopwatch_img.set_size(232, 80)
-            toolbox_stopwatch_img.add_flag(lv.obj.FLAG.CLICKABLE)
-            toolbox_stopwatch_img.set_src("U:/static/tool/IMAGE_SECMENU_STOPWATCH.png")
-            toolbox_stopwatch_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            toolbox_step_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "step"})), lv.EVENT.CLICKED, None)
-            toolbox_weather_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "weather"})), lv.EVENT.CLICKED, None)
-            toolbox_alarm_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "clk_list"})), lv.EVENT.CLICKED, None)
-            # toolbox_sms_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "popup"})), lv.EVENT.CLICKED, None)
-            toolbox_countdown_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "countdown"})), lv.EVENT.CLICKED, None)
-            toolbox_stopwatch_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "stopwatch"})), lv.EVENT.CLICKED, None)
-            self.meta = toolbox_screen
-
-    def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-        
-    def btn8_press(self):
-        EventMesh.publish("watch_top_show")
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-
-incoming_call_screen = None
-incoming_call_img = None
-incoming_call_name_label = None
-incoming_call_answer = None
-incoming_call_hangup = None
-# CALL_LOG_MAX = 50
-class IncomingCallScreen(Screen):
-    NAME = "incoming_call"
-
-    def __init__(self):
-        super().__init__()
-        self.CALL_LOG_MAX = CALL_LOG_MAX
-        self.read_data = {}
-        self.volum_size = 8
-        check_volum = ql_fs.path_exists("/usr/static/storage_file/config.json")
-        if check_volum == True :
-            with open("/usr/static/storage_file/config.json","r") as fd:#音频文件编号
-                self.read_data = ujson.load(fd)
-                if self.read_data != {}:
-                    b = str("volum") in self.read_data.keys()
-                    if b == True:
-                        self.volum_size = self.read_data["volum"]  
-                    else:
-                        self.volum_size = 8
-                else:
-                    self.volum_size = 8
-        else:
-            self.volum_size = 8
-        self.aud = audio.Audio(0)
-        self.aud.set_pa(Pin.GPIO29)
-        self.aud.setVolume(11)
-        self.call_timer = osTimer()
-        self.name = None
-        self.phonebook = {}
-        self.pro_state = 0
-        self.meta = None
-        
-
-        self.call_log = {}
-        self.call_log_value = {}
-        self.read_call_log = {}
-        self.number_tmp = {}
-        
-    def initialization(self):
-        global incoming_call_screen,incoming_call_img,incoming_call_name_label,incoming_call_answer ,incoming_call_hangup  
-        if incoming_call_screen == None :
-            # -------------------------------------------incoming_call screen----------------------------------------------------------
-            incoming_call_screen = lv.obj()
-            print("incoming_call_screen")
-            incoming_call_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            incoming_call_img = lv.img(incoming_call_screen)
-            incoming_call_img.set_pos(80, 20)
-            incoming_call_img.set_size(64, 64)
-            incoming_call_img.set_src("U:/static/IMAGE_NOTICE_CALL.png")
-            incoming_call_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            incoming_call_name_label = lv.label(incoming_call_screen)
-            incoming_call_name_label.set_pos(0, 140)
-            incoming_call_name_label.set_text(" ")
-            incoming_call_name_label.set_size(240, 50)
-            incoming_call_name_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            incoming_call_name_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            incoming_call_answer = lv.img(incoming_call_screen)
-            incoming_call_answer.set_size(64, 64)
-            incoming_call_answer.add_flag(lv.obj.FLAG.CLICKABLE)
-            incoming_call_answer.set_pos(30, 220)
-            incoming_call_answer.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            incoming_call_answer.set_src("U:/static/answer.png")
-
-            incoming_call_hangup = lv.img(incoming_call_screen)
-            incoming_call_hangup.set_size(64, 64)
-            incoming_call_hangup.add_flag(lv.obj.FLAG.CLICKABLE)
-            incoming_call_hangup.set_pos(150, 220)
-            incoming_call_hangup.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            incoming_call_hangup.set_src("U:/static/hang_up.png")
-            incoming_call_answer.add_event_cb(lambda e: EventMesh.callback_wrapper(self.answer(e)),
-                                     lv.EVENT.CLICKED, None)
-            incoming_call_hangup.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)),
-                                     lv.EVENT.CLICKED, None)
-            self.meta = incoming_call_screen 
-        EventMesh.publish("set_UI_high_priority", 1)
-
-
-    def post_processor_after_initialization(self):
-        global incoming_call_screen,incoming_call_img,incoming_call_name_label,incoming_call_answer ,incoming_call_hangup  
-        utime.sleep_ms(200)#不加延时会切屏
-        data = EventMesh.publish("get_phonebook_list")
-        if data != None:
-            check = data[0]
-            self.phonebook = data[1]
-            if check == 1:#先检查通讯录
-                phonebook_keys = sorted(self.phonebook.keys())
-                b = self.meta_info in self.phonebook.values()#查找key中是否包含content电话号码 True 包含在里面 False不包含在里面
-                j = 0
-                if b == True:
-                    for i in range(len(self.phonebook)): #字典 key value
-                        #'001:邓雪英':15521469561
-                        name = self.phonebook[phonebook_keys[j]]
-                        name_value = phonebook_keys[j]
-                        number_tmp = str(self.meta_info)
-                        # print("name :{} number_tmp:{}".format(name,number_tmp))
-                        if name.find(number_tmp) != -1:#查找电话号码是否在通讯录里面
-                            number_f= name_value
-                            name_s = number_f.split(':')
-                            name_s = name_s[1]
-                            self.name = name_s
-                            self.pro_state = 1
-                            break
-                        j+=1
-                else:
-                    self.name = str(self.meta_info)
-                    self.pro_state = 0
-            else:
-                self.name = str(self.meta_info)
-                self.pro_state = 0
-
-        read_call_log = EventMesh.publish("get_call_log_list")
-        check_call_log_json = read_call_log[0]
-        self.read_call_log = read_call_log[1]
-        if self.pro_state == 0 and check_call_log_json == 1:#电话本没有就在通话记录查找电话号码并且文件存在是查找
-            
-            sort_tmp = self.read_call_log.values()
-            for sort_new_tmp in sort_tmp: #字典 key value
-                number = sort_new_tmp["number"]
-                find_ok = self.meta_info in number
-                # print("find_ok:{} sort_tmp :{} self.meta_info:{}\r\n".format(find_ok,number,self.meta_info))
-                if find_ok == True:
-                    name_value = sort_new_tmp["name"]#查找到相同的电话号码就退出break
-                    self.name = name_value
-                    break
-        
-        if self.name == None:
-            self.name = str(self.meta_info)
-
-        # incoming_call_label.set_text(str(self.meta_info))
-        incoming_call_name_label.set_text(self.name)
-        EventMesh.publish("save_phonename",self.name)
-        time = EventMesh.publish("screen_get_time")#获取系统时间
-
-        # ["15692025051","2","12:59","哥gdh符合双方和开发商开发好看的思考"],
-        # 格式:{"电话号码":{"timesec":'时间戳',"number":'电话号码',"name":'名字',"time":'时间',"count":'通话次数'}}
-        self.num = 0
-   
-        date_tmp = utime.localtime()
-        time_tmp = utime.mktime(date_tmp)
-        # print("time_tmp:{}".format(time_tmp))
-        read_call_log = EventMesh.publish("get_call_log_list")
-        check_json = read_call_log[0]
-
-        if check_json == True:
-            self.read_call_log = read_call_log[1]
-            print("读取通话记录")
-            b = str(self.meta_info) in self.read_call_log.keys()#查找key中是否包含content电话号码 True 包含在里面 False不包含在里面
-
-            if b == True:#查找是否有相同的电话号码 有就直接读出来的次数上加一 没有则从1开始加起
-                number_tmp = {}
-                number_tmp = self.read_call_log[str(self.meta_info)] #通话次数加一
-                num_tmp_t = number_tmp["count"]#读取本地保存的通话次数
-            else :
-                num_tmp_t = 0
-            self.num = num_tmp_t 
-        else:
-            self.num = 0 #通话次数
-
-        sort_tmp = {}
-        sort_tmp = self.read_call_log.values()
-        sort_new = {}
-        sort_new = sorted(sort_tmp, key = lambda i: i['timesec'],reverse = True)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条
-        i = 0
-        if len(self.read_call_log) >= self.CALL_LOG_MAX:
-            for sort_new_tmp in sort_new: #字典 key value
-                i+=1 # 1 
-                if i >= self.CALL_LOG_MAX:#大于50条把最后一条删除掉只保留前面50调最新的数据
-                    key_tmp = sort_new_tmp["number"]
-                    del self.read_call_log[key_tmp]
-
-        tmp = {}
-        self.num = self.num +1
-        if self.num > 99:
-            self.num = 99
-        tmp["count"]= self.num #通话次数
-        tmp["time"]= "{}:{}".format("%02d"%(time[0][0]),"%02d"%(time[0][1]))#通话时间
-        tmp["name"]= self.name #名称
-        tmp["timesec"]= time_tmp #时间戳
-        tmp["number"] = self.meta_info
-
-        self.read_call_log[self.meta_info] = tmp
-        with open("/usr/static/storage_file/Call_log.json","w",encoding="utf-8") as fd:
-            ujson.dump(self.read_call_log,fd)
-            print("创建通话记录")
-        EventMesh.publish("set_call_log_list", [1,self.read_call_log])
-        EventMesh.publish("call_log_update_show_list")
-
-        self.call_timer.start(6000, 1, self.call_timer_cb)
-        self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3')  #播放来电铃声
-
-    def call_timer_cb(self,e):
-       self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3')  #播放来电铃声
-
-    def answer(self,e):
-        self.call_timer.stop()
-        self.aud.stop() 
-        EventMesh.publish("set_UI_high_priority", 0)
-        voiceCall.callAnswer()
-
-    def Close(self):
-        self.call_timer.stop()
-        self.aud.stop() 
-    
-    def hangup(self,e):
-        EventMesh.publish("set_UI_high_priority", 0)
-        self.aud.stop()
-        self.call_timer.stop()
-        voiceCall.callEnd()
-
-
-    def btn1_release(self):
-        pass
-        
-    def btn8_press(self):
-        flag = EventMesh.publish("get_lcd_state")
-        if flag == 1:
-            EventMesh.publish(constants.EVENT.SYSTEM_SLEEP)
-        else:
-            EventMesh.publish(constants.EVENT.SYSTEM_UP)
-        pass
-
-    def done_left_to_right(self):
-        pass
-    
-    def done_right_to_left(self):
-        pass
-
-    def done_bottom_to_top(self):
-        pass
-    
-    def done_top_to_bottom(self):
-        pass
-    
-    def done_return(self):
-        pass
-        
-
-on_call_screen = None
-on_call_obj =None
-on_call_label_name = None
-on_call_second_label = None
-on_call_volum_label = None
-on_call_tab_label = None
-on_call_hangup = None
-on_call_bar = None
-on_call_volum_reduce = None
-on_call_volum_add = None
-on_call_phone_one = None
-on_call_phone_two = None
-on_call_phone_three = None
-on_call_phone_four = None
-on_call_phone_five = None
-on_call_phone_six = None
-on_call_phone_seven = None
-on_call_phone_eight = None
-on_call_phone_nine = None
-on_call_phone_start = None
-on_call_phone_zero = None
-on_call_screen_tab = None
-on_call_phone_hash = None
-on_call_phone_return =None
-on_call_screen_tab_label =None
-on_call_phone_return_btn = None
-ON_CALL_MAX_DATA = 9
-class OnCallScreen(Screen):
-    NAME = "on_call"
-
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.count_sec = 0
-        self.timer = osTimer()
-        self.aud = audio.Audio(0)
-        self.aud.set_pa(Pin.GPIO29)
-        self.read_data = {}
-        self.volum_size = 8
-        self.open_volum = 0
-        self.phone_num = ''
-        self.phone_list = []
-        self.button = 0
-
-    def initialization(self):
-        EventMesh.publish("set_UI_high_priority", 1)
-        global on_call_screen,on_call_label_name,on_call_second_label ,on_call_hangup ,on_call_volum_label,on_call_tab_label,on_call_bar,on_call_obj,\
-        on_call_volum_reduce,on_call_volum_add,on_call_phone_one ,on_call_phone_two ,on_call_phone_three,on_call_phone_four,on_call_phone_five,\
-        on_call_phone_six,on_call_phone_seven,on_call_screen_tab_label ,on_call_phone_return,on_call_phone_eight ,on_call_phone_nine ,on_call_phone_start ,\
-        on_call_phone_zero ,on_call_phone_hash,on_call_phone_return_btn,\
-        on_call_screen_tab 
-        if on_call_screen ==None :
-            on_call_screen = lv.obj()
-            on_call_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_obj = lv.obj(on_call_screen)
-            on_call_obj.set_size(240,320)
-            on_call_obj.set_pos(0,0)
-            on_call_obj.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-            print("on_call_screen")
-            
-            on_call_label_name = lv.label(on_call_obj)
-            on_call_label_name.set_pos(0, 80)
-            on_call_label_name.set_size(240, 50)
-            on_call_label_name.set_text(" ")
-            on_call_label_name.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            on_call_label_name.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            on_call_second_label = lv.label(on_call_obj)
-            on_call_second_label.set_pos(0, 140)
-            on_call_second_label.set_size(240, 30)
-            on_call_second_label.set_text("00:00")
-            on_call_second_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            on_call_second_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            on_call_bar = lv.bar(on_call_obj)
-            on_call_bar.set_pos(49, 183)
-            on_call_bar.set_size(140, 25)
-            on_call_bar.set_style_anim_time(1000, lv.PART.INDICATOR | lv.STATE.DEFAULT)
-            on_call_bar.set_mode(lv.bar.MODE.NORMAL)
-            on_call_bar.set_value(50, lv.ANIM.OFF)
-            on_call_bar.add_style(style_bar, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_bar.add_style(style_bar_indic, lv.PART.INDICATOR | lv.STATE.DEFAULT)
-
-            on_call_volum_reduce = lv.img(on_call_obj)
-            on_call_volum_reduce.set_size(36, 36)
-            on_call_volum_reduce.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_volum_reduce.set_pos(4, 178)
-            on_call_volum_reduce.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_volum_reduce.set_src("U:/static/REDUCE_VOLUM_ICON.png")
-            on_call_volum_reduce.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reduce_volum_size(e)),
-                                     lv.EVENT.CLICKED, None)
-            
-            on_call_volum_add = lv.img(on_call_obj)
-            on_call_volum_add.set_size(36, 36)
-            on_call_volum_add.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_volum_add.set_pos(194, 178)
-            on_call_volum_add.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_volum_add.set_src("U:/static/VOLUM_ADD_ICON.png")
-            on_call_volum_add.add_event_cb(lambda e: EventMesh.callback_wrapper(self.add_volum_size(e)),
-                                     lv.EVENT.CLICKED, None)
-
-
-            on_call_volum_label = lv.label(on_call_obj)
-            on_call_volum_label.set_pos(0, 270)
-            on_call_volum_label.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_volum_label.set_size(85, 50)
-            on_call_volum_label.set_text("静音")
-            on_call_volum_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
-            on_call_volum_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_volum_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.open_volum_show(e)),
-                                    lv.EVENT.CLICKED, None)
-
-            on_call_hangup = lv.img(on_call_obj)
-            on_call_hangup.set_size(64, 64)
-            on_call_hangup.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_hangup.set_pos(85, 245)
-            on_call_hangup.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_hangup.set_src("U:/static/hang_up.png")
-            on_call_hangup.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)),
-                                     lv.EVENT.CLICKED, None)
-            
-            on_call_tab_label = lv.label(on_call_obj)
-            on_call_tab_label.set_pos(150, 270)
-            on_call_tab_label.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_tab_label.set_size(90, 50)
-            on_call_tab_label.set_text("键盘")
-            on_call_tab_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
-            on_call_tab_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_tab_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.on_call_tab_show(e)),
-                                    lv.EVENT.CLICKED, None)
-
-            on_call_screen_tab = lv.obj(on_call_screen)
-            on_call_screen_tab.set_size(240,320)
-            on_call_screen_tab.set_pos(0,0)
-            on_call_screen_tab.add_flag(lv.obj.FLAG.HIDDEN)
-            on_call_screen_tab.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-                                              
-            on_call_screen_tab_label = lv.label(on_call_screen_tab)                                                                
-            on_call_screen_tab_label.set_pos(40, 34)
-            on_call_screen_tab_label.set_size(0, 30)
-            on_call_screen_tab_label.set_text(" ")
-            on_call_screen_tab_label.set_long_mode(lv.label.LONG.CLIP)
-            on_call_screen_tab_label.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_screen_tab_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            
-            on_call_phone_return = lv.img(on_call_screen_tab)
-            on_call_phone_return.set_src("U:/static/RED_RETURN_PNG.png")
-            on_call_phone_return.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_phone_return.set_pos(0, 30)
-            on_call_phone_return.set_size(36, 36)
-            
-            on_call_phone_return_btn = lv.img(on_call_screen_tab)
-            on_call_phone_return_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_phone_return_btn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_phone_return_btn.set_pos(0, 0)
-            on_call_phone_return_btn.set_size(50, 100)
-            on_call_phone_return_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.on_return_show(e)),
-                                    lv.EVENT.CLICKED, None)
-            
-
-            on_call_phone_one = lv.img(on_call_screen_tab)
-            on_call_phone_one.set_src("U:/static/IMAGE_NUMBER_KEY1_ICON.png")
-            on_call_phone_one.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_phone_one.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_phone_one.set_pos(3, 110)
-            on_call_phone_one.set_size(76, 50)
-
-            on_call_phone_two = lv.img(on_call_screen_tab)
-            on_call_phone_two.set_size(76, 50)
-            on_call_phone_two.set_src("U:/static/IMAGE_NUMBER_KEY2_ICON.png")
-            on_call_phone_two.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_phone_two.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_phone_two.set_pos(82, 110)
-
-            on_call_phone_three = lv.img(on_call_screen_tab)
-            on_call_phone_three.set_size(76, 50)
-            on_call_phone_three.set_src("U:/static/IMAGE_NUMBER_KEY3_ICON.png")
-            on_call_phone_three.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_phone_three.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_phone_three.set_pos(161, 110)#1
-
-            on_call_phone_four = lv.img(on_call_screen_tab)
-            on_call_phone_four.set_size(76, 50)
-            on_call_phone_four.set_src("U:/static/IMAGE_NUMBER_KEY4_ICON.png")
-            on_call_phone_four.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_phone_four.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_phone_four.set_pos(3, 162)
-
-            on_call_phone_five = lv.img(on_call_screen_tab)
-            on_call_phone_five.set_size(76, 50)
-            on_call_phone_five.set_src("U:/static/IMAGE_NUMBER_KEY5_ICON.png")
-            on_call_phone_five.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_phone_five.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_phone_five.set_pos(82, 162)
-
-            on_call_phone_six = lv.img(on_call_screen_tab)
-            on_call_phone_six.set_size(76, 50)
-            on_call_phone_six.set_src("U:/static/IMAGE_NUMBER_KEY6_ICON.png")
-            on_call_phone_six.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_phone_six.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_phone_six.set_pos(161, 162)#2
-
-            on_call_phone_seven = lv.img(on_call_screen_tab)
-            on_call_phone_seven.set_size(76, 50)
-            on_call_phone_seven.set_src("U:/static/IMAGE_NUMBER_KEY7_ICON.png")
-            on_call_phone_seven.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_phone_seven.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_phone_seven.set_pos(3, 214)
-
-            on_call_phone_eight = lv.img(on_call_screen_tab)
-            on_call_phone_eight.set_size(76, 50)
-            on_call_phone_eight.set_src("U:/static/IMAGE_NUMBER_KEY8_ICON.png")
-            on_call_phone_eight.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_phone_eight.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_phone_eight.set_pos(82, 214)
-
-            on_call_phone_nine = lv.img(on_call_screen_tab)
-            on_call_phone_nine.set_size(76, 50)
-            on_call_phone_nine.set_src("U:/static/IMAGE_NUMBER_KEY9_ICON.png")
-            on_call_phone_nine.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_phone_nine.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_phone_nine.set_pos(161, 214)
-
-            on_call_phone_start = lv.img(on_call_screen_tab)
-            on_call_phone_start.set_size(76, 50)
-            on_call_phone_start.set_src("U:/static/IMAGE_NUMBER_KEYSTAR_ICON.png")
-            on_call_phone_start.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_phone_start.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_phone_start.set_pos(3, 266)
-
-            on_call_phone_zero = lv.img(on_call_screen_tab)
-            on_call_phone_zero.set_size(76, 50)
-            on_call_phone_zero.set_src("U:/static/IMAGE_NUMBER_KEY0_ICON.png")
-            on_call_phone_zero.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_phone_zero.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_phone_zero.set_pos(82, 266)
-
-            on_call_phone_hash = lv.img(on_call_screen_tab)
-            on_call_phone_hash.set_size(76, 50)
-            on_call_phone_hash.set_src("U:/static/IMAGE_NUMBER_KEYHASH_ICON.png")
-            on_call_phone_hash.add_flag(lv.obj.FLAG.CLICKABLE)
-            on_call_phone_hash.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            on_call_phone_hash.set_pos(161, 266)
-
-            self.meta = on_call_screen
-            
-
-            on_call_phone_one.add_event_cb(lambda e: EventMesh.callback_wrapper(self.one(e)),
-                                     lv.EVENT.CLICKED, None)
-            on_call_phone_two.add_event_cb(lambda e: EventMesh.callback_wrapper(self.two(e)),
-                                        lv.EVENT.CLICKED, None)
-            on_call_phone_three.add_event_cb(lambda e: EventMesh.callback_wrapper(self.three(e)),
-                                        lv.EVENT.CLICKED, None)
-            on_call_phone_four.add_event_cb(lambda e: EventMesh.callback_wrapper(self.four(e)),
-                                        lv.EVENT.CLICKED, None)
-            on_call_phone_five.add_event_cb(lambda e: EventMesh.callback_wrapper(self.five(e)),
-                                        lv.EVENT.CLICKED, None)
-            on_call_phone_six.add_event_cb(lambda e: EventMesh.callback_wrapper(self.six(e)),
-                                        lv.EVENT.CLICKED, None)
-            on_call_phone_seven.add_event_cb(lambda e: EventMesh.callback_wrapper(self.seven(e)),
-                                        lv.EVENT.CLICKED, None)
-            on_call_phone_eight.add_event_cb(lambda e: EventMesh.callback_wrapper(self.eight(e)),
-                                        lv.EVENT.CLICKED, None)
-            on_call_phone_nine.add_event_cb(lambda e: EventMesh.callback_wrapper(self.nine(e)),
-                                        lv.EVENT.CLICKED, None)
-            on_call_phone_zero.add_event_cb(lambda e: EventMesh.callback_wrapper(self.zero(e)),
-                                        lv.EVENT.CLICKED, None)
-            
-            on_call_phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
-                                        lv.EVENT.CLICKED, None)#短按显示* 
-            
-            on_call_phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.pressed_start(e)),
-                                        lv.EVENT.LONG_PRESSED, None)#长按显示+
-            
-            on_call_phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.endpressed_start(e)),
-                                        lv.EVENT.RELEASED, None)#释放按键
-        
-            on_call_phone_hash.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hash(e)),
-                                        lv.EVENT.CLICKED, None)
-        name = EventMesh.publish("get_phonename")
-        on_call_label_name.set_text(name)
-        # on_call_label.set_text(str(self.meta_info))
-        on_call_second_label.set_text("00:00")
-        self.phone_num = ''
-        self.phone_list = []
-        self.button = 0
-
-
-    def show_num(self):
-        global on_call_screen_tab_label
-        #print("phone self.phone_num ",self.phone_num,self.phone_list)
-        on_call_screen_tab_label.set_size(200, 30)
-        on_call_screen_tab_label.set_text(self.phone_num)
-    def one(self,e):
-        if len(self.phone_list) >= ON_CALL_MAX_DATA:
-            self.phone_list.pop(0)
-            #return
-        
-        voiceCall.startDtmf("1",100)
-        self.phone_list.append("1")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-    
-    def two(self,e):
-        if len(self.phone_list) >= ON_CALL_MAX_DATA:
-            self.phone_list.pop(0)
-            #return
-        voiceCall.startDtmf("2",100)
-        self.phone_list.append("2")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def three(self,e):
-        if len(self.phone_list) >= ON_CALL_MAX_DATA:
-            self.phone_list.pop(0)
-        voiceCall.startDtmf("3",100)
-        self.phone_list.append("3")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def four(self,e):
-        if len(self.phone_list) >= ON_CALL_MAX_DATA:
-            self.phone_list.pop(0)
-        voiceCall.startDtmf("4",100)
-        self.phone_list.append("4")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def five(self,e):
-        if len(self.phone_list) >= ON_CALL_MAX_DATA:
-            self.phone_list.pop(0)
-            #return
-        voiceCall.startDtmf("5",100)
-        self.phone_list.append("5")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def six(self,e):
-        if len(self.phone_list) >= ON_CALL_MAX_DATA:
-            self.phone_list.pop(0)
-            #return
-        voiceCall.startDtmf("6",100)
-        self.phone_list.append("6")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def seven(self,e):
-        if len(self.phone_list) >= ON_CALL_MAX_DATA:
-            self.phone_list.pop(0)
-            #return
-        voiceCall.startDtmf("7",100)
-        self.phone_list.append("7")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def eight(self,e):
-        if len(self.phone_list) >= ON_CALL_MAX_DATA:
-            self.phone_list.pop(0)
-            #return
-        voiceCall.startDtmf("8",100)
-        self.phone_list.append("8")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def nine(self,e):
-        if len(self.phone_list) >= ON_CALL_MAX_DATA:
-            self.phone_list.pop(0)
-            #return
-        voiceCall.startDtmf("9",100)
-        self.phone_list.append("9")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def zero(self,e):
-        if len(self.phone_list) >= ON_CALL_MAX_DATA:#限制拨号数量20个数字
-            self.phone_list.pop(0)
-            #return
-        voiceCall.startDtmf("0",100)
-        self.phone_list.append("0")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-    
-    def start(self,e):
-        self.button = 0
-
-    def pressed_start(self,e):
-        self.button = 1
-    def Close(self):
-        self.timer_cb = 0
-        self.timer.stop()
-
-    def endpressed_start(self,e):
-        if len(self.phone_list) >= ON_CALL_MAX_DATA:#限制拨号数量20个数字
-            self.phone_list.pop(0)
-            #return
-  
-        # if self.button == 1:#长按
-        #     voiceCall.startDtmf("+",100)
-        #     self.phone_list.append("+")  
-        # else:#短按
-        voiceCall.startDtmf("*",100)
-        self.phone_list.append("*")  
-                      
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-    
-    def hash(self,e):
-        if len(self.phone_list) >= ON_CALL_MAX_DATA:#限制拨号数量20个数字
-            self.phone_list.pop(0)
-            #return
-        voiceCall.startDtmf("#",100)
-        self.phone_list.append("#")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def add_show_hidden(self):
-        on_call_volum_add.add_flag(lv.obj.FLAG.HIDDEN)
-        on_call_volum_reduce.add_flag(lv.obj.FLAG.HIDDEN)
-        on_call_bar.add_flag(lv.obj.FLAG.HIDDEN)
-    
-    def clear_show_hidden(self):
-        on_call_volum_add.clear_flag(lv.obj.FLAG.HIDDEN)
-        on_call_volum_reduce.clear_flag(lv.obj.FLAG.HIDDEN)
-        on_call_bar.clear_flag(lv.obj.FLAG.HIDDEN)
-
-    def open_volum_show(self, e):
-        global on_call_screen_tab,on_call_screen,on_call_obj
-       # self.aud.setVolume(0)
-        # if self.open_volum_state == 1:
-        #     self.open_volum_state = 0
-        # else:
-        #     self.open_volum_state = 1
-        # if self.open_volum_state == 1:
-        #     self.add_show_hidden()
-        # else:
-        #     self.clear_show_hidden()
-        
-    
-    def on_call_tab_show(self, e):
-        global on_call_screen_tab,on_call_screen,on_call_obj
-        if on_call_screen_tab != None:
-            self.phone_num = ''
-            self.phone_list = []
-            self.show_num()
-            on_call_screen_tab.clear_flag(lv.obj.FLAG.HIDDEN)
-            on_call_obj.add_flag(lv.obj.FLAG.HIDDEN)
-
-        
-    def on_return_show(self, e):
-        global on_call_screen_tab,on_call_screen,on_call_obj
-        if on_call_screen_tab != None:
-            on_call_screen_tab.add_flag(lv.obj.FLAG.HIDDEN)
-            on_call_obj.clear_flag(lv.obj.FLAG.HIDDEN)
-
-    def add_volum_size(self, e):
-        self.volum_size+=2
-        if self.volum_size >= 11:
-            self.volum_size = 11
-        self.show_bar(1)
-
-    def reduce_volum_size(self, e):
-        
-        self.volum_size -= 2
-        if self.volum_size < 0:
-            self.volum_size = 0
-        self.show_bar(1)
-
-    def show_bar(self,msg):
-        on_call_bar.set_value((100 // 11) * self.volum_size, lv.ANIM.OFF)
-        if msg == 1:
-            self.read_data = EventMesh.publish("get_storage_data")
-            self.read_data["volum"] = self.volum_size
-            self.aud.setVolume(self.volum_size)
-            EventMesh.publish("set_storage_data", self.read_data)
-            EventMesh.publish("set_volum_size",self.volum_size)
-            # print("self.read_data:size :{}".format(self.read_data))
-            with open("/usr/static/storage_file/config.json","w",encoding="utf-8") as fd:
-                ujson.dump(self.read_data,fd)
-
-    def post_processor_after_initialization(self):
-        global on_call_screen_tab,on_call_obj
-        self.count_sec = 0
-        self.timer.start(1000,1,self.refresh)
-        self.read_data = EventMesh.publish("get_storage_data")
-        # print("self.read_data:{}".format(self.read_data))
-        num = EventMesh.publish("get_volum_size")
-        if num == None:
-            self.volum_size = 8
-        else:
-            self.volum_size = num
-        self.aud.setVolume(self.volum_size)
-        self.show_bar(0)
-        self.open_volum = 0
-        self.phone_num = ''
-        self.phone_list = []
-        self.button = 0
-        if on_call_obj != None:
-            on_call_obj.clear_flag(lv.obj.FLAG.HIDDEN)
-        if on_call_screen_tab != None:
-            on_call_screen_tab.add_flag(lv.obj.FLAG.HIDDEN)
-        self.show_num()
-
-
-    def refresh(self,e):
-        # print("call_in")
-        global on_call_screen,on_call_label_name,on_call_second_label ,on_call_hangup
-        min = self.count_sec/60
-        sec = self.count_sec%60
-        if min > 99:
-            total = "%03d:%02d"%(min,sec)
-        else:
-            total = "%02d:%02d"%(min,sec)
-        on_call_second_label.set_text(str(total))
-        self.count_sec+=1
-    
-    def hangup(self,e):
-        EventMesh.publish("set_UI_high_priority", 0)
-        self.timer.stop()
-        voiceCall.callEnd()
-        
-    def Close(self):
-        self.timer.stop()
-
-    def btn1_release(self):
-        pass
-        #EventMesh.publish("load_screen", {"screen": "main_menu"})
-        
-    def btn8_press(self):
-        flag = EventMesh.publish("get_lcd_state")
-        if flag == 1:
-            EventMesh.publish(constants.EVENT.SYSTEM_SLEEP)
-        else:
-            EventMesh.publish(constants.EVENT.SYSTEM_UP)
-        #EventMesh.publish("load_screen", {"screen": "main_menu"})
-# -------------------------------------------step screen----------------------------------------------------------#
-
-step_screen = None
-step_label = None
-step_label_01 = None
-step_img = None
-class StepScreen(Screen):
-    NAME = "step"
-    
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.timer = osTimer()
-        
-    def initialization(self): 
-        global step_screen,step_label ,step_label_01 ,step_img 
-        if step_screen == None:
-            step_screen = lv.obj()
-            print("step_screen")
-            step_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            step_label = lv.label(step_screen)
-            step_label.set_pos(10, 30)
-            step_label.set_size(230, 50)
-            step_label.set_text("今日步数")
-            step_label.set_long_mode(lv.label.LONG.WRAP)
-            step_label.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-            step_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            step_label_01 = lv.label(step_screen)
-            step_label_01.set_pos(0, 100)
-            step_label_01.set_size(240, 50)
-            step_label_01.set_text("0步")
-            step_label_01.set_long_mode(lv.label.LONG.WRAP)
-            step_label_01.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            step_label_01.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            step_img = lv.img(step_screen)
-            step_img.set_pos(100, 150)
-            step_img.set_size(40, 65)
-            step_img.set_src("U:/static/IMAGE_STEP.png")
-            step_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            self.meta = step_screen
-
-        step = EventMesh.publish("get_old_step_value")
-        step_label_01.set_text("{}步".format(step))
-        self.timer.start(1000, 1, self.revcing)
-
-    def revcing(self, *args, **kwargs):
-        global step_screen,step_label ,step_label_01 ,step_img 
-        step = EventMesh.publish("get_old_step_value")
-        step_label_01.set_text("{}步".format(step))
-
-    def Close(self):
-        self.timer.stop()
-
-    def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "toolbox"})
-
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "toolbox"})
-        
-    def btn8_press(self):
-        EventMesh.publish("watch_top_show")
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-# -------------------------------------------weather screen----------------------------------------------------------
-
-weather_screen = None
-weather_img = None
-no_weather_img = None
-weather_tem_label = None
-no_weather_degree = None
-weather_detail_label = None
-weather_location_label = None
-no_connect_label = None
-no_connect_label1 = None
-class WeatherScreen(Screen):
-    NAME = "weather"
-    
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.weather_data = {}
-        EventMesh.subscribe("updata_weather_show", self.update_weather_data)
-
-    def initialization(self):
-        global weather_screen,weather_img,no_weather_img,weather_tem_label,no_weather_degree,\
-            weather_detail_label,weather_location_label,no_connect_label ,no_connect_label1 
-        if weather_screen == None :
-            weather_screen = lv.obj()
-            print("weather_screen")
-            weather_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            weather_img = lv.img(weather_screen)
-            weather_img.set_pos(10, 10)
-            weather_img.set_size(135, 120)
-
-            weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            no_weather_img = lv.img(weather_screen)
-            no_weather_img.set_pos(10, 10)
-            no_weather_img.set_size(135, 120)
-            no_weather_img.set_src("U:/static/update.png")
-            no_weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            weather_tem_label = lv.label(weather_screen)
-            weather_tem_label.set_pos(155, 44)
-            weather_tem_label.set_size(60, 50)
-            weather_tem_label.set_text("_ _")
-            weather_tem_label.set_long_mode(lv.label.LONG.WRAP)
-            weather_tem_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            weather_tem_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            no_weather_degree = lv.img(weather_screen)
-            no_weather_degree.set_pos(200, 40)
-            no_weather_degree.set_size(22, 22)
-            no_weather_degree.set_src("U:/static/degree.png")
-            no_weather_degree.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            weather_detail_label = lv.label(weather_screen)
-            weather_detail_label.set_pos(155, 80)
-            weather_detail_label.set_size(85, 50)
-            weather_detail_label.set_text("-/-")
-            weather_detail_label.set_long_mode(lv.label.LONG.WRAP)
-            weather_detail_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            weather_detail_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            weather_location_label = lv.label(weather_screen)
-            weather_location_label.set_pos(0, 200)
-            weather_location_label.set_size(240, 50)
-            weather_location_label.set_text("--")
-            weather_location_label.set_long_mode(lv.label.LONG.WRAP)
-            weather_location_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            weather_location_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            no_connect_label = lv.label(weather_screen)
-            no_connect_label.set_pos(0, 200)
-            no_connect_label.set_size(240, 40)
-            no_connect_label.set_text("找不到服务器")
-            no_connect_label.set_long_mode(lv.label.LONG.WRAP)
-            no_connect_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            no_connect_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            no_connect_label1 = lv.label(weather_screen)
-            no_connect_label1.set_pos(0, 250)
-            no_connect_label1.set_size(240, 70)
-            no_connect_label1.set_text("请联网后重试")
-            no_connect_label1.set_long_mode(lv.label.LONG.WRAP)
-            no_connect_label1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            no_connect_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            self.meta = weather_screen
-
-    def post_processor_after_initialization(self):
-        EventMesh.publish("updata_weather_show")
-
-
-    def update_weather_data(self, event, msg):
-        global weather_screen,weather_img,no_weather_img,weather_tem_label,no_weather_degree,\
-            weather_detail_label,weather_location_label,no_connect_label ,no_connect_label1 
-        connect = EventMesh.publish(constants.EVENT.GET_CONNECT) #获取网络状态
-        self.weather_data = EventMesh.publish("get_weather_data")
-        if weather_screen != None:
-            if connect != 0 and self.weather_data != None:
-                no_data = self.weather_data[8]
-                if no_data != 0 :
-                    no_weather_img.add_flag(lv.obj.FLAG.HIDDEN)
-                    weather_img.clear_flag(lv.obj.FLAG.HIDDEN)
-                    no_connect_label.set_text(" ")
-                    no_connect_label1.set_text(" ")
-                    # print("self.weather_data:{}".format(self.weather_data))
-                    type = self.weather_data[3]
-                    if type == None:
-                        weather_img.set_src("U:/static/update.png")#天气类型
-                    else:
-                        weather_img.set_src("U:/static/{}_weather.png".format(type))#天气类型
-
-                    temp = self.weather_data[4]
-                    if temp == None:
-                        weather_tem_label.set_text("_ _")
-                    else:
-                        weather_tem_label.set_text("{}".format(temp))
-
-                    date = self.weather_data[0]
-                    if date != '{}':
-                        date_month = date.split('-')[1]
-                        date_day = date.split('-')[2]
-                        weather_detail_label.set_text("{}/{}".format(date_month,date_day))#天气更新时间
-                    else:
-                        weather_detail_label.set_text("-/-")
-
-                    city = self.weather_data[7]
-                    if city != '{}':
-                        weather_location_label.set_text("{}".format(city))#城市
-                    else:
-                        weather_location_label.set_text("--")
-                else:#已联网未获取到天气数据
-                    weather_location_label.set_text(" ")
-                    weather_detail_label.set_text("-/-")
-                    weather_tem_label.set_text("_ _")
-
-                    no_connect_label.set_text("未获取网络数据")
-                    no_connect_label1.set_text("请稍候重试")
-
-            else:
-                weather_location_label.set_text(" ")
-                weather_detail_label.set_text("-/-")
-                weather_tem_label.set_text("_ _")
-                
-                no_weather_img.clear_flag(lv.obj.FLAG.HIDDEN)
-                weather_img.add_flag(lv.obj.FLAG.HIDDEN)
-                no_connect_label.set_text("找不到服务器")
-                no_connect_label1.set_text("请联网后重试")
-
-    def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "toolbox"})
-
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "toolbox"})
-        
-    def btn8_press(self):
-        EventMesh.publish("watch_top_show")
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-import audio
-from machine import Pin
-
-
-
-
-# -----------------------------联系人--------------contacts screen----------------------------------------------------------
-
-CONTACT_FLAG = 0
-contacts_screen = None
-contacts_cont = None
-contacts_top_title = None
-contact_none_label = None
-contacts_screen_list_screen = None
-class ContactsScreen(Screen):
-    NAME = "contacts"
-
-    def __init__(self):
-        super().__init__()
-        # -------------------------------------------popup_menu screen----------------------------------------------------------
-        self.meta = None
-        self.phonebook = {}
-        self.count = 0
-        self.phone_num_count = 0
-        self.phone_num = {}
-        self.name = []
-        self.check_json = 0
-        self.timer = osTimer()
-        self.contact_detail_list = None
-        EventMesh.subscribe("contact_updata_list_show", self.btn_create_list)
-        self.MXA_phone_num = 50 #最大显示号码个数
-        self.contact_detail_listt_dict = []
-        self.calling_btn = []
-
-    def post_processor_before_initialization(self):
-        data = EventMesh.publish("get_phonebook_list")
-        if data != None:
-            self.check_json = data[0]
-            self.phonebook = data[1]
-            self.count = 0
-
-    def initialization(self):
-        global contacts_screen,contacts_cont,contacts_top_title,contact_none_label,contacts_screen_list_screen
-        if contacts_screen == None:
-            contacts_screen = lv.obj()
-            print("contacts_screen")
-            contacts_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            contacts_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            contacts_screen_list_screen = lv.obj(contacts_screen)
-            contacts_screen_list_screen.set_pos(0, 50)
-            contacts_screen_list_screen.set_size(240, 270)
-            contacts_screen_list_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            contacts_screen_list_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            contacts_top_title = lv.label(contacts_screen)
-            contacts_top_title.set_pos(0, 10)
-            contacts_top_title.set_size(240, 40)
-            contacts_top_title.set_text("联系人")
-            contacts_top_title.set_long_mode(lv.label.LONG.WRAP)
-            contacts_top_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            contacts_top_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-        
-
-            contact_none_label = lv.label(contacts_screen_list_screen)
-            contact_none_label.set_pos(0, 80)
-            contact_none_label.set_size(240, 50)
-            contact_none_label.set_text("无联系人,请在手机\nAPP上添加")
-            contact_none_label.set_long_mode(lv.label.LONG.WRAP)
-            contact_none_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            contact_none_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            self.contact_detail_list = lv.obj(contacts_screen_list_screen)
-            self.contact_detail_list.set_pos(0, 0)
-            self.contact_detail_list.set_size(240, 271)
-            self.contact_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            self.contact_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-            for i in range(self.MXA_phone_num):
-                contact_btn = lv.btn(self.contact_detail_list)
-                contact_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-                contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)),
-                                        lv.EVENT.CLICKED, None)
-                contact_btn.add_flag(lv.obj.FLAG.HIDDEN)
-                
-                contact_btn_label_1 = lv.label(contact_btn)
-                contact_btn_label_2 = lv.label(contact_btn)
-                contact_btn_label_3 = lv.label(contact_btn)
-                self.contact_detail_listt_dict.append({"contact_btn":contact_btn,"contact_btn_label_1":contact_btn_label_1,"contact_btn_label_2":contact_btn_label_2,"contact_btn_label_3":contact_btn_label_3})
-            self.meta = contacts_screen
-        self.count = 0
-        self.btn_create_list_show(0)
-
-    def btn_create_list(self,event,msg):
-        self.post_processor_before_initialization()
-        self.timer.start(1 * 1000, 0, self.OutTime_s)
-
-    def OutTime_s(self,e):
-        self.btn_create_list_show(1)
-
-    def btn_create_list_show(self,state):
-        EventMesh.publish("publish_message_event_ui",{"func":self.btn_create_list_show_screen,"data":state})
-
-    def btn_create_list_show_screen(self,state):
-        global contacts_screen,contacts_cont,contacts_top_title,contact_none_label,contacts_screen_list_screen
-        print("btn_create_list_show_screen!!!!!!!!!!!")
-        if contacts_screen == None:
-            return
-        #读取json文件中的键作为label文本;
-        if self.check_json == True and len(self.phonebook) != 0:
-            self.contact_detail_list.clear_flag(lv.obj.FLAG.HIDDEN)
-            contact_none_label.add_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本
-            j =0
-            print("self.phonebook sorted :{} len(self.phonebook) :{}".format(sorted(self.phonebook.keys()),len(self.phonebook)))
-            phonebook_keys = sorted(self.phonebook.keys())
-
-            # self.contact_detail_list.delete()#先删除一次控件
-            # self.contact_detail_list = lv.obj(contacts_screen_list_screen)
-            # self.contact_detail_list.set_pos(0, 0)
-            # self.contact_detail_list.set_size(240, 271)
-            # self.contact_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            # self.contact_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-            # print("self.phonebook sorted :{}".format(len(self.phonebook)))
-            if len(self.phonebook) > self.MXA_phone_num:
-                    j = len(self.phonebook) - self.MXA_phone_num
-            for i in range(self.MXA_phone_num): #字典 key value
-                if(j >= len(self.phonebook)):
-                    self.contact_detail_listt_dict[i]["contact_btn"].add_flag(lv.obj.FLAG.HIDDEN)
-                    continue
-                name = self.phonebook[phonebook_keys[j]]
-                key_tmp = phonebook_keys[j]
-
-                print("name :{} key_tmp:{}".format(name,key_tmp))
-                
-                #contact_btn = lv.btn(self.contact_detail_list)
-                self.contact_detail_listt_dict[i]["contact_btn"].set_size(230,80)
-                self.contact_detail_listt_dict[i]["contact_btn"].set_pos(0,82*i )
-                self.contact_detail_listt_dict[i]["contact_btn"].add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
-                # contact_btn.add_style(style_contact_btn_pressed, lv.PART.MAIN | lv.STATE.PRESSED)
-                # self.contact_detail_listt_dict[i]["contact_btn"].add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling(e)),
-                #                         lv.EVENT.CLICKED, None)
-
-                #contact_btn_label_1 = lv.label(contact_btn)
-                self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_pos(0, 5)
-                self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_size(180, 25)
-                self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_text(key_tmp[4:])
-                self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_long_mode(lv.label.LONG.DOT)
-                self.contact_detail_listt_dict[i]["contact_btn_label_1"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-                #contact_btn_label_2 = lv.label(contact_btn)
-                self.contact_detail_listt_dict[i]["contact_btn_label_2"].set_pos(0, 5)
-                self.contact_detail_listt_dict[i]["contact_btn_label_2"].set_size(0, 0)
-                self.contact_detail_listt_dict[i]["contact_btn_label_2"].set_text(key_tmp)
-                
-
-                #contact_btn_label_3 = lv.label(contact_btn)
-                self.contact_detail_listt_dict[i]["contact_btn_label_3"].set_pos(0, 30)
-                self.contact_detail_listt_dict[i]["contact_btn_label_3"].set_size(220, 35)
-                self.contact_detail_listt_dict[i]["contact_btn_label_3"].set_text(name)
-                self.contact_detail_listt_dict[i]["contact_btn_label_3"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
-                
-                
-                self.contact_detail_listt_dict[i]["contact_btn"].clear_flag(lv.obj.FLAG.HIDDEN)
-                #self.contact_detail_listt_dict[i]["contact_btn"].scroll_to_view(lv.ANIM.OFF)
-                j+=1
-
-                if state == 1:
-                    self.contact_detail_listt_dict[i]["contact_btn"].scroll_to_view(lv.ANIM.OFF)  
-             
-        else:
-            if contacts_screen_list_screen != None:
-                contact_none_label.clear_flag(lv.obj.FLAG.HIDDEN) #显示空文本
-            if self.contact_detail_list != None:
-                self.contact_detail_list.add_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本
-            
-
-    def calling_cb(self,e):
-        code = e.get_code()
-        if code == lv.EVENT.CLICKED:
-            if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡时触发sos报警 无卡时自动关机
-                msg_text = e.get_target().get_child(1).get_text()
-                EventMesh.publish("publish_message_event_ui",{"func":self.calling,"data":msg_text})
-            else:
-                EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"})
-
-    def calling(self,msg_text):    
-        _msg = msg_text
-        print("contacts:calling_cb1:{}".format(_msg))
-        # print("_msg:{}".format(_msg))
-        msg_tmp = _msg.split(':')
-        msg_tmp = msg_tmp[1]
-        EventMesh.publish("save_phonename", msg_tmp)   
-
-        phone_num = self.phonebook[_msg]
-        EventMesh.publish("save_phonenum", phone_num)  
-
-        # phone_num_tmp = int(phone_num)
-        
-        "dialing_noplay_popup"
-        EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"})
-
-
-    def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn8_press(self):
-        EventMesh.publish("watch_top_show")
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-# -------------------------------------------temperature screen----------------------------------------------------------
-
-temperature_screen = None
-temperature_bg_img = None
-temperature_body_label = None
-temperature_degree_img = None
-temperature_value_label = None
-temperature_wrist_label = None
-temperature_wrist_degree_img = None
-temperature_wrist_value_label = None
-temperature_measure_end_label = None
-temperature_measure_countdown_label = None
-temp_reset_btn_img = None
-temp_line1 = None
-temp_line2 = None
-temp_line3 = None
-temp_line4 = None
-temp_line5 = None
-temp_line6 = None
-temp_line7 = None
-temperature_label = None
-temperature_line_bg_img = None
-temperature_done_img = None
-temperature_start_label=None
-temperature_bpm_label = None
-temperature_done_label = None
-temperature_keep_label = None
-
-style_line_blue = lv.style_t()
-style_line_blue.init()
-style_line_blue.set_line_width(10)
-style_line_blue.set_line_color(lv.color_make(35, 141, 255))
-
-class TemperatureScreen(Screen):
-    NAME = "temperature"
-
-
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.timer = osTimer()
-        self.point = 0
-        self.temp_value = 0
-
-    def initialization(self):
-        global temperature_screen,temperature_keep_label,temperature_label,temp_reset_btn_img,temp_line1,temp_line2,temp_line3,temp_line4,temp_line5,\
-            temp_line6,temp_line7,temperature_line_bg_img,temperature_done_img ,temperature_start_label,temperature_bpm_label ,temperature_done_label 
-        if temperature_screen == None:
-            temperature_screen = lv.obj()
-            print("temp_screen")
-            temperature_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            temperature_label = lv.label(temperature_screen)
-            temperature_label.set_pos(0, 10)
-            temperature_label.set_size(240, 40)
-            temperature_label.set_text("体温")
-            temperature_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
-            temperature_label.set_long_mode(lv.label.LONG.WRAP)
-            temperature_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            temperature_line_bg_img = lv.img(temperature_screen)
-            temperature_line_bg_img.set_pos(5, 50)
-            temperature_line_bg_img.set_size(230, 120)
-            temperature_line_bg_img.set_src("U:/static/temp_line_bg.png")
-
-            
-            temperature_done_img = lv.img(temperature_screen)
-            temperature_done_img.set_pos(20, 226)
-            temperature_done_img.set_src("U:/static/temp_gif03.png")
-
-            temp_reset_btn_img = lv.img(temperature_screen)
-            temp_reset_btn_img.set_pos(0, 182)
-            temp_reset_btn_img.set_src("U:/static/reset_hr_btn.png")
-            temp_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
-            temp_reset_btn_img.add_flag(lv.obj.FLAG.CLICKABLE)
-
-            temperature_start_label = lv.label(temperature_screen)
-            temperature_start_label.set_size(240,40)
-            temperature_start_label.set_pos(0,190)
-            temperature_start_label.set_text(" ")
-            temperature_start_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
-            temperature_start_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            temperature_start_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-
-            # hr_line_points1 = [{"x":0,"y":0},{"x":0,"y":30}]
-            # hr_line_points2 = [{"x":0,"y":0},{"x":0,"y":47}]
-            # hr_line_points3 = [{"x":0,"y":0},{"x":0,"y":67}]
-            # hr_line_points4 = [{"x":0,"y":0},{"x":0,"y":85}]
-            # hr_line_points5 = [{"x":0,"y":0},{"x":0,"y":100}]
-            # hr_line_points6 = [{"x":0,"y":0},{"x":0,"y":100}]
-            # hr_line_points7 = [{"x":0,"y":0},{"x":0,"y":100}]
-
-            temp_line1 = lv.line(temperature_screen)
-            temp_line1.set_points(hr_line_points,2)
-            temp_line1.set_pos(29,120)
-            temp_line1.set_size(10,0)
-            temp_line1.add_style(style_line_blue,0)
-
-            temp_line2 = lv.line(temperature_screen)
-            temp_line2.set_points(hr_line_points,2)
-            temp_line2.set_pos(57,103)
-            temp_line2.set_size(10,0)
-            temp_line2.add_style(style_line_blue,0)
-
-            temp_line3 = lv.line(temperature_screen)
-            temp_line3.set_points(hr_line_points,2)
-            temp_line3.set_pos(84,82)
-            temp_line3.set_size(10,0)
-            temp_line3.add_style(style_line_blue,0)
-
-            temp_line4 = lv.line(temperature_screen)
-            temp_line4.set_points(hr_line_points,2)
-            temp_line4.set_pos(110,66)
-            temp_line4.set_size(10,0)
-            temp_line4.add_style(style_line_blue,0)
-
-            temp_line5 = lv.line(temperature_screen)
-            temp_line5.set_points(hr_line_points,2)
-            temp_line5.set_pos(140,50)
-            temp_line5.set_size(10,0)
-            temp_line5.add_style(style_line_blue,0)
-
-            temp_line6 = lv.line(temperature_screen)
-            temp_line6.set_points(hr_line_points,2)
-            temp_line6.set_pos(167,50)
-            temp_line6.set_size(10,0)
-            temp_line6.add_style(style_line_blue,0)
-
-            temp_line7 = lv.line(temperature_screen)
-            temp_line7.set_points(hr_line_points,2)
-            temp_line7.set_pos(195,50)
-            temp_line7.set_size(10,0)
-            temp_line7.add_style(style_line_blue,0)
-
-            temperature_bpm_label = lv.label(temperature_screen)
-            temperature_bpm_label.set_size(120, 40)
-            temperature_bpm_label.set_pos(100, 244)
-            temperature_bpm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            temperature_bpm_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-
-            temperature_keep_label = lv.label(temperature_screen)
-            temperature_keep_label.set_size(140, 40)
-            temperature_keep_label.set_pos(100, 280)
-            temperature_keep_label.set_text(" ")
-            temperature_keep_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-
-
-            temperature_degree_img = lv.img(temperature_screen)
-            temperature_degree_img.set_pos(156, 242)
-            temperature_degree_img.set_size(22, 22)
-            temperature_degree_img.set_src("U:/static/degree.png")
-            temperature_degree_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-
-            self.meta = temperature_screen
-            temp_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
-                lv.EVENT.CLICKED, None)
-            
-        temperature_bpm_label.set_text("- -")
-        temperature_start_label.set_text("正在测量中.")
-        
-
-    def post_processor_after_initialization(self):
-        self.restart_up(0)
-
-    def restart_up(self,e):
-        global temperature_done_label,temperature_keep_label,temperature_bpm_label,temperature_start_label,temp_reset_btn_img
-        temperature_bpm_label.set_text("- -")
-        temperature_keep_label.set_text(" ")
-        temp_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
-        self.point = 0
-        temperature_bpm_label.set_text("- -")
-        temperature_start_label.set_text("正在测量中.")
-        EventMesh.publish("set_temp_state",1)
-        EventMesh.publish(constants.EVENT.START_TEMP)
-        self.show_history_data()
-        self.timer.start(1*500, 1, self.start_measure)
-
-    def show_history_data(self):
-        global temp_line1,temp_line2,temp_line3,temp_line4,temp_line5,temp_line6,temp_line7
-        read_data = {}
-        read_data = EventMesh.publish("get_history_temp_value")
-        print("hr history read_data",read_data)
-        if read_data != None:
-            count = len(read_data)
-            if count != 0:
-                if count >= 7:
-                    for i in  range(count):
-                        value = read_data["0{}".format(i+1)]
-                        value_temp = int(value)
-                        if value <= 30:
-                            line_value = int(value_temp)
-                        elif value <= 34:
-                            line_value = int((value_temp-30)*4.25)+30
-                        elif value <= 38:
-                            line_value = int((value_temp-34)*5)+47
-                        elif value <= 42:
-                            line_value = int((value_temp-38)*4)+67
-                        elif value < 46:
-                            line_value = int((value_temp-42)*3.75)+85
-                        else:
-                            value = 46
-                            line_value = 100
-                        
-
-                        if line_value >= 100:
-                            line_value = 100
-                        #print("hr hist",line_value)
-                        hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}]
-                        if i == 0:
-                            temp_line1.set_points(hr_line_points,2)
-                            temp_line1.set_pos(29,150-line_value)
-                            temp_line1.set_size(10,line_value)
-                            if value >= 37.3:
-                                temp_line1.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
-                            else:
-                                temp_line1.set_style_line_color(lv.color_make(35,141,255),0)
-                        if i == 1:
-                            temp_line2.set_points(hr_line_points,2)
-                            temp_line2.set_pos(57,150-line_value)
-                            temp_line2.set_size(10,line_value)
-                            if value >= 37.3:
-                                temp_line2.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
-                            else:
-                                temp_line2.set_style_line_color(lv.color_make(35,141,255),0)
-
-                        if i == 2:
-                            temp_line3.set_points(hr_line_points,2)
-                            temp_line3.set_pos(84,150-line_value)
-                            temp_line3.set_size(10,line_value)
-                            if value >= 37.3:
-                                temp_line3.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
-                            else:
-                                temp_line3.set_style_line_color(lv.color_make(35,141,255),0)
-                        if i == 3:
-                            temp_line4.set_points(hr_line_points,2)
-                            temp_line4.set_pos(112,150-line_value)
-                            temp_line4.set_size(10,line_value)
-                            if value >= 37.3:
-                                temp_line4.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
-                            else:
-                                temp_line4.set_style_line_color(lv.color_make(35,141,255),0)
-                        if i == 4:
-                            temp_line5.set_points(hr_line_points,2)
-                            temp_line5.set_pos(140,150-line_value)
-                            temp_line5.set_size(10,line_value)
-                            if value >= 37.3:
-                                temp_line5.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
-                            else:
-                                temp_line5.set_style_line_color(lv.color_make(35,141,255),0)
-
-                        if i == 5:
-                            temp_line6.set_points(hr_line_points,2)
-                            temp_line6.set_pos(167,150-line_value)
-                            temp_line6.set_size(10,line_value)
-                            if value >= 37.3:
-                                temp_line6.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
-                            else:
-                                temp_line6.set_style_line_color(lv.color_make(35,141,255),0)
-
-                        if i == 6:
-                            temp_line7.set_points(hr_line_points,2)
-                            temp_line7.set_pos(195,150-line_value)
-                            temp_line7.set_size(10,line_value)
-                            if value >= 37.3:
-                                temp_line7.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
-                            else:
-                                temp_line7.set_style_line_color(lv.color_make(35,141,255),0)
-                else:
-                    value = read_data["0{}".format(count)]
-                    value_temp = int(value)
-                    if value <= 30:
-                        line_value = int(value_temp)
-                    elif value <= 34:
-                        line_value = int((value_temp-30)*4.25)+30
-                    elif value <= 38:
-                        line_value = int((value_temp-34)*5)+47
-                    elif value <= 42:
-                        line_value = int((value_temp-38)*4)+67
-                    elif value < 46:
-                        line_value = int((value_temp-42)*3.75)+85
-                    else:
-                        value = 46
-                        line_value = 100
-                    
-
-                    if line_value >= 100:
-                        line_value = 100
-                   #
-                    hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}]
-                    if count == 1:
-                        temp_line1.set_points(hr_line_points,2)
-                        temp_line1.set_pos(29,150-line_value)
-                        temp_line1.set_size(10,line_value)
-                        if value >= 37.3:
-                            temp_line1.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
-                        else:
-                            temp_line1.set_style_line_color(lv.color_make(35,141,255),0)
-                    
-                    if count == 2:
-                        temp_line2.set_points(hr_line_points,2)
-                        temp_line2.set_pos(57,150-line_value)
-                        temp_line2.set_size(10,line_value)
-                        if value >= 37.3:
-                            temp_line2.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
-                        else:
-                            temp_line2.set_style_line_color(lv.color_make(35,141,255),0)
-
-                    if count == 3:
-                        temp_line3.set_points(hr_line_points,2)
-                        temp_line3.set_pos(84,150-line_value)
-                        temp_line3.set_size(10,line_value)
-                        if value >= 37.3:
-                            temp_line3.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
-                        else:
-                            temp_line3.set_style_line_color(lv.color_make(35,141,255),0)
-
-
-                    if count == 4:
-                        temp_line4.set_points(hr_line_points,2)
-                        temp_line4.set_pos(112,150-line_value)
-                        temp_line4.set_size(10,line_value)
-                        if value >= 37.3:
-                            temp_line4.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
-                        else:
-                            temp_line4.set_style_line_color(lv.color_make(35,141,255),0)
-
-                    if count == 5:
-                        temp_line5.set_points(hr_line_points,2)
-                        temp_line5.set_pos(140,150-line_value)
-                        temp_line5.set_size(10,line_value)
-                        if value >= 37.3:
-                            temp_line5.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
-                        else:
-                            temp_line5.set_style_line_color(lv.color_make(35,141,255),0)
-
-                    if count == 6:
-                        temp_line6.set_points(hr_line_points,2)
-                        temp_line6.set_pos(167,150-line_value)
-                        temp_line6.set_size(10,line_value)
-                        if value >= 37.3:
-                            temp_line6.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
-                        else:
-                            temp_line6.set_style_line_color(lv.color_make(35,141,255),0)
-
-                    if count == 7:
-                        temp_line7.set_points(hr_line_points,2)
-                        temp_line7.set_pos(195,150-line_value)
-                        temp_line7.set_size(10,line_value)      
-                        if value >= 37.3:
-                            temp_line7.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
-                        else:
-                            temp_line7.set_style_line_color(lv.color_make(35,141,255),0)
-
-    def start_measure(self,*args):
-        global temperature_label,temperature_keep_label,temperature_done_img ,temp_reset_btn_img,temperature_start_label,temperature_bpm_label ,temperature_done_label
-        self.point = self.point + 1
-        EventMesh.publish("system_sleep_rest")#防止黑屏
-        
-        temp = EventMesh.publish(constants.EVENT.GET_TEMP) 
-        tmp = str(temp).split('.')[0] + '.' + str(temp).split('.')[1][:1]#获取小数点后一位 舍去小数点最后一位
-        print("self.temp:{}".format(temp))
-        if self.point >= 2:
-            if temp != 0:
-                temperature_bpm_label.set_text("{}".format(tmp))
-            else:
-                temperature_bpm_label.set_text("- -")
-        
-        if self.point%4 == 0 :
-            temperature_start_label.set_text("正在测量中..")
-            temperature_done_img.set_src("U:/static/temp_gif02.png")
-        if self.point%4 == 1 :
-            temperature_start_label.set_text("正在测量中...")
-            temperature_done_img.set_src("U:/static/temp_gif01.png")
-        if self.point%4 == 2 :
-            temperature_start_label.set_text("正在测量中.")
-            temperature_done_img.set_src("U:/static/temp_gif02.png")
-        
-        if self.point%4 == 3 :
-            temperature_start_label.set_text("正在测量中.")
-            temperature_done_img.set_src("U:/static/temp_gif03.png")
-
-        tmp_f = str(temp).split('.')[0] 
-        tmp_f_tmp = int(tmp_f)
-
-        tmp_d = str(temp).split('.')[1][:1]
-        tmp_d_tmp = int(tmp_d)
-        if self.point >= 2:
-            if temp >= 37.3:
-                temperature_keep_label.set_text("体温偏高")
-                temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0x00, 0x00), lv.STATE.DEFAULT)
-            else:
-                temperature_keep_label.set_text("体温正常")
-                temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-        if self.point > 120 : #测2min
-
-            if temp >= 37.3:
-                temperature_done_img.set_src("U:/static/temp_high.png")
-            else:
-                temperature_done_img.set_src("U:/static/temp_gif03.png")
-            temp_reset_btn_img.clear_flag(lv.obj.FLAG.HIDDEN)
-            temperature_start_label.set_text("测量结束,点击重测")
-            
-            EventMesh.publish("set_history_temp_value",temp)
-            self.show_history_data()
-            self.timer.stop()
-            self.point = 0
-            EventMesh.publish("set_temp_state",0)
-            EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp])
-            EventMesh.publish(constants.EVENT.STOP_TEMP)
-            
-
-            print("stop debug9")
-
-    def Close(self):
-        self.timer.stop()
-        EventMesh.publish("set_temp_state",0)
-        EventMesh.publish(constants.EVENT.STOP_TEMP)
-
-    def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "health"})
-
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "health"})
-        
-    def btn8_press(self):
-        EventMesh.publish("watch_top_show")
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-  
-# class TemperatureScreen(Screen):
-#     NAME = "temperature"
-
-#     def __init__(self):
-#         super().__init__()
-#         self.meta = None
-#         self.temp_timer = osTimer()
-#         self.count = 0
-#     def initialization(self):
-#         global temperature_screen,temperature_bg_img ,temperature_body_label ,temperature_degree_img ,temperature_value_label,\
-#             temperature_wrist_label,temperature_wrist_degree_img ,temperature_wrist_value_label,temperature_measure_end_label,temperature_measure_countdown_label
-#         if temperature_screen == None:
-#             temperature_screen = lv.obj()
-#             print("temperature_screen")
-#             temperature_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-#             temperature_bg_img = lv.img(temperature_screen)
-#             temperature_bg_img.set_pos(30, 50)
-#             temperature_bg_img.set_size(31, 32)
-#             temperature_bg_img.set_src("U:/static/temp_hand.png")
-#             temperature_bg_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-#             temperature_body_label = lv.label(temperature_screen)
-#             temperature_body_label.set_pos(80, 40)
-#             temperature_body_label.set_size(160, 20)
-#             temperature_body_label.set_text("当前腕温")
-#             temperature_body_label.set_long_mode(lv.label.LONG.WRAP)
-#             temperature_body_label.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-#             temperature_body_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-#             temperature_degree_img = lv.img(temperature_screen)
-#             temperature_degree_img.set_pos(146, 70)
-#             temperature_degree_img.set_size(22, 22)
-#             temperature_degree_img.set_src("U:/static/degree.png")
-#             temperature_degree_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-#             temperature_value_label = lv.label(temperature_screen)
-#             temperature_value_label.set_pos(90,73)
-#             temperature_value_label.set_size(50, 30)
-#             temperature_value_label.set_text("--")
-#             temperature_value_label.set_long_mode(lv.label.LONG.WRAP)
-#             temperature_value_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-#             temperature_value_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-#             # temperature_wrist_label = lv.label(temperature_screen)
-#             # temperature_wrist_label.set_pos(80,120)
-#             # temperature_wrist_label.set_size(100, 20)
-#             # temperature_wrist_label.set_text("当前腕温")
-#             # temperature_wrist_label.set_long_mode(lv.label.LONG.WRAP)
-#             # temperature_wrist_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-#             # temperature_wrist_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-#             # temperature_wrist_degree_img = lv.img(temperature_screen)
-#             # temperature_wrist_degree_img.set_pos(150, 150)
-#             # temperature_wrist_degree_img.set_size(22, 22)
-#             # temperature_wrist_degree_img.set_src("U:/static/degree.png")
-#             # temperature_wrist_degree_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-#             # temperature_wrist_value_label = lv.label(temperature_screen)
-#             # temperature_wrist_value_label.set_pos(96,155)
-#             # temperature_wrist_value_label.set_size(50, 30)
-#             # temperature_wrist_value_label.set_text("--")
-#             # temperature_wrist_value_label.set_long_mode(lv.label.LONG.WRAP)
-#             # temperature_wrist_value_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-#             # temperature_wrist_value_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-#             temperature_measure_countdown_label = lv.label(temperature_screen)
-#             temperature_measure_countdown_label.set_pos(0,160)
-#             temperature_measure_countdown_label.set_size(240, 30)
-#             temperature_measure_countdown_label.set_text("03:00")
-#             temperature_measure_countdown_label.set_long_mode(lv.label.LONG.WRAP)
-#             temperature_measure_countdown_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-#             temperature_measure_countdown_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-#             temperature_measure_end_label = lv.label(temperature_screen)
-#             temperature_measure_end_label.set_pos(0,220)
-#             temperature_measure_end_label.set_size(240, 30)
-#             temperature_measure_end_label.set_text(" ")
-#             temperature_measure_end_label.set_long_mode(lv.label.LONG.WRAP)
-#             temperature_measure_end_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-#             temperature_measure_end_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-#             self.meta = temperature_screen
-#         if temperature_value_label != None:
-#             temperature_value_label.set_text("--")
-#         if temperature_measure_end_label != None:
-#             temperature_measure_end_label.set_text(" ")
-#         if temperature_measure_countdown_label != None:
-#             temperature_measure_countdown_label.set_text("03:00")
-#         EventMesh.publish("set_temp_state",1)
-#         EventMesh.publish(constants.EVENT.START_TEMP)
-#         self.count = 0
-#         self.countdown = 3*60
-#         self.temp_timer.start(1*1000, 1, self.temp_timerout)
-#     def temp_timerout(self,*args):
-#         global temperature_value_label,temperature_measure_countdown_label,temperature_measure_end_label
-#         self.count += 1
-#         EventMesh.publish("system_sleep_rest")#防止黑屏
-#         temp = EventMesh.publish(constants.EVENT.GET_TEMP) 
-#         tmp = str(temp).split('.')[0] + '.' + str(temp).split('.')[1][:1]#获取小数点后一位 舍去小数点最后一位
-#         if temperature_measure_end_label != None:
-#             temperature_value_label.set_text("{}".format(tmp))
-
-#         tmp_f = str(temp).split('.')[0] 
-#         tmp_f_tmp = int(tmp_f)
-
-#         tmp_d = str(temp).split('.')[1][:1]
-#         tmp_d_tmp = int(tmp_d)
-        
-#         if self.countdown > 0:
-#             self.countdown-=1
-#         min = self.countdown / 60
-#         sec = self.countdown % 60
-#         if temperature_measure_countdown_label != None:
-#             temperature_measure_countdown_label.set_text("{}:{}".format("%02d"%(min),"%02d"%(sec)))
-
-#         # print("temp:{} tmp_f:{} tmp_f_tmp:{} tmp_d:{} tmp_d_tmp:{} self.count:{}".format(temp,tmp_f,tmp_f_tmp,tmp_d,tmp_d_tmp,self.count)) 
-#         if self.count >= 3*60:
-#             self.count = 0
-#             EventMesh.publish("set_temp_state",0)
-#             if temperature_measure_end_label != None:
-#                 temperature_measure_end_label.set_text("测量完成")
-#             self.temp_timer.stop()
-#             EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp])
-#             EventMesh.publish(constants.EVENT.STOP_TEMP)
-#     def Close(self):
-#         self.count = 0
-#         self.temp_timer.stop()
-#         EventMesh.publish("set_temp_state",0)
-#         EventMesh.publish(constants.EVENT.STOP_TEMP)
-        
-#     def done_return(self):
-#         EventMesh.publish("load_screen", {"screen": "health"})
-
-#     def btn1_release(self):
-#         EventMesh.publish("load_screen", {"screen": "health"})
-        
-#     def btn8_press(self):
-#         EventMesh.publish("watch_top_show")
-#         EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-
-
-line_points = [{"x":0,"y":0},{"x":240,"y":0}]
-spo2_screen = None
-spo2_label_0 = None
-spo2_done_img = None
-spo2_label = None
-spo2_label_1 = None
-spo2_line = None
-spo2_last_time = None
-spo2_last_value = None
-heartrate_screen = None
-heartrate_label = None
-heartrate_done_img = None
-heartrate_start_label = None
-heartrate_bpm_label = None
-heartrate_done_label = None
-heartrate_line_bg_img = None
-spo2_line1 = None
-spo2_line2 = None
-spo2_line3 = None
-spo2_line4 = None
-spo2_line5 = None
-spo2_line6 = None
-spo2_line7 = None
-spo2_reset_btn_img = None
-spo2_label = None
-spo2_line_bg_img = None
-spo2_done_img = None
-spo2_done_label = None
-spo2_value_label = None
-spo2_start_label = None
-
-style_line_red = lv.style_t()
-style_line_red.init()
-style_line_red.set_line_width(10)
-style_line_red.set_line_color(lv.color_make(0xff, 0x00, 0x00))
-
-spo2_line_points = [{"x":0,"y":0},{"x":0,"y":0}]
-
-class Spo2Screen(Screen):
-    NAME = "spo2"
-
-
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.timer = osTimer()
-        self.point = 0
-        self.spo2_value = 0
-
-    def initialization(self):
-        global spo2_screen,spo2_label,spo2_value_label,spo2_reset_btn_img,spo2_done_img,spo2_line_bg_img,spo2_line1,spo2_line2,\
-            spo2_line3,spo2_line4,spo2_line5,spo2_line6,spo2_line7,spo2_line_bg_img ,spo2_start_label ,spo2_done_label 
-        if spo2_screen == None:
-            spo2_screen = lv.obj()
-            print("spo2_screen")
-            spo2_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            spo2_label = lv.label(spo2_screen)
-            spo2_label.set_pos(0, 20)
-            spo2_label.set_size(240, 40)
-            spo2_label.set_text("血氧")
-            spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
-            spo2_label.set_long_mode(lv.label.LONG.WRAP)
-            spo2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            spo2_line_bg_img = lv.img(spo2_screen)
-            spo2_line_bg_img.set_pos(5, 60)
-            spo2_line_bg_img.set_size(230, 120)
-            spo2_line_bg_img.set_src("U:/static/spo2_line_bg.png")
-
-            
-            spo2_done_img = lv.img(spo2_screen)
-            spo2_done_img.set_pos(20, 240)
-            spo2_done_img.set_src("U:/static/spo2_gif04.png")
-
-            spo2_reset_btn_img = lv.img(spo2_screen)
-            spo2_reset_btn_img.set_pos(0, 192)
-            spo2_reset_btn_img.set_src("U:/static/reset_hr_btn.png")
-            spo2_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
-            spo2_reset_btn_img.add_flag(lv.obj.FLAG.CLICKABLE)
-
-            spo2_start_label = lv.label(spo2_screen)
-            spo2_start_label.set_size(240,40)
-            spo2_start_label.set_pos(0,200)
-            spo2_start_label.set_text(" ")
-            spo2_start_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
-            spo2_start_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            spo2_start_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-
-
-            spo2_line1 = lv.line(spo2_screen)
-            spo2_line1.set_points(spo2_line_points,2)
-            spo2_line1.set_pos(25,60)
-            spo2_line1.set_size(10,0)
-            spo2_line1.add_style(style_line_red,0)
-
-            spo2_line2 = lv.line(spo2_screen)
-            spo2_line2.set_points(spo2_line_points,2)
-            spo2_line2.set_pos(53,60)
-            spo2_line2.set_size(10,0)
-            spo2_line2.add_style(style_line_red,0)
-
-            spo2_line3 = lv.line(spo2_screen)
-            spo2_line3.set_points(spo2_line_points,2)
-            spo2_line3.set_pos(80,60)
-            spo2_line3.set_size(10,0)
-            spo2_line3.add_style(style_line_red,0)
-
-            spo2_line4 = lv.line(spo2_screen)
-            spo2_line4.set_points(spo2_line_points,2)
-            spo2_line4.set_pos(109,60)
-            spo2_line4.set_size(10,0)
-            spo2_line4.add_style(style_line_red,0)
-
-            spo2_line5 = lv.line(spo2_screen)
-            spo2_line5.set_points(spo2_line_points,2)
-            spo2_line5.set_pos(136,60)
-            spo2_line5.set_size(10,0)
-            spo2_line5.add_style(style_line_red,0)
-
-            spo2_line6 = lv.line(spo2_screen)
-            spo2_line6.set_points(spo2_line_points,2)
-            spo2_line6.set_pos(164,60)
-            spo2_line6.set_size(10,0)
-            spo2_line6.add_style(style_line_red,0)
-
-            spo2_line7 = lv.line(spo2_screen)
-            spo2_line7.set_points(spo2_line_points,2)
-            spo2_line7.set_pos(192,60)
-            spo2_line7.set_size(10,0)
-            spo2_line7.add_style(style_line_red,0)
-
-            spo2_value_label = lv.label(spo2_screen)
-            spo2_value_label.set_size(110, 40)
-            spo2_value_label.set_pos(130, 270)
-            spo2_value_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            spo2_value_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-
-
-            self.meta = spo2_screen
-            spo2_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
-                lv.EVENT.CLICKED, None)
-
-    def post_processor_after_initialization(self):
-        self.point = 0
-        self.spo2_value = 0
-        self.show_history_data()
-        self.restart_up(0)
-
-    def restart_up(self,e):
-        global spo2_value_label,heartrate_bpm_label,spo2_start_label,spo2_reset_btn_img
-        self.timer.start(1*500, 1, self.start_measure)
-        if spo2_reset_btn_img != None:
-            spo2_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
-        self.point = 0
-        
-        spo2_value_label.set_text("- -%")
-        spo2_start_label.set_text("正在测量中.")
-        EventMesh.publish("set_spo2_state",1)#2代表后台进入血氧测试
-        EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)
-
-    def show_history_data(self):
-        global spo2_line1,spo2_line2,spo2_line3,spo2_line4,spo2_line5,spo2_line6,spo2_line7
-        read_data = {}
-        read_data = EventMesh.publish("get_history_spo2_value")
-        print("hr get_history_spo2_value",read_data)
-        if read_data != None:
-            count = len(read_data)
-            if count != 0:
-                if count >= 7:
-                    for i in  range(count):
-                        value = read_data["0{}".format(i+1)]
-                        if value < 80:
-                            value = 80
-                        if value >= 100:
-                            value = 100
-                        if value <= 85:
-                            value = value - 80
-                            line_value = int(value*6)
-                        elif value <= 90:
-                            value = value-85
-                            line_value = int((17/5)*value)+30
-                        elif value <= 95:
-                            value = value-90
-                            line_value = int((21/5)*value)+47
-                        elif value <= 100:
-                            value = value-95
-                            line_value = int((16/5)*value)+68
-                        
-                       
-                        if line_value >= 100:
-                            line_value = 100
-                        #print("hr hist",line_value)
-                        hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}]
-                        if i == 0:
-                            spo2_line1.set_points(hr_line_points,2)
-                            spo2_line1.set_pos(25,160-line_value)
-                            spo2_line1.set_size(10,line_value)
-                        if i == 1:
-                            spo2_line2.set_points(hr_line_points,2)
-                            spo2_line2.set_pos(53,160-line_value)
-                            spo2_line2.set_size(10,line_value)
-
-                        if i == 2:
-                            spo2_line3.set_points(hr_line_points,2)
-                            spo2_line3.set_pos(80,160-line_value)
-                            spo2_line3.set_size(10,line_value)
-
-                        if i == 3:
-                            spo2_line4.set_points(hr_line_points,2)
-                            spo2_line4.set_pos(109,160-line_value)
-                            spo2_line4.set_size(10,line_value)
-
-                        if i == 4:
-                            spo2_line5.set_points(hr_line_points,2)
-                            spo2_line5.set_pos(136,160-line_value)
-                            spo2_line5.set_size(10,line_value)
-
-                        if i == 5:
-                            spo2_line6.set_points(hr_line_points,2)
-                            spo2_line6.set_pos(164,160-line_value)
-                            spo2_line6.set_size(10,line_value)
-
-                        if i == 6:
-                            spo2_line7.set_points(hr_line_points,2)
-                            spo2_line7.set_pos(192,160-line_value)
-                            spo2_line7.set_size(10,line_value)
-                else:
-                    value = read_data["0{}".format(count)]
-                    if value < 80:
-                            value = 80
-                    if value >= 100:
-                        value = 100
-
-                    if value <= 85:
-                        value = value - 80
-                        line_value = int(value*6)
-                    elif value <= 90:
-                        value = value-85
-                        line_value = int((17/5)*value)+30
-                    elif value <= 95:
-                        value = value-90
-                        line_value = int((21/5)*value)+47
-                    elif value <= 100:
-                        value = value-95
-                        line_value = int((16/5)*value)+68
-                    
-                    
-                    if line_value >= 100:
-                        line_value = 100
-                   #
-                    hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}]
-                    if count == 1:
-                        spo2_line1.set_points(hr_line_points,2)
-                        spo2_line1.set_pos(25,160-line_value)
-                        spo2_line1.set_size(10,line_value)
-                    if count == 2:
-                        spo2_line2.set_points(hr_line_points,2)
-                        spo2_line2.set_pos(53,160-line_value)
-                        spo2_line2.set_size(10,line_value)
-
-                    if count == 3:
-                        spo2_line3.set_points(hr_line_points,2)
-                        spo2_line3.set_pos(80,160-line_value)
-                        spo2_line3.set_size(10,line_value)
-
-                    if count == 4:
-                        spo2_line4.set_points(hr_line_points,2)
-                        spo2_line4.set_pos(109,160-line_value)
-                        spo2_line4.set_size(10,line_value)
-
-                    if count == 5:
-                        spo2_line5.set_points(hr_line_points,2)
-                        spo2_line5.set_pos(136,160-line_value)
-                        spo2_line5.set_size(10,line_value)
-
-                    if count == 6:
-                        spo2_line6.set_points(hr_line_points,2)
-                        spo2_line6.set_pos(164,160-line_value)
-                        spo2_line6.set_size(10,line_value)
-
-                    if count == 7:
-                        spo2_line7.set_points(hr_line_points,2)
-                        spo2_line7.set_pos(192,160-line_value)
-                        spo2_line7.set_size(10,line_value)      
-
-
-    def start_measure(self,*args):
-        global spo2_screen,spo2_label,spo2_start_label,spo2_value_label,spo2_done_img ,spo2_reset_btn_img 
-        self.point = self.point + 1
-        EventMesh.publish("system_sleep_rest")#防止黑屏
-        self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-        if self.point >= 2:
-            if self.spo2_value != 0:
-                spo2_value_label.set_text("{}%".format(self.spo2_value))
-            else:
-                spo2_value_label.set_text("- - %")
-        
-        if self.point%4 == 0 :
-            spo2_start_label.set_text("正在测量中..")
-            spo2_done_img.set_src("U:/static/spo2_gif03.png")
-
-        if self.point%4 == 1 :
-            spo2_start_label.set_text("正在测量中...")
-            spo2_done_img.set_src("U:/static/spo2_gif02.png")
-
-        if self.point%4 == 2 :
-            spo2_start_label.set_text("正在测量中.")
-            spo2_done_img.set_src("U:/static/spo2_gif01.png")
-        
-        if self.point%4 == 3 :
-            spo2_start_label.set_text("正在测量中.")
-            spo2_done_img.set_src("U:/static/spo2_gif04.png")
-
-
-
-        if self.point > 120: #测20s
-            spo2_done_img.set_src("U:/static/spo2_gif04.png")
-            self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-            if self.spo2_value >= 85:
-                EventMesh.publish("set_old_spo2_data",self.spo2_value)
-                EventMesh.publish("set_history_spo2_value",self.spo2_value)
-                EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,self.spo2_value)
-            spo2_reset_btn_img.clear_flag(lv.obj.FLAG.HIDDEN)
-            
-            
-            if self.spo2_value != 0:
-                spo2_start_label.set_text("测量结束,点击重测")
-                spo2_value_label.set_text("{}%".format(self.spo2_value))
-                # heartrate_done_label.set_text("测量完成")
-            else:
-                spo2_value_label.set_text("- - %")
-                spo2_start_label.set_text("测量异常,点击重测")
-                
-            self.show_history_data()
-
-            self.timer.stop()
-            self.point = 0
-            EventMesh.publish("set_spo2_state",0)#0代表关闭测试
-            print("stop debug9")
-            EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-
-    def Close(self):
-        self.timer.stop()
-        get_hr_state = EventMesh.publish("get_hr_state")
-        get_spo2_state = EventMesh.publish("get_spo2_state")
-        if get_hr_state == 1 or get_spo2_state == 1:
-            EventMesh.publish("set_spo2_state",0)#0代表关闭测试
-            EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-
-    def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "health"})
-
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "health"})
-        
-    def btn8_press(self):
-        EventMesh.publish("watch_top_show")
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-
-
-
-# class Spo2Screen(Screen):
-#     NAME = "spo2"
-
-#     def __init__(self):
-#         super().__init__()
-#         self.meta = None
-#         self.timer = osTimer()
-#         self.point = 0
-#         self.spo2_value = 0
-#         self.last_spo2_value = 0
-#         self.rtc = RTC()
-
-#     def initialization(self):
-#         global spo2_screen ,spo2_label_0 ,spo2_done_img ,spo2_label ,spo2_label_1 ,spo2_line ,spo2_last_time,spo2_last_value 
-#         if spo2_screen == None:
-#             spo2_screen = lv.obj()
-#             print("spo2_screen")
-#             spo2_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-#             spo2_label_0 = lv.label(spo2_screen)
-#             spo2_label_0.set_pos(0, 10)
-#             spo2_label_0.set_size(240, 40)
-#             spo2_label_0.set_text("血氧")
-#             spo2_label_0.set_long_mode(lv.label.LONG.WRAP)
-#             spo2_label_0.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-#             spo2_label_0.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-#             spo2_done_img = lv.img(spo2_screen)
-#             spo2_done_img.set_pos(89, 50)
-#             spo2_done_img.set_size(62, 84)
-#             spo2_done_img.set_src("U:/static/IMAGE_SPO2_ONLY_TEST_DONE.png")
-
-#             spo2_label = lv.label(spo2_screen)
-#             spo2_label.set_size(240,30)
-#             spo2_label.set_pos(0,160)
-#             spo2_label.set_text(" ")
-#             spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-#             spo2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-#             spo2_label_1 = lv.label(spo2_screen)
-#             spo2_label_1.set_size(240,40)
-#             spo2_label_1.set_pos(0,200)
-#             spo2_label_1.set_text("测量中.")
-#             spo2_label_1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-#             spo2_label_1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            
-#             spo2_line = lv.line(spo2_screen)
-#             spo2_line.set_points(line_points,2)
-#             spo2_line.set_pos(0,240)
-#             spo2_line.set_size(240,10)
-#             spo2_line.add_style(style_line,0)
-
-#             spo2_last_time = lv.label(spo2_screen)
-#             spo2_last_time.set_size(240, 15)
-#             spo2_last_time.set_pos(0, 250)
-#             spo2_last_time.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-#             spo2_last_time.set_text(" ")
-#             spo2_last_time.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-
-#             spo2_last_value = lv.label(spo2_screen)
-#             spo2_last_value.set_size(240, 15)
-#             spo2_last_value.set_pos(0, 280)
-#             spo2_last_value.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-#             spo2_last_value.set_text(" ")
-#             spo2_last_value.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-#             self.meta = spo2_screen
-
-#         self.point = 0
-#         self.spo2_value = 0
-#         self.timer.start(1*1000, 1, self.start_measure)
-#         EventMesh.publish("set_spo2_state",1)#2代表后台进入血氧测试
-#         EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)
-#         self.last_spo2_value = EventMesh.publish("get_old_spo2_data")
-#         spo2_label.set_text("--%")
-#         if self.last_spo2_value == 0:
-#             spo2_last_value.set_text(" ")
-#         else:
-#             spo2_last_value.set_text("{}%".format(self.last_spo2_value))
-
-#     def start_measure(self,*args):
-#         global spo2_screen ,spo2_label_0 ,spo2_done_img ,spo2_label ,spo2_label_1 ,spo2_line ,spo2_last_time,spo2_last_value 
-#         self.point = self.point + 1
-#         EventMesh.publish("system_sleep_rest")#防止黑屏
-#         self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-#         if self.spo2_value == 0:
-#             spo2_label.set_text("--%")
-#         else:
-#             spo2_label.set_text("{} %".format(self.spo2_value))
-#         if self.point%4 == 0 :
-#             spo2_label_1.set_text("测量中..")
-#         if self.point%4 == 1 :
-#             spo2_label_1.set_text("测量中...")
-#         if self.point%4 == 2 :
-#             spo2_label_1.set_text("测量中....")
-#         if self.point%4 == 3 :
-#             spo2_label_1.set_text("测量中.")
-
-#         if self.point > 60: #测20s
-#             self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-#             # print("ui self.spo2_value :{}".format(self.spo2_value))
-#             if self.spo2_value > 85 and self.spo2_value != None:
-#                 EventMesh.publish("set_old_spo2_data",self.spo2_value)
-#                 EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,self.spo2_value)
-#             spo2_label.set_text("{} %".format(self.spo2_value))
-#             if self.spo2_value == 0:
-#                 spo2_label.set_text(" ")
-#                 spo2_label_1.set_text("退出,请重新测量")
-#                 self.last_spo2_value = EventMesh.publish("get_old_spo2_data")
-#                 spo2_last_value.set_text(" ")
-#             else:
-#                 self.last_spo2_value = self.spo2_value
-#                 spo2_last_value.set_text("{}%".format(self.last_spo2_value))
-#                 spo2_label_1.set_text("测量完成")
-#                 time = EventMesh.publish("screen_get_time")
-#                 #print("time ",time)
-#                 rtc_time = self.rtc.datetime()
-#                 time_time ="  {}:{}".format("%02d"%(time[0][0]),"%02d"%(time[0][1]))#测量时间
-#                 spo2_last_time.set_text(str(rtc_time[0])+'/'+str(rtc_time[1])+'/'+str(rtc_time[2])+str(time_time))
-            
-            
-
-#             self.timer.stop()
-#             self.point = 0
-#             EventMesh.publish("set_spo2_state",0)#0代表关闭测试
-#             EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-#             # spo2_last_time.set_text()
-
-#     def Close(self):
-#         self.timer.stop()
-#         get_hr_state = EventMesh.publish("get_hr_state")
-#         get_spo2_state = EventMesh.publish("get_spo2_state")
-#         if get_hr_state == 1 or get_spo2_state == 1:
-#             EventMesh.publish("set_spo2_state",0)#0代表关闭测试
-#             EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-
-#     def done_return(self):
-#         EventMesh.publish("load_screen", {"screen": "health"})
-
-#     def btn1_release(self):
-#         EventMesh.publish("load_screen", {"screen": "health"})
-        
-#     def btn8_press(self):
-#         EventMesh.publish("watch_top_show")
-#         EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-
-
-
-
-
-
-# -------------------------------------------countdown screen----------------------------------------------------------
-countdown_screen = None 
-countdown_title = None
-countdown_hour = None
-countdown_mao = None
-countdown_mao = None
-countdown_mao1 = None
-countdown_sec = None
-countdown_hour_up = None
-countdown_hour_up_btn = None
-countdown_hour_down = None
-countdown_hour_down_btn = None
-countdown_min_up = None
-countdown_min_up_btn = None
-countdown_min_down = None
-countdown_min_down_btn = None
-countdown_sec_up = None
-countdown_sec_up_btn = None
-countdown_sec_down = None
-countdown_sec_down_btn = None
-countdown_reset_img = None
-countdown_reset_imgbtn = None
-countdown_start_img = None
-countdown_start_imgbtn = None
-countdown_stop_img = None
-countdown_min = None
-class CountdownScreen(Screen):
-    NAME = "countdown"
-    
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.timer = osTimer()
-        self.sec = 0
-        self.min = 0
-        self.hour = 0
-        self.total = 0
-        self.flag = 1
-        self.g_state = 0
-        self.g_end = 0
-        self.total = 0
-        self.time_tmp = 0
-        self.timer_cb = 0
-
-    def initialization(self):
-        global countdown_screen ,countdown_title,countdown_hour ,countdown_mao ,countdown_mao ,countdown_mao1 ,\
-            countdown_sec ,countdown_hour_up ,countdown_hour_up_btn ,countdown_hour_down ,countdown_hour_down_btn ,\
-            countdown_min_up,countdown_min_up_btn ,countdown_min_down,countdown_min_down_btn,countdown_sec_up ,\
-            countdown_sec_up_btn,countdown_sec_down ,countdown_sec_down_btn ,countdown_reset_img ,countdown_reset_imgbtn ,\
-            countdown_start_img,countdown_start_imgbtn,countdown_stop_img ,countdown_min 
-        if countdown_screen == None :           
-            countdown_screen = lv.obj()
-            print("countdown_screen")
-            countdown_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            countdown_title = lv.label(countdown_screen)
-            countdown_title.set_pos(0, 20)
-            countdown_title.set_size(240, 20)
-            countdown_title.set_text("倒计时")
-            countdown_title.set_long_mode(lv.label.LONG.WRAP)
-            countdown_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            countdown_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            countdown_hour = lv.label(countdown_screen)
-            countdown_hour.set_pos(30, 140)
-            countdown_hour.set_size(60, 30)
-            countdown_hour.set_text("00")
-            countdown_hour.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
-            countdown_hour.set_long_mode(lv.label.LONG.WRAP)
-            countdown_hour.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-
-            countdown_mao = lv.label(countdown_screen)
-            countdown_mao.set_pos(82, 138)
-            countdown_mao.set_size(30, 30)
-            countdown_mao.set_text(":")
-            countdown_mao.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
-            countdown_mao.set_long_mode(lv.label.LONG.WRAP)
-            countdown_mao.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-
-
-            countdown_min = lv.label(countdown_screen)
-            countdown_min.set_pos(95, 140)
-            countdown_min.set_size(60, 30)
-            countdown_min.set_text("00")
-            countdown_min.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
-            countdown_min.set_long_mode(lv.label.LONG.WRAP)
-            countdown_min.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-
-            countdown_mao1 = lv.label(countdown_screen)
-            countdown_mao1.set_pos(146, 138)
-            countdown_mao1.set_size(30, 30)
-            countdown_mao1.set_text(":")
-            countdown_mao1.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
-            countdown_mao1.set_long_mode(lv.label.LONG.WRAP)
-            countdown_mao1.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-
-
-            countdown_sec = lv.label(countdown_screen)
-            countdown_sec.set_pos(160, 140)
-            countdown_sec.set_size(60, 30)
-            countdown_sec.set_text("00")
-            countdown_sec.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
-            countdown_sec.set_long_mode(lv.label.LONG.WRAP)
-            countdown_sec.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-
-            countdown_hour_up = lv.img(countdown_screen)
-            countdown_hour_up.set_size(34, 30)
-            countdown_hour_up.set_pos(36, 100)
-            countdown_hour_up.set_src("U:/static/time_up.png")
-            countdown_hour_up.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            countdown_hour_up_btn= lv.img(countdown_screen)
-            countdown_hour_up_btn.set_size(62, 70)
-            countdown_hour_up_btn.set_pos(20, 80)
-            countdown_hour_up_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-
-
-            countdown_hour_down = lv.img(countdown_screen)
-            countdown_hour_down.set_size(34, 30)
-            countdown_hour_down.set_pos(36, 180)
-            countdown_hour_down.set_src("U:/static/time_down.png")
-            countdown_hour_down.add_flag(lv.obj.FLAG.CLICKABLE)
-            countdown_hour_down.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            countdown_hour_down_btn= lv.img(countdown_screen)
-            countdown_hour_down_btn.set_size(62, 80)
-            countdown_hour_down_btn.set_pos(20, 150)
-            countdown_hour_down_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-
-
-            countdown_min_up = lv.img(countdown_screen)
-            countdown_min_up.set_size(34, 30)
-            countdown_min_up.set_pos(99, 100)
-            countdown_min_up.set_src("U:/static/time_up.png")
-            countdown_min_up.add_flag(lv.obj.FLAG.CLICKABLE)
-            countdown_min_up.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            countdown_min_up_btn= lv.img(countdown_screen)
-            countdown_min_up_btn.set_size(64, 70)
-            countdown_min_up_btn.set_pos(82, 80)
-            countdown_min_up_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-
-
-
-            countdown_min_down = lv.img(countdown_screen)
-            countdown_min_down.set_size(34, 30)
-            countdown_min_down.set_pos(99, 180)
-            countdown_min_down.set_src("U:/static/time_down.png")
-            countdown_min_down.add_flag(lv.obj.FLAG.CLICKABLE)
-            countdown_min_down.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            countdown_min_down_btn= lv.img(countdown_screen)
-            countdown_min_down_btn.set_size(64, 80)
-            countdown_min_down_btn.set_pos(82, 150)
-            countdown_min_down_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-
-
-            countdown_sec_up = lv.img(countdown_screen)
-            countdown_sec_up.set_size(34, 30)
-            countdown_sec_up.set_pos(165, 100)
-            countdown_sec_up.set_src("U:/static/time_up.png")
-            countdown_sec_up.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            countdown_sec_up_btn = lv.img(countdown_screen)
-            countdown_sec_up_btn.set_size(64, 70)
-            countdown_sec_up_btn.set_pos(146, 80)
-            countdown_sec_up_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-
-            countdown_sec_down = lv.img(countdown_screen)
-            countdown_sec_down.set_size(34, 30)
-            countdown_sec_down.set_pos(165, 180)
-            countdown_sec_down.set_src("U:/static/time_down.png")
-            countdown_sec_down.add_flag(lv.obj.FLAG.CLICKABLE)
-            countdown_sec_down.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            countdown_sec_down_btn = lv.img(countdown_screen)
-            countdown_sec_down_btn.set_size(64, 80)
-            countdown_sec_down_btn.set_pos(146, 150)
-            countdown_sec_down_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-
-            countdown_reset_img = lv.img(countdown_screen)
-            countdown_reset_img.set_size(99, 36)
-            countdown_reset_img.set_src("U:/static/stopwatch_reset.png")
-            countdown_reset_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            countdown_reset_img.set_pos(10, 260)
-
-            countdown_reset_imgbtn = lv.img(countdown_screen)
-            countdown_reset_imgbtn.set_size(99, 70)
-            countdown_reset_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
-            countdown_reset_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            countdown_reset_imgbtn.set_pos(10, 240)
-
-
-
-            countdown_start_img = lv.img(countdown_screen)
-            countdown_start_img.set_size(99, 36)
-            countdown_start_img.set_src("U:/static/stopwatch_play.png")
-            countdown_start_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            countdown_start_img.set_pos(120, 260)
-
-            countdown_start_imgbtn = lv.img(countdown_screen)
-            countdown_start_imgbtn.set_size(99, 70)
-            countdown_start_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
-            countdown_start_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            countdown_start_imgbtn.set_pos(120, 240)
-
-
-
-            countdown_stop_img = lv.img(countdown_screen)
-            countdown_stop_img.set_size(99, 36)
-            countdown_stop_img.set_src("U:/static/stopwatch_stop.png")
-            countdown_stop_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            countdown_stop_img.set_pos(120, 260)
-            countdown_stop_img.add_flag(lv.obj.FLAG.HIDDEN)
-            countdown_start_img.clear_flag(lv.obj.FLAG.HIDDEN)
-
-            countdown_stop_img.add_flag(lv.obj.FLAG.HIDDEN)
-            countdown_reset_img.clear_flag(lv.obj.FLAG.HIDDEN)
-
-            self.meta = countdown_screen
-
-            countdown_sec_up_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.sec_up(e)),
-                                        lv.EVENT.CLICKED, None)
-            countdown_sec_down_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.sec_down(e)),
-                                        lv.EVENT.CLICKED, None)
-            countdown_min_up_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.min_up(e)),
-                                        lv.EVENT.CLICKED, None)
-            countdown_min_down_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.min_down(e)),
-                                        lv.EVENT.CLICKED, None)
-            countdown_hour_up_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hour_up(e)),
-                                        lv.EVENT.CLICKED, None)
-            countdown_hour_down_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hour_down(e)),
-                                        lv.EVENT.CLICKED, None)
-            countdown_start_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
-                                        lv.EVENT.CLICKED, None)
-            countdown_reset_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reset(e)),
-                                        lv.EVENT.CLICKED, None)
-            # countdown_stop_imgbtn.add_event_cb(lambda e: self.stop(e),
-            #                              lv.EVENT.CLICKED, None)  
-        date_tmp = utime.localtime()
-        self.time_tmp = utime.mktime(date_tmp) 
-        if self.g_state == 0:
-            countdown_start_img.clear_flag(lv.obj.FLAG.HIDDEN)
-            countdown_stop_img.add_flag(lv.obj.FLAG.HIDDEN)
-            countdown_reset_img.clear_flag(lv.obj.FLAG.HIDDEN)
-            countdown_hour_up.clear_flag(lv.obj.FLAG.HIDDEN)
-            countdown_hour_down.clear_flag(lv.obj.FLAG.HIDDEN)
-            countdown_min_up.clear_flag(lv.obj.FLAG.HIDDEN)
-            countdown_min_down.clear_flag(lv.obj.FLAG.HIDDEN)
-            countdown_sec_up.clear_flag(lv.obj.FLAG.HIDDEN)
-            countdown_sec_down.clear_flag(lv.obj.FLAG.HIDDEN)
-            countdown_sec.clear_flag(lv.obj.FLAG.HIDDEN)
-            countdown_min.clear_flag(lv.obj.FLAG.HIDDEN)
-            countdown_hour.clear_flag(lv.obj.FLAG.HIDDEN)
-            countdown_title.clear_flag(lv.obj.FLAG.HIDDEN)
-            self.g_end = 0
-            self.total = 0
-            self.hour = 0
-            self.min = 0
-            self.sec = 0
-            self.show_value()
-        if self.g_state == 1:
-            if self.timer_cb == 1:
-                EventMesh.publish("set_countdown_off_state", [0,self.g_state])
-                self.timer.start(1000,1,self.fun)
-
-    def sec_up(self,e):
-        EventMesh.publish("add_countdown_sec")
-        self.sec = EventMesh.publish("get_countdown_sec")
-        print("sec_up:",self.sec)
-        self.show_value()
-
-    def sec_down(self,e):
-        EventMesh.publish("reduce_countdown_sec")
-        self.sec = EventMesh.publish("get_countdown_sec")
-        print("sec_down:",self.sec)
-        self.show_value()
-
-    def min_up(self,e):
-        EventMesh.publish("add_countdown_min")
-        self.min = EventMesh.publish("get_countdown_min")
-        print("min_up:",self.min)
-        self.show_value()
-
-    def min_down(self,e):
-        EventMesh.publish("reduce_countdown_min")
-        self.min = EventMesh.publish("get_countdown_min")
-        print("min_down:",self.min)
-        self.show_value()
-
-    def hour_up(self,e):
-        EventMesh.publish("add_countdown_hour")
-        self.hour = EventMesh.publish("get_countdown_hour")
-         
-        print("hour_up:",self.hour)
-        self.show_value()
-
-    def hour_down(self,e):
-        EventMesh.publish("reduce_countdown_hour")
-        self.hour = EventMesh.publish("get_countdown_hour")
-        print("hour_down:",self.hour)
-        self.show_value()
-    
-    def start(self,e):
-        global countdown_screen ,countdown_title,countdown_hour ,countdown_mao ,countdown_mao ,countdown_mao1 ,\
-            countdown_sec ,countdown_hour_up ,countdown_hour_up_btn ,countdown_hour_down ,countdown_hour_down_btn ,\
-            countdown_min_up,countdown_min_up_btn ,countdown_min_down,countdown_min_down_btn,countdown_sec_up ,\
-            countdown_sec_up_btn,countdown_sec_down ,countdown_sec_down_btn ,countdown_reset_img ,countdown_reset_imgbtn ,\
-            countdown_start_img,countdown_start_imgbtn,countdown_stop_img ,countdown_min 
-        self.total = self.hour*60*60 + self.min*60 + self.sec
-        print("--00:",self.total,self.hour,self.min,self.sec,self.g_state)
-        if self.g_state == 1:
-            self.g_state = 2
-            self.stop()
-        elif self.g_state == 2:
-            self.g_state = 1
-        if self.total > 0:
-            date_tmp = utime.localtime()
-            timeSecond = utime.mktime(date_tmp) 
-            print("start self.timeSecond:{}".format(timeSecond))
-            EventMesh.publish("set_countdown_all_time", [self.total,timeSecond])
-            if self.g_state != 2:
-                self.g_state = 1
-                self.g_end = 0
-                date_tmp = utime.localtime()
-                self.timeSecond = utime.mktime(date_tmp) 
-                self.show_value()
-                self.timer.start(1000,1,self.fun)
-                countdown_hour_up.add_flag(lv.obj.FLAG.HIDDEN)
-                countdown_hour_down.add_flag(lv.obj.FLAG.HIDDEN)
-                countdown_hour_up.add_flag(lv.obj.FLAG.HIDDEN)
-                countdown_hour_down.add_flag(lv.obj.FLAG.HIDDEN)
-                countdown_min_up.add_flag(lv.obj.FLAG.HIDDEN)
-                countdown_min_down.add_flag(lv.obj.FLAG.HIDDEN)
-                countdown_sec_up.add_flag(lv.obj.FLAG.HIDDEN)
-                countdown_sec_down.add_flag(lv.obj.FLAG.HIDDEN)
-                countdown_start_img.add_flag(lv.obj.FLAG.HIDDEN)
-                countdown_stop_img.clear_flag(lv.obj.FLAG.HIDDEN)
-                countdown_reset_img.clear_flag(lv.obj.FLAG.HIDDEN)
-        EventMesh.publish("set_countdown_off_state", [0,self.g_state])
-
-    def stop(self):
-        global countdown_screen ,countdown_title,countdown_hour ,countdown_mao ,countdown_mao ,countdown_mao1 ,\
-            countdown_sec ,countdown_hour_up ,countdown_hour_up_btn ,countdown_hour_down ,countdown_hour_down_btn ,\
-            countdown_min_up,countdown_min_up_btn ,countdown_min_down,countdown_min_down_btn,countdown_sec_up ,\
-            countdown_sec_up_btn,countdown_sec_down ,countdown_sec_down_btn ,countdown_reset_img ,countdown_reset_imgbtn ,\
-            countdown_start_img,countdown_start_imgbtn,countdown_stop_img ,countdown_min 
-        print("in stop")
-        countdown_hour_up.add_flag(lv.obj.FLAG.HIDDEN)
-        countdown_hour_down.add_flag(lv.obj.FLAG.HIDDEN)
-        countdown_hour_up.add_flag(lv.obj.FLAG.HIDDEN)
-        countdown_hour_down.add_flag(lv.obj.FLAG.HIDDEN)
-        countdown_min_up.add_flag(lv.obj.FLAG.HIDDEN)
-        countdown_min_down.add_flag(lv.obj.FLAG.HIDDEN)
-        countdown_sec_up.add_flag(lv.obj.FLAG.HIDDEN)
-        countdown_sec_down.add_flag(lv.obj.FLAG.HIDDEN)
-        countdown_start_img.clear_flag(lv.obj.FLAG.HIDDEN)
-        countdown_stop_img.add_flag(lv.obj.FLAG.HIDDEN)
-        countdown_reset_img.clear_flag(lv.obj.FLAG.HIDDEN)
-        
-        self.g_end = 0
-        self.timer.stop()
-        # self.show_value()
-        # EventMesh.publish("load_screen", {"screen": "countdown"})
-    
-    def fun(self,e):
-        date_tmp = utime.localtime()
-        self.time_tmp = utime.mktime(date_tmp) 
-        total_sec = self.time_tmp - self.timeSecond
-        # print("total_sec:{} self.time_tmp:{} self.timeSecond:{} self.total:{}".format(total_sec,self.time_tmp,self.timeSecond,self.total))
-        if self.total > 0:
-            self.total = self.total - total_sec
-        self.timeSecond = self.time_tmp
-        
-        
-        self.hour = self.total//3600
-        self.min = self.total%3600//60
-        self.sec =  self.total%60
-        
-
-        # print("self.total:{} self.time_tmp:{} self.timeSecond:{} test_hour:{} test_min:{} test_sec:{}".format(self.total,self.time_tmp,self.timeSecond,test_hour,test_min,test_sec))
-        self.show_value()  
-        # print("Close self.timeSecond:22")
-        EventMesh.publish("set_countdown_all_time", [self.total,self.timeSecond])
-        if self.total <= 0:
-            self.g_state = 0
-            self.g_end = 1
-            self.hour = 0
-            self.min = 0
-            self.sec = 0
-            EventMesh.publish("set_countdown_off_state", [0,self.g_state])
-            self.timer.stop()
-            self.show_value()
-            EventMesh.publish("load_screen", {"screen": "countdown_end"})
-        
-        # self.total = self.total - 1
-        
-        # self.sec = self.sec - 1 
-        # if self.sec < 0:
-        #     self.sec = 59
-        
-    def Close(self):
-        time = EventMesh.publish("get_countdown_all_time")
-        if time > 0 and self.g_state == 1:
-            self.timer_cb = 1
-            date_tmp = utime.localtime()
-            self.timeSecond = utime.mktime(date_tmp)
-            EventMesh.publish("set_countdown_off_state", [1,self.g_state])
-            # print("Close self.timeSecond:{}".format(self.timeSecond))
-            EventMesh.publish("set_countdown_all_time", [self.total,self.timeSecond]) 
-            self.timer.stop()
-        else:
-            msg_tmp = EventMesh.publish("get_countdown_off_state")
-            self.g_state = msg_tmp[1]
-            EventMesh.publish("set_countdown_off_state", [0,self.g_state]) 
-
-    def reset(self,e):
-        global countdown_screen ,countdown_title,countdown_hour ,countdown_mao ,countdown_mao ,countdown_mao1 ,\
-            countdown_sec ,countdown_hour_up ,countdown_hour_up_btn ,countdown_hour_down ,countdown_hour_down_btn ,\
-            countdown_min_up,countdown_min_up_btn ,countdown_min_down,countdown_min_down_btn,countdown_sec_up ,\
-            countdown_sec_up_btn,countdown_sec_down ,countdown_sec_down_btn ,countdown_reset_img ,countdown_reset_imgbtn ,\
-            countdown_start_img,countdown_start_imgbtn,countdown_stop_img ,countdown_min 
-        # print("in reset")
-        self.timer.stop()
-        self.hour = 0
-        self.min = 0
-        self.sec = 0
-        self.g_state = 0
-        self.g_end = 0
-        self.total = 0
-        EventMesh.publish("set_countdown_off_state", [0,self.g_state])
-        EventMesh.publish("reset_time_countdown")
-        countdown_start_img.clear_flag(lv.obj.FLAG.HIDDEN)
-        countdown_stop_img.add_flag(lv.obj.FLAG.HIDDEN)
-        countdown_reset_img.clear_flag(lv.obj.FLAG.HIDDEN)
-
-        countdown_hour_up.clear_flag(lv.obj.FLAG.HIDDEN)
-        countdown_hour_down.clear_flag(lv.obj.FLAG.HIDDEN)
-        countdown_min_up.clear_flag(lv.obj.FLAG.HIDDEN)
-        countdown_min_down.clear_flag(lv.obj.FLAG.HIDDEN)
-        countdown_sec_up.clear_flag(lv.obj.FLAG.HIDDEN)
-        countdown_sec_down.clear_flag(lv.obj.FLAG.HIDDEN)
-        self.show_value()
-        
-
-    def show_value(self):
-        global countdown_screen ,countdown_title,countdown_hour ,countdown_mao ,countdown_mao ,countdown_mao1 ,\
-            countdown_sec ,countdown_hour_up ,countdown_hour_up_btn ,countdown_hour_down ,countdown_hour_down_btn ,\
-            countdown_min_up,countdown_min_up_btn ,countdown_min_down,countdown_min_down_btn,countdown_sec_up ,\
-            countdown_sec_up_btn,countdown_sec_down ,countdown_sec_down_btn ,countdown_reset_img ,countdown_reset_imgbtn ,\
-            countdown_start_img,countdown_start_imgbtn,countdown_stop_img ,countdown_min 
-
-        countdown_sec.set_text(str("%02d"%(self.sec)))
-        countdown_min.set_text(str("%02d"%(self.min)))
-        countdown_hour.set_text(str("%02d"%(self.hour)))
-    
-    def lcd_on(self):
-        print("lcd_on self.timer_cb:{}".format(self.timer_cb))
-        time = EventMesh.publish("get_countdown_all_time")
-
-        if time > 0 and self.g_state != 0:
-            if self.g_state == 1:
-                if self.timer_cb != 0:
-                    self.timer_cb = 0
-                    EventMesh.publish("set_countdown_off_state", [0,self.g_state])
-                    date_tmp = utime.localtime()
-                    time_tmp = utime.mktime(date_tmp) 
-                    total_sec = time_tmp - self.timeSecond
-                    # print("total_sec:{} self.time_tmp:{} self.timeSecond:{} self.total:{}".format(total_sec,self.time_tmp,self.timeSecond,self.total))
-                    if self.total > 0:
-                        self.total = self.total - total_sec
-                    self.timeSecond = self.time_tmp
-                    self.hour = self.total//3600
-                    self.min = self.total%3600//60
-                    self.sec =  self.total%60
-                    self.show_value()
-                    self.timer.start(1000,1,self.fun)
-            else:
-                msg_tmp = EventMesh.publish("get_countdown_off_state")
-                self.g_state = msg_tmp[1]
-                EventMesh.publish("set_countdown_off_state", [0,self.g_state]) 
-
-        else:
-            self.reset(0)
-            msg_tmp = EventMesh.publish("get_countdown_off_state")
-            self.g_state = msg_tmp[1]
-            EventMesh.publish("set_countdown_off_state", [0,self.g_state])
-
-    def lcd_off(self):
-        time = EventMesh.publish("get_countdown_all_time")
-        if time > 0 and self.g_state == 1:
-            self.timer_cb = 1
-            date_tmp = utime.localtime()
-            self.timeSecond = utime.mktime(date_tmp) 
-            EventMesh.publish("set_countdown_off_state", [1,self.g_state])
-            EventMesh.publish("set_countdown_all_time", [self.total,self.timeSecond]) 
-            self.timer.stop() 
-        else:
-            EventMesh.publish("set_countdown_off_state", [0,self.g_state])
-
-    def done_return(self):
-        if self.g_state == 0:
-            self.timer.stop()
-        if self.g_end == 1:
-            EventMesh.publish("load_screen", {"screen": "countdown"})
-        else:
-            EventMesh.publish("load_screen", {"screen": "toolbox"})
-
-    def btn1_release(self):
-        if self.g_state == 0:
-            self.timer.stop()
-        EventMesh.publish("load_screen", {"screen": "toolbox"})
-        
-    def btn8_press(self):
-        if self.g_state == 0:
-            self.timer.stop()
-        EventMesh.publish("watch_top_show")
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-#结束倒计时显示图标
-countdown_end_screen = None
-countdown_end_img = None
-countdown_end_label = None
-class CountdownEndScreen(Screen):
-    NAME = "countdown_end"
-    
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.FIND_timer=osTimer()
-        self.aud = audio.Audio(0)
-        self.FIND_timer_count = 0
-
-    def initialization(self):
-        global countdown_end_screen ,countdown_end_img ,countdown_end_label 
-        if countdown_end_screen == None:
-            countdown_end_screen = lv.obj()
-            print("countdown_end_screen")
-            countdown_end_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-            countdown_end_img = lv.img(countdown_end_screen)
-            countdown_end_img.set_size(140, 140)
-            countdown_end_img.set_pos(50, 60)
-            countdown_end_img.set_src("U:/static/time_finish.png")
-            countdown_end_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            countdown_end_label = lv.label(countdown_end_screen)
-            countdown_end_label.set_pos(0, 240)
-            countdown_end_label.set_size(240, 40)
-            countdown_end_label.set_text("时间到")
-            countdown_end_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            countdown_end_label.set_long_mode(lv.label.LONG.WRAP)
-            countdown_end_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            self.meta = countdown_end_screen
-        self.FIND_timer_count = 0
-        self.FIND_timer.start(3000, 1, self.FIND_timer_cb)
-        self.aud.play(1, 1, 'U:/static/audio_audio_haixiu.mp3')  #播放声音
-
-    def FIND_timer_cb(self, *args):
-        EventMesh.publish("system_sleep_rest")#防止黑屏
-        self.FIND_timer_count += 1
-        if self.FIND_timer_count >= 4: #120秒
-            self.stop_FIND()
-            EventMesh.publish("load_screen", {"screen": "countdown"})
-            return
-        self.aud.play(1, 1, 'U:/static/audio_audio_haixiu.mp3') 
-    
-    def stop_FIND(self) :
-        self.FIND_timer.stop()
-        self.aud.stopAll()
-
-    def Close(self):
-       self.stop_FIND()
-
-    def done_left_to_right(self):
-        self.stop_FIND()
-        EventMesh.publish("load_screen", {"screen": "countdown"})
-
-    def done_right_to_left(self):
-        self.stop_FIND()
-        EventMesh.publish("load_screen", {"screen": "countdown"})
-
-    def done_bottom_to_top(self):
-        self.stop_FIND()
-        EventMesh.publish("load_screen", {"screen": "countdown"})
-
-    def done_top_to_bottom(self):
-        self.stop_FIND()
-        EventMesh.publish("load_screen", {"screen": "countdown"})
-
-    def done_return(self):
-        self.stop_FIND()
-        EventMesh.publish("load_screen", {"screen": "countdown"})
-
-    def done_click(self):
-        self.stop_FIND()
-        EventMesh.publish("load_screen", {"screen": "countdown"})
-
-    def btn1_release(self):
-        self.stop_FIND()
-        EventMesh.publish("load_screen", {"screen": "countdown"})
-
-    def btn8_press(self):
-        self.stop_FIND()
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-# -------------------------------------------stopwatch screen----------------------------------------------------------
-
-
-stopwatch_screen = None
-stopwatch_title = None
-stopwatch_label_min = None
-stopwatch_mao = None
-stopwatch_label_sec = None
-stopwatch_mao1 = None
-stopwatch_label_ms = None
-stopwatch_reset_img = None
-stopwatch_reset_imgbtn = None
-stopwatch_start_img = None
-stopwatch_start_imgbtn = None
-stopwatch_stop_img = None
-class StopwatchScreen(Screen):
-    NAME = "stopwatch"
-
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.ms_value = 0
-        self.sec_value = 0
-        self.min_value = 0
-        self.s_state = 0
-        self.total_time = 0
-        self.TimeSecond = 0
-        self.timer = osTimer()
-        
-    def initialization(self): 
-        global stopwatch_screen,stopwatch_title,stopwatch_label_min,stopwatch_mao,stopwatch_label_sec ,\
-            stopwatch_mao1 ,stopwatch_label_ms,stopwatch_reset_img ,topwatch_reset_imgbtn ,stopwatch_start_img ,\
-            stopwatch_start_imgbtn, stopwatch_stop_img  
-        if  stopwatch_screen == None :
-            stopwatch_screen = lv.obj()
-            print("stopwatch_screen")
-            stopwatch_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            stopwatch_title = lv.label(stopwatch_screen)
-            stopwatch_title.set_pos(0, 20)
-            stopwatch_title.set_size(240, 20)
-            stopwatch_title.set_text("秒表")
-            stopwatch_title.set_long_mode(lv.label.LONG.WRAP)
-            stopwatch_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            stopwatch_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            stopwatch_label_min = lv.label(stopwatch_screen)
-            stopwatch_label_min.set_pos(30, 140)
-            stopwatch_label_min.set_size(60, 30)
-            stopwatch_label_min.set_text("00")
-            stopwatch_label_min.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
-            stopwatch_label_min.set_long_mode(lv.label.LONG.WRAP)
-            stopwatch_label_min.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-
-            stopwatch_mao = lv.label(stopwatch_screen)
-            stopwatch_mao.set_pos(82, 138)
-            stopwatch_mao.set_size(30, 30)
-            stopwatch_mao.set_text(":")
-            stopwatch_mao.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
-            stopwatch_mao.set_long_mode(lv.label.LONG.WRAP)
-            stopwatch_mao.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-
-
-            stopwatch_label_sec = lv.label(stopwatch_screen)
-            stopwatch_label_sec.set_pos(95, 140)
-            stopwatch_label_sec.set_size(60, 30)
-            stopwatch_label_sec.set_text("00")
-            stopwatch_label_sec.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
-            stopwatch_label_sec.set_long_mode(lv.label.LONG.WRAP)
-            stopwatch_label_sec.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-
-            stopwatch_mao1 = lv.label(stopwatch_screen)
-            stopwatch_mao1.set_pos(146, 138)
-            stopwatch_mao1.set_size(30, 30)
-            stopwatch_mao1.set_text(".")
-            stopwatch_mao1.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
-            stopwatch_mao1.set_long_mode(lv.label.LONG.WRAP)
-            stopwatch_mao1.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-
-
-            stopwatch_label_ms = lv.label(stopwatch_screen)
-            stopwatch_label_ms.set_pos(160, 140)
-            stopwatch_label_ms.set_size(60, 30)
-            stopwatch_label_ms.set_text("0")
-            stopwatch_label_ms.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
-            stopwatch_label_ms.set_long_mode(lv.label.LONG.WRAP)
-            stopwatch_label_ms.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-
-
-
-
-            stopwatch_reset_img = lv.img(stopwatch_screen)
-            stopwatch_reset_img.set_size(99, 36)
-            stopwatch_reset_img.set_src("U:/static/stopwatch_reset.png")
-            stopwatch_reset_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            stopwatch_reset_img.set_pos(10, 210)
-
-            stopwatch_reset_imgbtn = lv.img(stopwatch_screen)
-            stopwatch_reset_imgbtn.set_size(99, 76)
-            stopwatch_reset_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
-            stopwatch_reset_imgbtn.set_pos(10, 190)
-
-
-            stopwatch_start_img = lv.img(stopwatch_screen)
-            stopwatch_start_img.set_size(99, 36)
-            stopwatch_start_img.set_src("U:/static/stopwatch_play.png")
-            stopwatch_start_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            stopwatch_start_img.set_pos(115, 210)
-
-
-            stopwatch_start_imgbtn = lv.img(stopwatch_screen)
-            stopwatch_start_imgbtn.set_size(99, 76)
-            stopwatch_start_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
-            stopwatch_start_imgbtn.set_pos(115, 190)
-
-
-            stopwatch_stop_img = lv.img(stopwatch_screen)
-            stopwatch_stop_img.set_size(99, 36)
-            stopwatch_stop_img.set_src("U:/static/stopwatch_stop.png")
-            stopwatch_stop_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            stopwatch_stop_img.set_pos(115, 210)
-            stopwatch_stop_img.add_flag(lv.obj.FLAG.HIDDEN)
-            stopwatch_start_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
-                                     lv.EVENT.CLICKED, None)
-        
-            stopwatch_reset_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reset(e)),
-                                     lv.EVENT.CLICKED, None)
-            self.meta = stopwatch_screen
-
-        if self.s_state == 0:
-            self.reset(0)
-        if self.s_state == 1:
-            date_tmp = utime.localtime()
-            timeSecond = utime.mktime(date_tmp)
-            reduce = timeSecond - self.TimeSecond
-            self.total_time = self.total_time+reduce
-            if self.total_time >= 99*60:
-                self.total_time = 99*60
-                self.ms_value = 0
-                stopwatch_start_img.clear_flag(lv.obj.FLAG.HIDDEN)
-                stopwatch_stop_img.add_flag(lv.obj.FLAG.HIDDEN)
-                self.show_value()
-            else:
-                self.timer.start(100,1,self._fun)
-            
-
-    def start(self, e):      
-        global stopwatch_screen,stopwatch_title,stopwatch_label_min,stopwatch_mao,stopwatch_label_sec ,\
-            stopwatch_mao1 ,stopwatch_label_ms,stopwatch_reset_img ,topwatch_reset_imgbtn ,stopwatch_start_img ,\
-            stopwatch_start_imgbtn, stopwatch_stop_img 
-        print("stopwatch start:{}".format(self.s_state))
-        #self.timer.start(100, 1, self._fun)  
-        
-        if self.s_state == 1:
-            self.s_state = 2
-            self.paused()
-        elif self.s_state == 2:
-            self.s_state = 1
-        if self.s_state != 2:
-            self.s_state = 1
-            if self.total_time >= 99*60:
-                self.ms_value = 0   
-                self.sec_value = 0
-                self.min_value = 0
-                self.total_time = 0
-            self.show_value()
-            self.timer.start(100,1,self._fun)
-            stopwatch_stop_img.clear_flag(lv.obj.FLAG.HIDDEN)
-            stopwatch_start_img.add_flag(lv.obj.FLAG.HIDDEN)
-            # print("ms_value start:{} {} {}".format(self.ms_value,self.sec_value,self.min_value))
-           
-        
-
-    def paused(self):        
-        global stopwatch_screen,stopwatch_title,stopwatch_label_min,stopwatch_mao,stopwatch_label_sec ,\
-            stopwatch_mao1 ,stopwatch_label_ms,stopwatch_reset_img ,topwatch_reset_imgbtn ,stopwatch_start_img ,\
-            stopwatch_start_imgbtn, stopwatch_stop_img 
-        print("stopwatch pause")
-        stopwatch_start_img.clear_flag(lv.obj.FLAG.HIDDEN)
-        stopwatch_stop_img.add_flag(lv.obj.FLAG.HIDDEN)
-        self.timer.stop()
-        self.show_value()
-
-    def reset(self,e):
-        global stopwatch_screen,stopwatch_title,stopwatch_label_min,stopwatch_mao,stopwatch_label_sec ,\
-            stopwatch_mao1 ,stopwatch_label_ms,stopwatch_reset_img ,topwatch_reset_imgbtn ,stopwatch_start_img ,\
-            stopwatch_start_imgbtn, stopwatch_stop_img 
-        print("stopwatch reset")        
-
-        self.sec_value = 0
-        self.min_value = 0
-        self.ms_value = 0
-        self.s_state = 0
-        self.total_time = 0
-        stopwatch_start_img.clear_flag(lv.obj.FLAG.HIDDEN)
-        stopwatch_stop_img.add_flag(lv.obj.FLAG.HIDDEN)
-        self.timer.stop()
-        self.show_value()
-
-    def _fun(self,e):
-        self.ms_value += 1
-        if self.ms_value > 9:
-            self.ms_value = 0   
-            self.sec_value += 1
-            self.total_time+=1
-        if self.sec_value > 59:
-            self.sec_value = 0
-        if self.total_time > 99*60:
-            self.total_time = 99*60
-            self.timer.stop()
-            stopwatch_start_img.clear_flag(lv.obj.FLAG.HIDDEN)
-            stopwatch_stop_img.add_flag(lv.obj.FLAG.HIDDEN)
-        
-        self.show_value()
-
-    def show_value(self):
-        global stopwatch_screen,stopwatch_title,stopwatch_label_min,stopwatch_mao,stopwatch_label_sec ,\
-            stopwatch_mao1 ,stopwatch_label_ms,stopwatch_reset_img ,topwatch_reset_imgbtn ,stopwatch_start_img ,\
-            stopwatch_start_imgbtn, stopwatch_stop_img 
-        if self.total_time >= 99*60:
-            self.total_time = 99*60
-        test_s = self.total_time % 60
-        test_m = self.total_time//60
-        # print("test_s:{} test_m:{} self.total_time:{}".format(test_s,test_m,self.total_time))
-
-        stopwatch_label_ms.set_text(str("%d"%(self.ms_value)))
-        stopwatch_label_sec.set_text(str("%02d"%(test_s)))
-        stopwatch_label_min.set_text(str("%02d"%(test_m)))
-
-    def Close(self):
-        if self.s_state == 1:
-            self.timer.stop()
-            date_tmp = utime.localtime()
-            self.TimeSecond = utime.mktime(date_tmp)
-
-    def lcd_on(self):
-        if self.s_state == 1:
-            date_tmp = utime.localtime()
-            timeSecond = utime.mktime(date_tmp)
-            reduce = timeSecond - self.TimeSecond
-            self.total_time = self.total_time+reduce
-            total = self.total_time // 60 
-            if total >= 99:
-                self.total_time = 99*60
-                self.timer.stop()
-                self.s_state = 0
-                self.ms_value = 0
-                stopwatch_start_img.clear_flag(lv.obj.FLAG.HIDDEN)
-                stopwatch_stop_img.add_flag(lv.obj.FLAG.HIDDEN)
-                self.show_value()
-            else:    
-                
-                print("stopwatch reset start:{}".format(self.s_state))
-                #self.timer.start(100, 1, self._fun)  
-                self.show_value()
-                self.timer.start(100,1,self._fun)
-                stopwatch_stop_img.clear_flag(lv.obj.FLAG.HIDDEN)
-                stopwatch_start_img.add_flag(lv.obj.FLAG.HIDDEN)
-                # print("ms_value start:{} {} {}".format(self.ms_value,self.sec_value,self.min_value))
-           
-        pass
-
-    def lcd_off(self):
-        if self.s_state == 1:
-            date_tmp = utime.localtime()
-            timeSecond = utime.mktime(date_tmp) 
-            self.TimeSecond = timeSecond
-            self.timer.stop()
-        pass
-
-    def done_return(self):
-        if self.s_state == 0:
-            self.timer.stop()
-        EventMesh.publish("load_screen", {"screen": "toolbox"})
-
-    def btn1_release(self):
-        if self.s_state == 0:
-            self.timer.stop()
-        EventMesh.publish("load_screen", {"screen": "toolbox"})
-        
-    def btn8_press(self):
-        if self.s_state == 0:
-            self.timer.stop()
-        EventMesh.publish("watch_top_show")
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-       
-FIND_screen = None
-watchface_mpsignal_img = None
-class UIFINDScreen(Screen):
-    NAME = "FIND"
-    def __init__(self):
-        super().__init__()
-        self.read_data = {}
-        self.volum_size = 8
-        check_volum = ql_fs.path_exists("/usr/static/storage_file/config.json")
-        if check_volum == True :
-            with open("/usr/static/storage_file/config.json","r") as fd:#音频文件编号
-                self.read_data = ujson.load(fd)
-                if self.read_data != {}:
-                    b = str("volum") in self.read_data.keys()
-                    if b == True:
-                        self.volum_size = self.read_data["volum"]  
-                    else:
-                        self.volum_size = 8
-                else:
-                    self.volum_size = 8
-        else:
-            self.volum_size = 8
-        self.aud = audio.Audio(0)
-        self.aud.set_pa(Pin.GPIO29)
-        self.aud.setVolume(self.volum_size)
-        self.FIND_timer = osTimer()
-        self.FIND_timer_count = 0
-
-        self.meta = None
-    
-    def initialization(self):
-        self.meta = FIND_screen
-
-    def post_processor_after_initialization(self):
-        self.FIND_timer_count = 0
-        print("self.FIND_timer_count:{}".format(self.FIND_timer_count))
-        self.FIND_timer.start(3000, 1, self.FIND_timer_cb)
-        self.aud.play(1, 1, 'U:/static/audio_audio_haixiu.mp3')  #播放声音
-
-    def FIND_timer_cb(self, *args):
-        self.aud.play(1, 1, 'U:/static/audio_audio_haixiu.mp3') 
-        self.FIND_timer_count += 1
-        if self.FIND_timer_count > 20: #120秒
-            self.stop_FIND()
-    
-    def stop_FIND(self) :
-        self.FIND_timer.stop()
-        self.aud.stop()  #播放声音
-        
-
-    def Close(self):
-        print("self.FIND_timer_Close")
-        self.FIND_timer.stop()
-        self.aud.stop() #播放声音
-
-    def done_left_to_right(self):
-        self.stop_FIND()
-
-    def done_right_to_left(self):
-        self.stop_FIND()
-    def done_bottom_to_top(self):
-        self.stop_FIND()
-
-    def done_top_to_bottom(self):
-        self.stop_FIND()
-
-    def done_return(self):
-        self.stop_FIND()
-
-    def done_click(self):
-       self.stop_FIND()
-
-
-    def btn1_release(self):
-        self.stop_FIND()
-
-
-    def btn8_press(self):
-        self.stop_FIND()
- 
-Lowpower_screen = None
-Lowpower_screen_img = None
-class LowPowerScreen(Screen):
-    NAME = "LOW_POWER"
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-
-    def initialization(self):
-        global Lowpower_screen ,Lowpower_screen_img  
-        if Lowpower_screen == None :
-            Lowpower_screen = lv.obj()
-            print("Lowpower_screen")
-            Lowpower_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            # add style for watchface
-            Lowpower_screen.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT)
-            #进入图片
-            Lowpower_screen_img = lv.img(Lowpower_screen)
-            Lowpower_screen_img.set_pos(int(40),int(45))
-            Lowpower_screen_img.set_size(160,230)
-            Lowpower_screen_img.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            Lowpower_screen_img.add_flag(lv.obj.FLAG.CLICKABLE)
-            Lowpower_screen_img.set_src("U:/static/low_power.png")
-            Lowpower_screen_img.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT)
-            self.meta = Lowpower_screen
-
-    def done_left_to_right(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-    def done_right_to_left(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-    def done_bottom_to_top(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-    def done_top_to_bottom(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-    def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-    def done_click(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn8_press(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-sos_screen = None
-sos_screen_label = None
-sos_screen_label_p = None
-
-#sos求组提示界面
-class sosScreen(Screen):
-    NAME = "SOS_POPUP"
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.timer = osTimer()
-        self.meta_type = "popup"
-        self.count = 0
-
-    def initialization(self):
-        global sos_screen ,sos_screen_label  
-        if sos_screen == None :
-            sos_screen = lv.obj()
-            print("SOS_POPUP")
-            sos_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            # add style for watchface
-            sos_screen.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT)
-            #进入图片
-
-            sos_screen_label = lv.label(sos_screen)
-            sos_screen_label.set_pos(0, 20)
-            sos_screen_label.set_size(240, 30)
-            sos_screen_label.set_text("SOS")
-            sos_screen_label.add_style(style_font_youyuan_20_red, lv.PART.MAIN | lv.STATE.DEFAULT)
-            sos_screen_label.set_long_mode(lv.label.LONG.WRAP)
-            sos_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-
-
-            sos_screen_label = lv.label(sos_screen)
-            sos_screen_label.set_text("是否拨打紧急\n求助电话?")
-            sos_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            sos_screen_label.set_size(240, 50)
-            sos_screen_label.set_pos(0,65)
-            sos_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            sos_screen_label = lv.label(sos_screen)
-            sos_screen_label.set_text("无操作10s后\n自动拨打")
-            sos_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            sos_screen_label.set_size(240, 50)
-            sos_screen_label.set_pos(0,140)
-            sos_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-
-            sos_screen_confirm_img = lv.img(sos_screen)
-            sos_screen_confirm_img.set_size(176, 46)
-            sos_screen_confirm_img.set_pos(32, 210)
-            sos_screen_confirm_img.set_src("U:/static/off_icon.png")
-            sos_screen_confirm_img.add_flag(lv.obj.FLAG.CLICKABLE)
-            sos_screen_confirm_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            sos_screen_confirm_label = lv.label(sos_screen_confirm_img)
-            sos_screen_confirm_label.set_text("确定")
-            sos_screen_confirm_label.align(lv.ALIGN.CENTER, 0, 5)
-            sos_screen_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            sos_screen_return = lv.img(sos_screen)
-            sos_screen_return.set_size(176, 46)
-            sos_screen_return.set_pos(32, 270)
-            sos_screen_return.set_src("U:/static/cancel_icon.png")
-            sos_screen_return.add_flag(lv.obj.FLAG.CLICKABLE)
-            sos_screen_return.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-            sos_screen_return_label = lv.label(sos_screen_return)
-            sos_screen_return_label.set_text("取消")
-            sos_screen_return_label.align(lv.ALIGN.CENTER, 0, 5)
-            sos_screen_return_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            sos_screen_return_label.set_ext_click_area(20)
-
-            self.meta = sos_screen
-            sos_screen_confirm_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.timer_comfirm_cb(e)),
-                                     lv.EVENT.CLICKED, None)
-            
-            sos_screen_return.add_event_cb(lambda e: EventMesh.callback_wrapper(self.timer_cancel_cb(e)),
-                                     lv.EVENT.CLICKED, None)
-
-    def timer_comfirm_cb(self,e):
-        EventMesh.publish("set_sos_flag", 1)
-    
-    def timer_cancel_cb(self,e):
-        EventMesh.publish("return_prev_screen")
-
-    def post_processor_before_initialization(self):
-        self.count = 0
-        self.timer.start(5000,1,self.timer_cb_onescond)
-    
-    def timer_cb_onescond(self,e):
-        EventMesh.publish("system_sleep_rest")#防止黑屏
-        self.count+=1
-        if self.count >= 2:
-            self.count = 0
-            EventMesh.publish("set_sos_flag", 1)
-
-    def Close(self):
-        self.timer.stop()
-
-    def done_left_to_right(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-    def done_right_to_left(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-    def done_bottom_to_top(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-    def done_top_to_bottom(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-    def done_return(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-    def done_click(self):
-        #EventMesh.publish("return_prev_screen")
-        pass
-
-    def btn8_press(self):
-        
-        pass
-    def btn1_press(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-    def btn1_release(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-
-
-no_sos_screen = None
-no_sos_screen_label = None
-
-#没有设置紧急联系人的号码
-class noSosDataScreen(Screen):
-    NAME = "NO_SOS_POPUP"
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.meta_type = "popup"
-        self.count = 0
-        self.timer = osTimer()
-
-    def initialization(self):
-        global no_sos_screen ,no_sos_screen_label  
-        if no_sos_screen == None :
-            no_sos_screen = lv.obj()
-            print("NO_SOS_POPUP")
-            no_sos_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-            # add style for watchface
-            no_sos_screen.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT)
-            #进入图片
-
-            no_sos_screen_label = lv.label(no_sos_screen)
-            no_sos_screen_label.set_pos(0, 110)
-            no_sos_screen_label.set_size(240, 80)
-            no_sos_screen_label.set_text("请在手机app上设置\n紧急联系人号码")
-            no_sos_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            no_sos_screen_label.set_long_mode(lv.label.LONG.WRAP)
-            no_sos_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-
-
-            self.meta = no_sos_screen
-    def post_processor_before_initialization(self):
-        self.count = 0
-        self.timer.start(1000,1,self.timer_cb_onescond)
-    
-    def Close(self):
-        self.timer.stop()
-
-    def timer_cb_onescond(self,e):
-        EventMesh.publish("system_sleep_rest")#防止黑屏
-        self.count+=1
-        if self.count >= 10:
-            self.count = 0
-            EventMesh.publish("return_prev_screen")
-
-
-    def done_left_to_right(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-    def done_right_to_left(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-    def done_bottom_to_top(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-    def done_top_to_bottom(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-    def done_return(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-    def done_click(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-
-    def btn8_press(self):
-        
-        pass
-    def btn1_press(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-    def btn1_release(self):
-        EventMesh.publish("return_prev_screen")
-        pass
-
-
-
-
-system_init_screen = None
-system_init_label = None
-class SystemInitScreen(Screen):
-    #系统初始化中...
-    NAME = "system_init"
-    
-    def __init__(self):
-        super().__init__()
-        self.meta = None
-        self.system_init_timer=osTimer()
-        self.system_init_timer_count = 0
-
-    def initialization(self):
-        global system_init_screen ,system_init_label  
-        if system_init_screen == None:
-            system_init_screen = lv.obj()
-            print("Lowpower_screen")
-            system_init_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-       
-            system_init_label = lv.label(system_init_screen)
-            system_init_label.set_pos(0, 150)
-            system_init_label.set_size(240, 40)
-            system_init_label.set_text("系统初始化中")
-            system_init_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            system_init_label.set_long_mode(lv.label.LONG.WRAP)
-            system_init_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            self.meta = system_init_screen
-        self.system_init_timer_count = 0
-        self.system_init_timer.start(1000, 1, self.system_init_timer_cb)
-
-    def system_init_timer_cb(self, *args):
-        EventMesh.publish("system_sleep_rest")#防止黑屏
-        self.system_init_timer_count += 1
-        if self.system_init_timer_count > 4:
-            self.system_init_timer_count = 1
-        if system_init_screen != None:
-
-            system_init_label_str = "系统初始化中"
-            if self.system_init_timer_count == 1:
-                system_init_label.set_text("系统初始化中.")
-            elif self.system_init_timer_count == 2:
-                system_init_label.set_text("系统初始化中..")
-            elif self.system_init_timer_count == 3:
-                system_init_label.set_text("系统初始化中...")
-            else:
-                system_init_label.set_text("系统初始化中....")
-
-    def Close(self):
-       self.system_init_timer.stop()
 
-    
 
 #from usr.ui_WatchFaceScreen import WatchFaceScreen
 class UI(object):
@@ -5943,7 +50,7 @@ class UI(object):
         self.screen_old = None
         self.screen_prev = None
         self.screen_list = []
-        self.lv = lv
+        #self.lv = lv
         self.system_sleep_timer = osTimer()
         self.system_sleep_timer_count = 0
         self.sleep_flag = 1
@@ -5983,27 +90,27 @@ class UI(object):
         self.sleep_lock = 0
 
     def post_processor_after_instantiation(self):
-        EventMesh.subscribe("load_screen", self.load_screen_cb)
+        # EventMesh.subscribe("load_screen", self.load_screen_cb)
 
-        EventMesh.subscribe("btn1_press", self.btn_press)
-        EventMesh.subscribe("btn8_press", self.btn_press)
-        EventMesh.subscribe("btn8_long_press", self.btn_press)
+        # EventMesh.subscribe("btn1_press", self.btn_press)
+        # EventMesh.subscribe("btn8_press", self.btn_press)
+        # EventMesh.subscribe("btn8_long_press", self.btn_press)
 
-        EventMesh.subscribe("btn1_release", self.btn_release)
-        EventMesh.subscribe("btn8_release", self.btn_release)
+        # EventMesh.subscribe("btn1_release", self.btn_release)
+        # EventMesh.subscribe("btn8_release", self.btn_release)
 
-        EventMesh.subscribe("done_left_to_right", self.ui_press)
-        EventMesh.subscribe("done_right_to_left", self.ui_press)
-        EventMesh.subscribe("done_bottom_to_top", self.ui_press)
-        EventMesh.subscribe("done_top_to_bottom", self.ui_press)
-        EventMesh.subscribe("done_return", self.ui_press)
-        EventMesh.subscribe("done_click", self.ui_press)
-        EventMesh.subscribe("done_error", self.ui_press)
-        EventMesh.subscribe("done_press", self.ui_press)
-        EventMesh.subscribe("call_in", self.publish_call_in)
+        # EventMesh.subscribe("done_left_to_right", self.ui_press)
+        # EventMesh.subscribe("done_right_to_left", self.ui_press)
+        # EventMesh.subscribe("done_bottom_to_top", self.ui_press)
+        # EventMesh.subscribe("done_top_to_bottom", self.ui_press)
+        # EventMesh.subscribe("done_return", self.ui_press)
+        # EventMesh.subscribe("done_click", self.ui_press)
+        # EventMesh.subscribe("done_error", self.ui_press)
+        # EventMesh.subscribe("done_press", self.ui_press)
+        # EventMesh.subscribe("call_in", self.publish_call_in)
 
-        EventMesh.subscribe("get_lcd_state", self.get_lcd_state)
-        EventMesh.subscribe("set_lcd_state", self.set_lcd_state)
+        # EventMesh.subscribe("get_lcd_state", self.get_lcd_state)
+        # EventMesh.subscribe("set_lcd_state", self.set_lcd_state)
         
         #EventMesh.subscribe("call_in", self.publish_call_in)
         #EventMesh.subscribe("set_bg_img", self.set_bg_img)
@@ -6011,14 +118,14 @@ class UI(object):
         EventMesh.subscribe(constants.EVENT.SYSTEM_SLEEP, self.system_sleep)
         EventMesh.subscribe(constants.EVENT.SYSTEM_UP, self.system_up)
         EventMesh.subscribe("system_sleep_rest", self.system_sleep_rest)
-        EventMesh.subscribe("set_UI_high_priority", self.set_UI_high_priority)
-        EventMesh.subscribe("get_UI_high_priority", self.get_UI_high_priority)
+        # EventMesh.subscribe("set_UI_high_priority", self.set_UI_high_priority)
+        # EventMesh.subscribe("get_UI_high_priority", self.get_UI_high_priority)
 
-        EventMesh.subscribe("set_interrup_incall", self.set_interrup_incall)
-        EventMesh.subscribe("get_interrup_incall", self.get_interrup_incall)
-        EventMesh.subscribe("get_screen_NAME",self.get_screen_NAME)
+        # EventMesh.subscribe("set_interrup_incall", self.set_interrup_incall)
+        # EventMesh.subscribe("get_interrup_incall", self.get_interrup_incall)
+        # EventMesh.subscribe("get_screen_NAME",self.get_screen_NAME)
         EventMesh.subscribe("publish_message_event_ui",self.publish_message_event_ui)
-        EventMesh.subscribe("return_prev_screen",self.return_prev_screen)
+        # EventMesh.subscribe("return_prev_screen",self.return_prev_screen)
 
         self.system_sleep_timer.start(1000, 1, self.system_sleep_timer_cb)
 
@@ -6066,88 +173,7 @@ class UI(object):
         #print("system_sleep_rest!!!!!")
         self.system_sleep_timeout_rest()
 
-    def ui_press(self, event, key):
-        screen_NAME = EventMesh.publish("get_screen_NAME")
-        if screen_NAME == "system_init":
-            return
-        self.system_sleep_timeout_rest()
-        #print("ui press {}".format(event))
-        if event == "done_left_to_right":
-            self.screen.done_left_to_right()
-        if event == "done_right_to_left":
-            self.screen.done_right_to_left()
-        if event == "done_bottom_to_top":
-            self.screen.done_bottom_to_top()
-        if event == "done_top_to_bottom":
-            self.screen.done_top_to_bottom()
-        if event == "done_return":
-            self.screen.done_return()
-        if event == "done_click":
-            self.screen.done_click()
-        # if event == "done_press":
-        #     self.system_sleep_timeout_rest()
-    def btn_press(self, event, key):
-        screen_NAME = EventMesh.publish("get_screen_NAME")
-        if screen_NAME == "system_init":
-            return
-        print("btn_press: {}".format(event))
-        #主表盘按电源键,息屏
-        
-        #息屏状态按按钮都亮屏
-        
-        
-        if self.main_flag != 1 and self.sleep_flag == 0:
-            if event == "btn8_long_press":
-                if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡时触发sos报警 无卡时自动关机
-                    sos_number = EventMesh.publish("get_dial_sos_number")
-                    if sos_number != None:
-                        if len(sos_number) != 0:
-                            screen_NAME = EventMesh.publish("get_screen_NAME")
-                            if screen_NAME != None:
-                                if screen_NAME != "SOS_POPUP":
-                                    EventMesh.publish("load_screen", {"screen": "SOS_POPUP"})
-                        else:
-                            EventMesh.publish("load_screen", {"screen": "NO_SOS_POPUP"})
-                else:
-                    EventMesh.publish("load_screen", {"screen": "no_sim_power_screen"})
-            else:
-                self.__lcd_on()
-            return
-        # if event == "btn1_press":
-        #     self.screen.btn1_press()
-        # self.__lcd_on()
-        if event == "btn8_press":
-            self.screen.btn8_press()
-        if event == "btn8_long_press":
-            if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡时触发sos报警 无卡时自动关机
-                sos_number = EventMesh.publish("get_dial_sos_number")
-                if sos_number != None:
-                    if len(sos_number) != 0:
-                        screen_NAME = EventMesh.publish("get_screen_NAME")
-                        if screen_NAME != None:
-                            if screen_NAME != "SOS_POPUP":
-                                EventMesh.publish("load_screen", {"screen": "SOS_POPUP"})
-                    else:
-                        EventMesh.publish("load_screen", {"screen": "NO_SOS_POPUP"})
-            else:
-                EventMesh.publish("load_screen", {"screen": "no_sim_power_screen"})
-
-        if event == "btn1_press":        
-            pass   
-            
-        
-
-    def btn_release(self, event, msg):
-        screen_NAME = EventMesh.publish("get_screen_NAME")
-        if screen_NAME == "system_init":
-            return
-        print("btn_release: {}".format(event))
-        # if self.main_flag != 1 and self.sleep_flag == 0:
-        #     self.__lcd_on()
-        #     return 
-        # if event == "btn1_release":
-            
-        #     self.screen.btn1_release()
+    
 
     def __lcd_on(self):
         self.system_sleep_timeout_rest()
@@ -6167,7 +193,7 @@ class UI(object):
             EventMesh.publish("set_lcd_state",self.sleep_flag)
            
             utime.sleep_ms(2)
-            lv.autoSleep(0)
+            #lv.autoSleep(0)
             pm.autosleep(0)
             pm.sclkEx_set(0, 1, 5)
             utime.sleep_ms(60)
@@ -6176,9 +202,6 @@ class UI(object):
             self.sleep_lock = 0
             
 
-    def publish_call_in(self, event, msg):
-        EventMesh.publish("load_screen", {"screen": "dialing", "meta": msg})
-
     def __lcd_off(self):
         
         if self.sleep_flag == 1 :
@@ -6191,25 +214,23 @@ class UI(object):
            
             #lcd_ctrl.write(0)
             #
-            lv.autoSleep(1)
+            #lv.autoSleep(1)
             pm.autosleep(1)
             pm.sclkEx_set(1, 1, 5)
-            utime.sleep_ms(2)
+            #utime.sleep_ms(2)
            
             #utime.sleep_ms(80)
-            EventMesh.publish("set_lcd_state",self.sleep_flag)
+            #EventMesh.publish("set_lcd_state",self.sleep_flag)
             self.sleep_lock = 0
            
             self.system_sleep_timer.stop()
             EventMesh.publish("Hsensor_set_sleep") #让系统更快休眠
 
     def system_sleep(self, event, msg) :
-        pass
-        # self.__lcd_off()
+        self.__lcd_off()
 
     def system_up(self, event, msg):
-        pass
-        # self.__lcd_on()
+        self.__lcd_on()
 
     def system_sleep_timer_cb(self, *args):
         #print("system_sleep_timer_count:{}".format(self.system_sleep_timer_count))
@@ -6219,7 +240,7 @@ class UI(object):
         self.system_sleep_timer_count += 1
         if self.system_sleep_timer_count >= time :
             self.system_sleep_timer_count = 0
-            # self.__lcd_off()
+            self.__lcd_off()
 
     def system_sleep_timeout_rest(self) :
         #print("system_sleep_timeout_rest")
@@ -6262,8 +283,8 @@ class UI(object):
 
                 if self.screen_old != None :
                     self.screen_old.Close() #先关闭上一次界面
-                    self.lv.img.cache_invalidate_src(None) #清img cache
-                    self.lv.img.cache_set_size(16) #开img cache
+                    # self.lv.img.cache_invalidate_src(None) #清img cache
+                    # self.lv.img.cache_set_size(16) #开img cache
                     if self.screen_old.meta_type != "popup": #不是弹窗,保存上一个界面,用来返回
                         self.screen_prev = self.screen_old #
                 self.screen_old = self.screen
@@ -6275,8 +296,8 @@ class UI(object):
                 # self.screen.initialization()
                 
                 print("load_screen.load()")
-                self.screen.load()
-                self.lv.scr_load(self.screen.get_meta())
+                # self.screen.load()
+                # self.lv.scr_load(self.screen.get_meta())
                 
                 self.screen.post_processor_after_initialization()
                 # self.__lcd_on()
diff --git a/2.sdk/project/D10/usr/static/storage_file/wechat_record.json b/2.sdk/project/D10/usr/static/storage_file/wechat_record.json
new file mode 100644 (file)
index 0000000..3c02815
--- /dev/null
@@ -0,0 +1 @@
+{ "a": "1" }
\ No newline at end of file