C06S:
authordxy15521469561 <1731678236@qq.com>
Mon, 4 Dec 2023 06:40:39 +0000 (14:40 +0800)
committerdxy15521469561 <1731678236@qq.com>
Mon, 4 Dec 2023 06:40:39 +0000 (14:40 +0800)
血压UI界面

2.sdk/project/C06S/ext/static/blood_gif01.png [new file with mode: 0644]
2.sdk/project/C06S/ext/static/blood_gif02.png [new file with mode: 0644]
2.sdk/project/C06S/ext/static/blood_gif03.png [new file with mode: 0644]
2.sdk/project/C06S/ext/static/health/health_blood.png [new file with mode: 0644]
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/main_init.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_health.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_main_menu.py
2.sdk/project/C06S/usr/static/theme1/THEME1_BLOOD_PRESSURE.png [new file with mode: 0644]

diff --git a/2.sdk/project/C06S/ext/static/blood_gif01.png b/2.sdk/project/C06S/ext/static/blood_gif01.png
new file mode 100644 (file)
index 0000000..a00555c
Binary files /dev/null and b/2.sdk/project/C06S/ext/static/blood_gif01.png differ
diff --git a/2.sdk/project/C06S/ext/static/blood_gif02.png b/2.sdk/project/C06S/ext/static/blood_gif02.png
new file mode 100644 (file)
index 0000000..52d0f20
Binary files /dev/null and b/2.sdk/project/C06S/ext/static/blood_gif02.png differ
diff --git a/2.sdk/project/C06S/ext/static/blood_gif03.png b/2.sdk/project/C06S/ext/static/blood_gif03.png
new file mode 100644 (file)
index 0000000..b7161a2
Binary files /dev/null and b/2.sdk/project/C06S/ext/static/blood_gif03.png differ
diff --git a/2.sdk/project/C06S/ext/static/health/health_blood.png b/2.sdk/project/C06S/ext/static/health/health_blood.png
new file mode 100644 (file)
index 0000000..f592d81
Binary files /dev/null and b/2.sdk/project/C06S/ext/static/health/health_blood.png differ
index 9e5e21f..3084186 100644 (file)
@@ -64,7 +64,7 @@ def main_init():
 
     from ui_main_menu import MainMenuScreen
     # from ui_WatchFaceScreen import WatchFaceScreen
-    
+    from ui_health import HealthScreen,Spo2Screen,TemperatureScreen,bloodpressureScreen,HeartrateScreen
     from appFactoryMode import  FactoryModestepScreen,FactoryModeLocationScreen,FactoryModeScreen ,FactoryModeBatTestScreen,FactoryModeHsensorTestScreen,FactoryModeLogScreen
     from mgr import setCallStateManager,setclassTimeManager,setSmsIndexManager,ConfigStoreManager,testSmsSetIPManager,playPowerAudioManager,sosInfoCallManager,getBootOffManager,getSosFlagManager,CountdownManager, LocationManager, getVolumSizeManager,gethistoryDataManager,getUpLoadDataManager, getplayAudiodStateManager,\
     AddrBookManager,MsgdetailManager,PhoneCallingManager,getOldTimeManager,getStorageDataManager,getBrightnessManager,getHrTimeManager,getTempTimeManager,getLowBatManager
@@ -91,7 +91,7 @@ def main_init():
         ui.add_screen(MainMenuScreen()) 
         ui.add_screen(_ui.PopupScreen()) 
         ui.add_screen(_ui.PhoneScreen()) 
-        ui.add_screen(_ui.HeartrateScreen()) 
+        
     except Exception as e:
         usys.print_exception(e)
     try:
@@ -103,8 +103,10 @@ def main_init():
         ui.add_screen(_ui.CountdownScreen()) 
         ui.add_screen(_ui.StopwatchScreen()) 
         ui.add_screen(_ui.WeatherScreen()) 
-        ui.add_screen(_ui.Spo2Screen()) 
-        ui.add_screen(_ui.TemperatureScreen()) 
+        ui.add_screen(Spo2Screen()) 
+        ui.add_screen(HeartrateScreen()) 
+        ui.add_screen(TemperatureScreen()) 
+        ui.add_screen(bloodpressureScreen())
         ui.add_screen(_ui.ContactsScreen()) 
     except Exception as e:
         usys.print_exception(e)
@@ -112,7 +114,7 @@ def main_init():
         from appWechat import WechatScreen,TK_ProtoCol,MESSAGE_ProtoCol,NewWechatPopupScreen
         ui.add_screen(WechatScreen()) 
         from alarm import ClkListScreen,ClockManager,NewEditClk,CLKTimeScreen,ClkPeriod,PopupAlarmScreen
-        from ui_health import HealthScreen
+        
         ui.add_screen(ClkListScreen()) 
         ui.add_screen(_ui.CountdownEndScreen()) 
         ui.add_screen(NewEditClk()) 
index 35ed304..3b26b5f 100644 (file)
@@ -854,7 +854,7 @@ class DeviceInfoManager(Abstract):
             """电量小于20% 5分钟提醒一次"""
             if self.alarm_count <= 120:
                 self.alarm_count+=10
-                if self.alarm_count == 60:
+                if self.alarm_count == 20:
                     EventMesh.publish("set_rtc_alarm")
 
             get_low_btn = EventMesh.publish("get_low_bat_btn")#
@@ -2469,6 +2469,10 @@ class gethistoryDataManager(Abstract):
         self.read_histroy_hr_data = []
         self.read_histroy_temp_data = []
         self.read_histroy_spo2_data = []
+        self.read_histroy_blood_data = []
+
+        self.blMin = 0
+        self.blMax = 0
 
         oldHr  = EventMesh.publish("get_storage_config","old_hr")
         if oldHr != None:
@@ -2499,15 +2503,22 @@ class gethistoryDataManager(Abstract):
                 self.read_histroy_spo2_data = ujson.load(fd)
                 if self.read_histroy_spo2_data == None:
                     self.read_histroy_spo2_data = []
+        
+        check_blood= ql_fs.path_exists("/ext/static/storage_file/history_blood.json")
+        if check_blood == True :
+            with open("/ext/static/storage_file/history_blood.json","r") as fd:#音频文件编号
+                self.read_histroy_blood_data = ujson.load(fd)
+                if self.read_histroy_blood_data == None:
+                    self.read_histroy_blood_data = []
         self.temp_value = 0
         
         # self.read_histroy_hr_data=[{"timeSec":16789890,"value":90},{"timeSec":16789888,"value":78},{"timeSec":16789688,"value":68},{"timeSec":16789898,"value":58},\
         #                              {"timeSec":16789897,"value":88},{"timeSec":16789867,"value":77},{"timeSec":16789895,"value":70}]
 
     def post_processor_after_instantiation(self):
-        EventMesh.subscribe("set_old_hr_data", self.save_hr_value)
-        EventMesh.subscribe("get_old_hr_data", self.get_hr_value)
-        EventMesh.subscribe("set_old_spo2_data", self.save_spo2_value)
+        EventMesh.subscribe("set_old_hr_data", self.set_old_hr_data)
+        EventMesh.subscribe("get_old_hr_data", self.get_old_hr_data)
+        EventMesh.subscribe("set_old_spo2_data", self.set_old_spo2_data)
         EventMesh.subscribe("get_old_spo2_data", self.get_spo2_value)
 
         EventMesh.subscribe("get_old_step_value", self.get_old_step_value)
@@ -2523,6 +2534,40 @@ class gethistoryDataManager(Abstract):
         EventMesh.subscribe("get_history_spo2_value", self.get_history_spo2_value)
         EventMesh.subscribe("set_history_spo2_value", self.set_history_spo2_value)
 
+        EventMesh.subscribe("set_old_blood_data", self.set_old_blood_data)
+        EventMesh.subscribe("get_old_blood_data", self.get_old_blood_data)
+
+    def set_old_blood_data(self, event, msg): 
+        self.blMax = msg[0]#收缩压
+        self.blMin = msg[1]#舒张压
+        if self.blMax > 0 and self.blMin > 0:
+            date_tmp = utime.localtime()
+            time_tmp = utime.mktime(date_tmp)
+            if len(self.read_histroy_blood_data) >= 7:
+                sort_new = {}
+                sort_new = sorted(self.read_histroy_blood_data, key = lambda i: i['timeSec'],reverse = False)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条
+                print(sort_new)
+                for i in range(len(self.read_histroy_blood_data)-1):
+                    sort_new[i] = sort_new[i+1]#0==1 1== 2 2== 3 3==4 4==5 5==6 6==7
+                    self.read_histroy_blood_data[i] = sort_new[i]
+                    pass
+                self.read_histroy_blood_data[6] = {"timeSec": time_tmp, "blMax": self.blMax,"blMin": self.blMin}
+            else:
+                self.read_histroy_blood_data.append({"timeSec": time_tmp, "blMax": self.blMax,"blMin": self.blMin}) 
+
+            with open("/ext/static/storage_file/history_blood.json","w",encoding="utf-8") as fd:
+                ujson.dump(self.read_histroy_blood_data,fd)
+            print(self.read_histroy_blood_data)
+            EventMesh.publish("show_history_blood_data")
+
+    def get_old_blood_data(self, event, msg): #近7次血压历史数据统计显示
+        if self.read_histroy_blood_data:
+            return self.read_histroy_blood_data
+        else :
+            return []
+
+
+
     def get_history_spo2_value(self, event, msg): #近7次血氧历史数据统计显示
         return self.read_histroy_spo2_data
 
@@ -2567,7 +2612,7 @@ class gethistoryDataManager(Abstract):
             
            
 
-    def save_hr_value(self, event, msg): 
+    def set_old_hr_data(self, event, msg): 
         if msg >= 50:
             
             EventMesh.publish("set_storage_config",["old_hr",msg])
@@ -2595,10 +2640,10 @@ class gethistoryDataManager(Abstract):
             #print(self.read_histroy_hr_data)
         
 
-    def get_hr_value(self, event, msg): 
+    def get_old_hr_data(self, event, msg): 
         return self.oldHr
 
-    def save_spo2_value(self, event, msg): 
+    def set_old_spo2_data(self, event, msg): 
         if msg >= 85:
             
             EventMesh.publish("set_storage_config",["old_spo2",msg])
index a17e678..159ff9e 100644 (file)
@@ -1404,7 +1404,7 @@ class Time_ProtoCol(ProtoCol):
 
         machine.RTC().datetime((next_alarm_time[0],next_alarm_time[1],next_alarm_time[2],next_alarm_time[6],next_alarm_time[3],next_alarm_time[4],next_alarm_time[5],0))
         #next_alarm_time = utime.localtime(old_Timesec)#年月日时分秒星期365中的第几天
-
+        EventMesh.publish("set_rtc_alarm")
         #EventMesh.publish(constants.PROTOCOL.TIME_SEND)  
 
 
index ec3a2bc..57c6fe1 100644 (file)
@@ -2545,7 +2545,7 @@ class PopupScreen(Screen):
         dir = lv.indev_t.get_gesture_dir(indev)
         if code == lv.EVENT.GESTURE:
             if dir == lv.DIR.RIGHT:
-                EventMesh.publish("watch_top_show")
+                # EventMesh.publish("watch_top_show")
                 EventMesh.publish("load_screen", {"screen": "main_menu"})
 
         elif  code == lv.EVENT.SHORT_CLICKED:
@@ -2659,358 +2659,7 @@ class MsgDetailScreen(Screen):
 
 
 
-# -------------------------------------------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
-        self.is_sliding = 0
-        EventMesh.subscribe("show_history_hr_data",self.show_history_hr_data)
-
-    def initialization(self):
-        self.is_sliding =0
-        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, 10)
-            heartrate_label.set_size(LCD_SIZE_W, 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, 45)
-            heartrate_line_bg_img.set_size(230, 120)
-            heartrate_line_bg_img.set_src("E:/static/hr_line_bg.png")
-
-            
-            heartrate_done_img = lv.img(heartrate_screen)
-            heartrate_done_img.set_pos(20, 229)
-            heartrate_done_img.set_src("E:/static/hr_gif_03.png")
-
-            heartrate_reset_btn_img = lv.img(heartrate_screen)
-            heartrate_reset_btn_img.set_pos(0, 172)
-            heartrate_reset_btn_img.set_src("E:/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(LCD_SIZE_W,40)
-            heartrate_start_label.set_pos(0,182)
-            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,45)
-            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,45)
-            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,45)
-            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,45)
-            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,45)
-            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,45)
-            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,45)
-            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, 34)
-            heartrate_bpm_label.set_pos(120, 250)
-            heartrate_bpm_label.set_text("-- bpm")
-            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(LCD_SIZE_W, 34)
-            heartrate_done_label.set_pos(0, 250)
-            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.SHORT_CLICKED, None)
-            heartrate_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
-                lv.EVENT.PRESSING, 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.is_sliding = 0
-        self.heart_value = 0
-        EventMesh.publish("show_history_hr_data")
-        # self.show_history_data()
-        self.start_init()
-
-    def restart_up(self,e):
-        global heartrate_done_label,heartrate_bpm_label,heartrate_start_label,heartrate_reset_btn_img
-
-        code = e.get_code()
-        if code == lv.EVENT.PRESSING:
-            #print("PRESSING")
-            self.is_sliding += 1
-
-        elif  code == lv.EVENT.SHORT_CLICKED:
-            #utime.sleep_ms(10)
-            print("1self.is_sliding",self.is_sliding)
-            if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
-                self.is_sliding =0
-                self.point = 0
-                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.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)
-                        
-            self.is_sliding =0
-    def start_init(self):
-        self.point = 0
-        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.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_hr_data(self,event,msg):
-        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")
-        if read_data != None:
-            if len(read_data) != 0:
-                sort_new = {}
-                sort_new = sorted(read_data, key = lambda i: i['timeSec'],reverse = False)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条
-                # print("hr history sort_new",sort_new)
-                if sort_new != []:
-                    for i in range(len(sort_new)):
-                        print(int(sort_new[i]["hr"]))
-                        # print("hr history read_data",read_data)
-                        value = int(sort_new[i]["hr"])
-                        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,145-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,145-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,145-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,145-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,145-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,145-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,145-line_value)
-                            hr_line7.set_size(10,line_value)
-    def start_measure(self,*args):            
-        EventMesh.publish("publish_message_event_ui",{"func":self.start_measure_do,"data":0})
-    def start_measure_do(self,data):
-        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)
-        WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
-        #print("heart WEAR:{}".format(WEAR))
-        # 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("E:/static/hr_gif_02.png")
-        if self.point%4 == 1 :
-            heartrate_start_label.set_text("正在测量中...")
-            heartrate_done_img.set_src("E:/static/hr_gif_01.png")
-        if self.point%4 == 2 :
-            heartrate_start_label.set_text("正在测量中.")
-            heartrate_done_img.set_src("E:/static/hr_gif_02.png")
-        
-        if self.point%4 == 3 :
-            heartrate_start_label.set_text("正在测量中.")
-            heartrate_done_img.set_src("E:/static/hr_gif_03.png")
-
-
-
-        if self.point > 120 or (WEAR == 0 and self.point > 10): #测60s或没佩戴
-            self.timer.stop()
-            heartrate_done_img.set_src("E:/static/hr_gif_03.png")
-            
-            self.heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
-            if WEAR == 0:
-                self.heart_value = 0
-                heartrate_start_label.set_text("佩戴异常,点击重测")
-            else :
-                heartrate_start_label.set_text("测量结束,点击重测")
-
-            if self.heart_value > 50:
-                EventMesh.publish("set_old_hr_data",self.heart_value)
-                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)
-            
-            
-            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.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 done_left_to_right(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)
-        EventMesh.publish("return_prev_screen")
-
-    def btn8_press(self):
-        EventMesh.publish("watch_top_show")
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    
 # -------------------------------------------toolbox screen----------------------------------------------------------
 
 toolbox_screen = None
@@ -4600,804 +4249,6 @@ class ContactsScreen(Screen):
     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
-        self.is_sliding =0
-        EventMesh.subscribe("show_history_temp_data",self.show_history_temp_data)
-    def initialization(self):
-        self.is_sliding =0
-        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_degree_img,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(LCD_SIZE_W, 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, 45)
-            temperature_line_bg_img.set_size(230, 120)
-            temperature_line_bg_img.set_src("E:/static/temp_line_bg.png")
-
-            
-            temperature_done_img = lv.img(temperature_screen)
-            temperature_done_img.set_pos(30, 218)
-            temperature_done_img.set_src("E:/static/temp_gif03.png")
-
-            temp_reset_btn_img = lv.img(temperature_screen)
-            temp_reset_btn_img.set_pos(0, 177)
-            temp_reset_btn_img.set_src("E:/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(LCD_SIZE_W,40)
-            temperature_start_label.set_pos(0,185)
-            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, 238)
-            temperature_bpm_label.set_text("- -")
-            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, 30)
-            temperature_keep_label.set_pos(100, 254)
-            temperature_keep_label.set_text("未出值")
-            temperature_keep_label.add_flag(lv.obj.FLAG.HIDDEN)
-            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, 237)
-            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.SHORT_CLICKED, None)
-            temp_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
-                lv.EVENT.PRESSING, None)
-        size_x = len(str("- -"))*14
-        temperature_degree_img.set_pos(100+size_x, 237)
-        temperature_bpm_label.set_text("- -")
-        temperature_start_label.set_text("正在测量中.")
-        
-
-    def post_processor_after_initialization(self):
-        self.is_sliding =0
-        self.start_init()
-
-    def restart_up(self,e):
-
-        global temperature_done_label,temperature_keep_label,temperature_bpm_label,temperature_start_label,temp_reset_btn_img,temperature_degree_img
-        code = e.get_code()
-
-        if code == lv.EVENT.PRESSING:
-            #print("PRESSING")
-            self.is_sliding += 1
-
-        elif  code == lv.EVENT.SHORT_CLICKED:
-            #utime.sleep_ms(10)
-            print("1self.is_sliding",self.is_sliding)
-            if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
-                self.is_sliding =0
-                temperature_bpm_label.set_text("- -")
-                size_x = len(str("- -"))*14
-                temperature_degree_img.set_pos(100+size_x, 237)
-                temperature_keep_label.set_text("未出值")
-                temp_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
-                self.point = 0
-                size_x = len(str("- -"))*14
-                temperature_degree_img.set_pos(100+size_x, 237)
-                temperature_bpm_label.set_text("- -")
-                temperature_start_label.set_text("正在测量中.")
-                EventMesh.publish("set_temp_state",1)
-                EventMesh.publish(constants.EVENT.START_TEMP)
-                EventMesh.publish("show_history_temp_data")
-                self.timer.start(1*500, 1, self.start_measure)
-                
-            self.is_sliding =0
-        
-    def start_init(self):
-        temperature_bpm_label.set_text("- -")
-        size_x = len(str("- -"))*14
-        temperature_degree_img.set_pos(100+size_x, 237)
-        temperature_keep_label.set_text("未出值")
-        temp_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
-        self.point = 0
-        size_x = len(str("- -"))*14
-        temperature_degree_img.set_pos(100+size_x, 237)
-        temperature_bpm_label.set_text("- -")
-        temperature_start_label.set_text("正在测量中.")
-        EventMesh.publish("set_temp_state",1)
-        EventMesh.publish(constants.EVENT.START_TEMP)
-        EventMesh.publish("show_history_temp_data")
-        self.timer.start(1*500, 1, self.start_measure)
-
-    def show_history_temp_data(self,event,msg):
-        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 get_history_temp_value",read_data)
-        if read_data != None:
-            if len(read_data) != 0:
-                sort_new = {}
-                sort_new = sorted(read_data, key = lambda i: i['timeSec'],reverse = False)#按照时间戳进行排序 去掉最旧的一次数据如果满了五
-                count = len(sort_new)
-                if count != 0:
-                    for i in  range(count):
-                        # print(int(sort_new[i]["temp"]))
-                        # print("hr history read_data",read_data)
-                        value = int(sort_new[i]["temp"])
-                        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)
-                        temp_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}]
-                        if i == 0:
-                            temp_line1.set_points(temp_line_points,2)
-                            temp_line1.set_pos(29,145-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(temp_line_points,2)
-                            temp_line2.set_pos(57,145-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(temp_line_points,2)
-                            temp_line3.set_pos(84,145-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(temp_line_points,2)
-                            temp_line4.set_pos(112,145-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(temp_line_points,2)
-                            temp_line5.set_pos(140,145-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(temp_line_points,2)
-                            temp_line6.set_pos(167,145-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(temp_line_points,2)
-                            temp_line7.set_pos(195,145-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):
-        EventMesh.publish("publish_message_event_ui",{"func":self.start_measure_do,"data":0})
-    def start_measure_do(self,data):
-        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")#防止黑屏
-        WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
-        temp = EventMesh.publish(constants.EVENT.GET_TEMP) 
-        temp += 0.5
-        if temp < 25 or temp > 42:
-            temp = 0
-        if str(temp).find(".") != -1:
-            tmp = str(temp).split('.')[0] + '.' + str(temp).split('.')[1][:1]#获取小数点后一位 舍去小数点最后一位
-        else:
-            tmp = temp#获取小数点后一位 舍去小数点最后一位
-
-        # print("self.temp:{}".format(temp))
-        if self.point >= 2:
-            if temp != 0:
-                size_x = len(str(tmp))*14
-                temperature_degree_img.set_pos(100+size_x, 237)
-                temperature_bpm_label.set_text("{}".format(tmp))
-            else:
-                size_x = len(str("- -"))*14
-                temperature_degree_img.set_pos(100+size_x, 237)
-                temperature_bpm_label.set_text("- -")
-        
-        if self.point%4 == 0 :
-            temperature_start_label.set_text("正在测量中..")
-            temperature_done_img.set_src("E:/static/temp_gif02.png")
-        if self.point%4 == 1 :
-            temperature_start_label.set_text("正在测量中...")
-            temperature_done_img.set_src("E:/static/temp_gif01.png")
-        if self.point%4 == 2 :
-            temperature_start_label.set_text("正在测量中.")
-            temperature_done_img.set_src("E:/static/temp_gif02.png")
-        
-        if self.point%4 == 3 :
-            temperature_start_label.set_text("正在测量中.")
-            temperature_done_img.set_src("E:/static/temp_gif03.png")
-
-        tmp_f_tmp = 0
-        tmp_d_tmp = 0
-        if str(temp).find(".") != -1:
-            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)
-        else:
-            tmp_f_tmp = temp
-
-        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)
-            elif temp == 0:
-                temperature_keep_label.set_text(" ")
-                temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), 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 or (WEAR == 0 and self.point > 10): #测2min
-            self.timer.stop()
-            if WEAR == 0:
-                temp = 0
-                temperature_start_label.set_text("佩戴异常,点击重测")
-                size_x = len(str("- -"))*14
-                temperature_degree_img.set_pos(100+size_x, 237)
-                temperature_bpm_label.set_text("- -")
-                temperature_keep_label.set_text(" ")
-                temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-            else :
-                temperature_start_label.set_text("测量结束,点击重测")
-                if temp > 0:
-                    EventMesh.publish("set_history_temp_value",temp)
-                    EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp])
-                    num = str(tmp_f_tmp)+"."+ str(tmp_d_tmp)
-                    EventMesh.publish(constants.PROTOCOL.BTEMP2_SEND,[1,num])
-            if temp >= 37.3:
-                temperature_done_img.set_src("E:/static/temp_high.png")
-            else:
-                temperature_done_img.set_src("E:/static/temp_gif03.png")
-            temp_reset_btn_img.clear_flag(lv.obj.FLAG.HIDDEN)
-            self.point = 0
-            EventMesh.publish("set_temp_state",0)
-            
-            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 done_left_to_right(self):
-        self.timer.stop()
-        EventMesh.publish("set_temp_state",0)
-        EventMesh.publish(constants.EVENT.STOP_TEMP)
-        EventMesh.publish("return_prev_screen")
-
-    def btn8_press(self):
-        EventMesh.publish("watch_top_show")
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-
-
-line_points = [{"x":0,"y":0},{"x":LCD_SIZE_W,"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
-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
-        self.is_sliding = 0
-        EventMesh.subscribe("show_history_spo2_data",self.show_history_spo2_data)
-
-        #self.Hsensor = None
-    def initialization(self):
-        self.is_sliding = 0
-        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, 10)
-            spo2_label.set_size(LCD_SIZE_W, 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, 45)
-            spo2_line_bg_img.set_size(230, 120)
-            spo2_line_bg_img.set_src("E:/static/spo2_line_bg.png")
-
-            
-            spo2_done_img = lv.img(spo2_screen)
-            spo2_done_img.set_pos(30, 220)
-            spo2_done_img.set_src("E:/static/spo2_gif04.png")
-
-            spo2_reset_btn_img = lv.img(spo2_screen)
-            spo2_reset_btn_img.set_pos(0, 177)
-            spo2_reset_btn_img.set_src("E:/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(LCD_SIZE_W,40)
-            spo2_start_label.set_pos(0,185)
-            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,45)
-            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,45)
-            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,45)
-            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,45)
-            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,45)
-            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,45)
-            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,45)
-            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, 34)
-            spo2_value_label.set_pos(110, 240)
-            spo2_value_label.set_text("- -%")
-            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.SHORT_CLICKED, None)
-            spo2_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
-                lv.EVENT.PRESSING, None)
-
-    def post_processor_after_initialization(self):
-        self.point = 0
-        self.is_sliding= 0
-        self.spo2_value = 0
-        EventMesh.publish("show_history_spo2_data")
-        self.start_init()
-        
-    def restart_up(self,e):
-
-        global spo2_value_label,heartrate_bpm_label,spo2_start_label,spo2_reset_btn_img
-        code = e.get_code()
-
-        #print("code!!!!!!!!",code,msg)
-        if code == lv.EVENT.PRESSING:
-            #print("PRESSING")
-            self.is_sliding += 1
-
-        elif  code == lv.EVENT.SHORT_CLICKED:
-            #utime.sleep_ms(10)
-            print("1self.is_sliding",self.is_sliding)
-            if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
-                self.is_sliding = 0
-                self.point = 0
-                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)
-                
-                
-                spo2_value_label.set_text("- -%")
-                spo2_start_label.set_text("正在测量中.")
-                EventMesh.publish("set_spo2_state",1)#2代表后台进入血氧测试
-                EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)
-            self.is_sliding =0
-       
-    def start_init(self):
-        self.point = 0
-        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)
-        
-        
-        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_spo2_data(self,event,msg):
-        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:
-            if len(read_data) != 0:
-                sort_new = {}
-                sort_new = sorted(read_data, key = lambda i: i['timeSec'],reverse = False)#按照时间戳进行排序 去掉最旧的一次数据如果满了五
-                count = len(sort_new)
-                if count != 0:
-                    for i in  range(count):
-                        print(int(sort_new[i]["spo2"]))
-                        # print("hr history read_data",read_data)
-                        value = int(sort_new[i]["spo2"])
-                        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,145-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,145-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,145-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,145-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,145-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,145-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,145-line_value)
-                            spo2_line7.set_size(10,line_value)
-               
-    def start_measure(self,*args):
-        EventMesh.publish("publish_message_event_ui",{"func":self.start_measure_do,"data":0})
-    def start_measure_do(self,data):    
-        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")#防止黑屏
-        WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
-        # if self.Hsensor == None:
-        #     self.Hsensor =  EventMesh.publish("get_Hsensor")
-        # c_data = self.Hsensor.get_test_data()#校准数据和工厂数据
-        # print("   佩戴状态\n红外:{}活体:{}佩戴:{}\n{},{} \n{},{} \n{},{}\n校准数据:{},{},{},{}\n漏光数据:{},{},{}"
-        #                                           .format(c_data[3],c_data[4],WEAR,c_data[5],c_data[6],c_data[7],c_data[8],c_data[9],c_data[10],
-        #                                                   c_data[11],c_data[12],c_data[13],c_data[14],c_data[0],c_data[1],c_data[2],))
-        # print("sop2:start_measure:point{}".format(self.point))
-        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("E:/static/spo2_gif03.png")
-
-        if self.point%4 == 1 :
-            spo2_start_label.set_text("正在测量中...")
-            spo2_done_img.set_src("E:/static/spo2_gif02.png")
-
-        if self.point%4 == 2 :
-            spo2_start_label.set_text("正在测量中.")
-            spo2_done_img.set_src("E:/static/spo2_gif01.png")
-        
-        if self.point%4 == 3 :
-            spo2_start_label.set_text("正在测量中.")
-            spo2_done_img.set_src("E:/static/spo2_gif04.png")
-
-
-
-        if self.point > 120 or (WEAR == 0 and self.point > 10): #测60s
-            self.timer.stop()
-            spo2_done_img.set_src("E:/static/spo2_gif04.png")
-            self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-            if WEAR == 0:
-                self.spo2_value = 0
-                spo2_start_label.set_text("佩戴异常,点击重测")
-            else :
-                spo2_start_label.set_text("测量结束,点击重测")
-
-            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_value_label.set_text("{}%".format(self.spo2_value))
-                # heartrate_done_label.set_text("测量完成")
-            else:
-                spo2_value_label.set_text("- -%")
-                
-                
-            # self.show_history_data()
-
-            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 done_left_to_right(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)
-        EventMesh.publish("return_prev_screen")
-
-    def btn8_press(self):
-        EventMesh.publish("watch_top_show")
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-
-
-
-
-
 
 
 # -------------------------------------------countdown screen----------------------------------------------------------
index 7865de3..7eb70e6 100644 (file)
@@ -7,7 +7,8 @@ from ui import style_screen,style_font_youyuan_20,style_btn,style_img,Screen,sty
 import constants
 import osTimer
 import audio
-from machine import Pin
+import urandom
+from machine import RTC
 import ujson
 from lcd import style_font_youyuan_40,LCD_SIZE_H,LCD_SIZE_W
 HEALTH_ICON_W_SIZE = 220
@@ -132,6 +133,20 @@ health_cont_y+=HEALTH_ICON_OFFSET_SIZE
 
 
 
+health_blood_bg_img = lv.img(healt_cont)
+health_blood_bg_img.set_pos(5, health_cont_y)
+health_blood_bg_img.set_size(HEALTH_BG_ICON_W_SIZE, HEALTH_BG_ICON_H_SIZE)
+health_blood_bg_img.add_flag(lv.obj.FLAG.CLICKABLE)
+health_blood_bg_img.set_src("E:/static/list_bg.png")
+health_blood_bg_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+health_blood_img = lv.img(healt_cont)
+health_blood_img.set_pos(13, health_cont_y+6)
+health_blood_img.set_size(HEALTH_ICON_W_SIZE, HEALTH_ICON_H_SIZE)
+# health_blood_img.add_flag(lv.obj.FLAG.CLICKABLE)
+health_blood_img.set_src("E:/static/health/health_blood.png")
+health_blood_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+health_cont_y+=HEALTH_ICON_OFFSET_SIZE
 
 class HealthScreen(Screen):#健康测量
     NAME = "health"
@@ -146,6 +161,7 @@ class HealthScreen(Screen):#健康测量
         # setting_themeswitch.add_event_cb(lambda e: self.load_screen(e, {"screen": "themeswitch"}), lv.EVENT.CLICKED, None)
         hhealth_spo2_bg_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.healt_cb(e, "spo2")), lv.EVENT.SHORT_CLICKED, None)
         health_temp_bg_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.healt_cb(e, "temperature")), lv.EVENT.SHORT_CLICKED, None)
+        health_blood_bg_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.healt_cb(e, "blood_pressure")), lv.EVENT.SHORT_CLICKED, None)
 
         # health_hr_bg_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.healt_cb(e, "heartrate")), lv.EVENT.PRESSING, None)
         # # setting_themeswitch.add_event_cb(lambda e: self.load_screen(e, {"screen": "themeswitch"}), lv.EVENT.CLICKED, None)
@@ -166,25 +182,2115 @@ class HealthScreen(Screen):#健康测量
 
         elif  code == lv.EVENT.SHORT_CLICKED:
             EventMesh.publish("load_screen",  {"screen": "{}".format(msg)})
-        # code = e.get_code()
-        # if code == lv.EVENT.PRESSING:
-        #     self.is_sliding += 1
-
-        # elif  code == lv.EVENT.SHORT_CLICKED:
-        #     print("1self.is_sliding",self.is_sliding)
-        #     if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
-        #         self.is_sliding = 0
-        #         EventMesh.publish("load_screen",  {"screen": "{}".format(msg)})
+
+    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 = 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
+        self.is_sliding =0
+        EventMesh.subscribe("show_history_temp_data",self.show_history_temp_data)
+    def initialization(self):
+        self.is_sliding =0
+        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_degree_img,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(LCD_SIZE_W, 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, 45)
+            temperature_line_bg_img.set_size(230, 120)
+            temperature_line_bg_img.set_src("E:/static/temp_line_bg.png")
+
+            
+            temperature_done_img = lv.img(temperature_screen)
+            temperature_done_img.set_pos(30, 218)
+            temperature_done_img.set_src("E:/static/temp_gif03.png")
+
+            temp_reset_btn_img = lv.img(temperature_screen)
+            temp_reset_btn_img.set_pos(0, 177)
+            temp_reset_btn_img.set_src("E:/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(LCD_SIZE_W,40)
+            temperature_start_label.set_pos(0,185)
+            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, 238)
+            temperature_bpm_label.set_text("- -")
+            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, 30)
+            temperature_keep_label.set_pos(100, 254)
+            temperature_keep_label.set_text("未出值")
+            temperature_keep_label.add_flag(lv.obj.FLAG.HIDDEN)
+            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, 237)
+            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.SHORT_CLICKED, None)
+            temp_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
+                lv.EVENT.PRESSING, None)
+        size_x = len(str("- -"))*14
+        temperature_degree_img.set_pos(100+size_x, 237)
+        temperature_bpm_label.set_text("- -")
+        temperature_start_label.set_text("正在测量中.")
+        
+
+    def post_processor_after_initialization(self):
+        self.is_sliding =0
+        self.start_init()
+
+    def restart_up(self,e):
+
+        global temperature_done_label,temperature_keep_label,temperature_bpm_label,temperature_start_label,temp_reset_btn_img,temperature_degree_img
+        code = e.get_code()
+
+        if code == lv.EVENT.PRESSING:
+            #print("PRESSING")
+            self.is_sliding += 1
+
+        elif  code == lv.EVENT.SHORT_CLICKED:
+            #utime.sleep_ms(10)
+            print("1self.is_sliding",self.is_sliding)
+            if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
+                self.is_sliding =0
+                temperature_bpm_label.set_text("- -")
+                size_x = len(str("- -"))*14
+                temperature_degree_img.set_pos(100+size_x, 237)
+                temperature_keep_label.set_text("未出值")
+                temp_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
+                self.point = 0
+                size_x = len(str("- -"))*14
+                temperature_degree_img.set_pos(100+size_x, 237)
+                temperature_bpm_label.set_text("- -")
+                temperature_start_label.set_text("正在测量中.")
+                EventMesh.publish("set_temp_state",1)
+                EventMesh.publish(constants.EVENT.START_TEMP)
+                EventMesh.publish("show_history_temp_data")
+                self.timer.start(1*500, 1, self.start_measure)
                 
-        #     self.is_sliding = 0
+            self.is_sliding =0
+        
+    def start_init(self):
+        temperature_bpm_label.set_text("- -")
+        size_x = len(str("- -"))*14
+        temperature_degree_img.set_pos(100+size_x, 237)
+        temperature_keep_label.set_text("未出值")
+        temp_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
+        self.point = 0
+        size_x = len(str("- -"))*14
+        temperature_degree_img.set_pos(100+size_x, 237)
+        temperature_bpm_label.set_text("- -")
+        temperature_start_label.set_text("正在测量中.")
+        EventMesh.publish("set_temp_state",1)
+        EventMesh.publish(constants.EVENT.START_TEMP)
+        EventMesh.publish("show_history_temp_data")
+        self.timer.start(1*500, 1, self.start_measure)
+
+    def show_history_temp_data(self,event,msg):
+        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 get_history_temp_value",read_data)
+        if read_data != None:
+            if len(read_data) != 0:
+                sort_new = {}
+                sort_new = sorted(read_data, key = lambda i: i['timeSec'],reverse = False)#按照时间戳进行排序 去掉最旧的一次数据如果满了五
+                count = len(sort_new)
+                if count != 0:
+                    for i in  range(count):
+                        # print(int(sort_new[i]["temp"]))
+                        # print("hr history read_data",read_data)
+                        value = int(sort_new[i]["temp"])
+                        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)
+                        temp_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}]
+                        if i == 0:
+                            temp_line1.set_points(temp_line_points,2)
+                            temp_line1.set_pos(29,145-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(temp_line_points,2)
+                            temp_line2.set_pos(57,145-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(temp_line_points,2)
+                            temp_line3.set_pos(84,145-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(temp_line_points,2)
+                            temp_line4.set_pos(112,145-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(temp_line_points,2)
+                            temp_line5.set_pos(140,145-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(temp_line_points,2)
+                            temp_line6.set_pos(167,145-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(temp_line_points,2)
+                            temp_line7.set_pos(195,145-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):
+        EventMesh.publish("publish_message_event_ui",{"func":self.start_measure_do,"data":0})
+    def start_measure_do(self,data):
+        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")#防止黑屏
+        WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
+        temp = EventMesh.publish(constants.EVENT.GET_TEMP) 
+        temp += 0.5
+        if temp < 25 or temp > 42:
+            temp = 0
+        if str(temp).find(".") != -1:
+            tmp = str(temp).split('.')[0] + '.' + str(temp).split('.')[1][:1]#获取小数点后一位 舍去小数点最后一位
+        else:
+            tmp = temp#获取小数点后一位 舍去小数点最后一位
+
+        # print("self.temp:{}".format(temp))
+        if self.point >= 2:
+            if temp != 0:
+                size_x = len(str(tmp))*14
+                temperature_degree_img.set_pos(100+size_x, 237)
+                temperature_bpm_label.set_text("{}".format(tmp))
+            else:
+                size_x = len(str("- -"))*14
+                temperature_degree_img.set_pos(100+size_x, 237)
+                temperature_bpm_label.set_text("- -")
+        
+        if self.point%4 == 0 :
+            temperature_start_label.set_text("正在测量中..")
+            temperature_done_img.set_src("E:/static/temp_gif02.png")
+        if self.point%4 == 1 :
+            temperature_start_label.set_text("正在测量中...")
+            temperature_done_img.set_src("E:/static/temp_gif01.png")
+        if self.point%4 == 2 :
+            temperature_start_label.set_text("正在测量中.")
+            temperature_done_img.set_src("E:/static/temp_gif02.png")
+        
+        if self.point%4 == 3 :
+            temperature_start_label.set_text("正在测量中.")
+            temperature_done_img.set_src("E:/static/temp_gif03.png")
+
+        tmp_f_tmp = 0
+        tmp_d_tmp = 0
+        if str(temp).find(".") != -1:
+            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)
+        else:
+            tmp_f_tmp = temp
+
+        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)
+            elif temp == 0:
+                temperature_keep_label.set_text(" ")
+                temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), 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 or (WEAR == 0 and self.point > 10): #测2min
+            self.timer.stop()
+            if WEAR == 0:
+                temp = 0
+                temperature_start_label.set_text("佩戴异常,点击重测")
+                size_x = len(str("- -"))*14
+                temperature_degree_img.set_pos(100+size_x, 237)
+                temperature_bpm_label.set_text("- -")
+                temperature_keep_label.set_text(" ")
+                temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+            else :
+                temperature_start_label.set_text("测量结束,点击重测")
+                if temp > 0:
+                    EventMesh.publish("set_history_temp_value",temp)
+                    EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp])
+                    num = str(tmp_f_tmp)+"."+ str(tmp_d_tmp)
+                    EventMesh.publish(constants.PROTOCOL.BTEMP2_SEND,[1,num])
+            if temp >= 37.3:
+                temperature_done_img.set_src("E:/static/temp_high.png")
+            else:
+                temperature_done_img.set_src("E:/static/temp_gif03.png")
+            temp_reset_btn_img.clear_flag(lv.obj.FLAG.HIDDEN)
+            self.point = 0
+            EventMesh.publish("set_temp_state",0)
+            
+            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 done_left_to_right(self):
+        self.timer.stop()
+        EventMesh.publish("set_temp_state",0)
+        EventMesh.publish(constants.EVENT.STOP_TEMP)
+        EventMesh.publish("return_prev_screen")
+
+    def btn8_press(self):
+        EventMesh.publish("watch_top_show")
         EventMesh.publish("load_screen", {"screen": "main_menu"})
 
+
+
+line_points = [{"x":0,"y":0},{"x":LCD_SIZE_W,"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
+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
+        self.is_sliding = 0
+        EventMesh.subscribe("show_history_spo2_data",self.show_history_spo2_data)
+
+        #self.Hsensor = None
+    def initialization(self):
+        self.is_sliding = 0
+        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, 10)
+            spo2_label.set_size(LCD_SIZE_W, 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, 45)
+            spo2_line_bg_img.set_size(230, 120)
+            spo2_line_bg_img.set_src("E:/static/spo2_line_bg.png")
+
+            
+            spo2_done_img = lv.img(spo2_screen)
+            spo2_done_img.set_pos(30, 220)
+            spo2_done_img.set_src("E:/static/spo2_gif04.png")
+
+            spo2_reset_btn_img = lv.img(spo2_screen)
+            spo2_reset_btn_img.set_pos(0, 177)
+            spo2_reset_btn_img.set_src("E:/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(LCD_SIZE_W,40)
+            spo2_start_label.set_pos(0,185)
+            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,45)
+            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,45)
+            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,45)
+            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,45)
+            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,45)
+            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,45)
+            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,45)
+            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, 34)
+            spo2_value_label.set_pos(110, 240)
+            spo2_value_label.set_text("- -%")
+            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.SHORT_CLICKED, None)
+            spo2_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
+                lv.EVENT.PRESSING, None)
+
+    def post_processor_after_initialization(self):
+        self.point = 0
+        self.is_sliding= 0
+        self.spo2_value = 0
+        EventMesh.publish("show_history_spo2_data")
+        self.start_init()
+        
+    def restart_up(self,e):
+
+        global spo2_value_label,heartrate_bpm_label,spo2_start_label,spo2_reset_btn_img
+        code = e.get_code()
+
+        #print("code!!!!!!!!",code,msg)
+        if code == lv.EVENT.PRESSING:
+            #print("PRESSING")
+            self.is_sliding += 1
+
+        elif  code == lv.EVENT.SHORT_CLICKED:
+            #utime.sleep_ms(10)
+            print("1self.is_sliding",self.is_sliding)
+            if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
+                self.is_sliding = 0
+                self.point = 0
+                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)
+                
+                
+                spo2_value_label.set_text("- -%")
+                spo2_start_label.set_text("正在测量中.")
+                EventMesh.publish("set_spo2_state",1)#2代表后台进入血氧测试
+                EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)
+            self.is_sliding =0
+       
+    def start_init(self):
+        self.point = 0
+        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)
+        
+        
+        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_spo2_data(self,event,msg):
+        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:
+            if len(read_data) != 0:
+                sort_new = {}
+                sort_new = sorted(read_data, key = lambda i: i['timeSec'],reverse = False)#按照时间戳进行排序 去掉最旧的一次数据如果满了五
+                count = len(sort_new)
+                if count != 0:
+                    for i in  range(count):
+                        print(int(sort_new[i]["spo2"]))
+                        # print("hr history read_data",read_data)
+                        value = int(sort_new[i]["spo2"])
+                        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,145-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,145-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,145-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,145-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,145-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,145-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,145-line_value)
+                            spo2_line7.set_size(10,line_value)
+               
+    def start_measure(self,*args):
+        EventMesh.publish("publish_message_event_ui",{"func":self.start_measure_do,"data":0})
+    def start_measure_do(self,data):    
+        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")#防止黑屏
+        WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
+        # if self.Hsensor == None:
+        #     self.Hsensor =  EventMesh.publish("get_Hsensor")
+        # c_data = self.Hsensor.get_test_data()#校准数据和工厂数据
+        # print("   佩戴状态\n红外:{}活体:{}佩戴:{}\n{},{} \n{},{} \n{},{}\n校准数据:{},{},{},{}\n漏光数据:{},{},{}"
+        #                                           .format(c_data[3],c_data[4],WEAR,c_data[5],c_data[6],c_data[7],c_data[8],c_data[9],c_data[10],
+        #                                                   c_data[11],c_data[12],c_data[13],c_data[14],c_data[0],c_data[1],c_data[2],))
+        # print("sop2:start_measure:point{}".format(self.point))
+        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("E:/static/spo2_gif03.png")
+
+        if self.point%4 == 1 :
+            spo2_start_label.set_text("正在测量中...")
+            spo2_done_img.set_src("E:/static/spo2_gif02.png")
+
+        if self.point%4 == 2 :
+            spo2_start_label.set_text("正在测量中.")
+            spo2_done_img.set_src("E:/static/spo2_gif01.png")
+        
+        if self.point%4 == 3 :
+            spo2_start_label.set_text("正在测量中.")
+            spo2_done_img.set_src("E:/static/spo2_gif04.png")
+
+
+
+        if self.point > 120 or (WEAR == 0 and self.point > 10): #测60s
+            self.timer.stop()
+            spo2_done_img.set_src("E:/static/spo2_gif04.png")
+            self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
+            if WEAR == 0:
+                self.spo2_value = 0
+                spo2_start_label.set_text("佩戴异常,点击重测")
+            else :
+                spo2_start_label.set_text("测量结束,点击重测")
+
+            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_value_label.set_text("{}%".format(self.spo2_value))
+                # heartrate_done_label.set_text("测量完成")
+            else:
+                spo2_value_label.set_text("- -%")
+                
+                
+            # self.show_history_data()
+
+            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 done_left_to_right(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)
+        EventMesh.publish("return_prev_screen")
+
     def btn8_press(self):
         EventMesh.publish("watch_top_show")
         EventMesh.publish("load_screen", {"screen": "main_menu"})
-##################################################################
-# -------------------------------------------language screen----------------------------------------------------------
+
+
+# -------------------------------------------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))
+
+style_line_blood_h = lv.style_t()
+style_line_blood_h.init()
+style_line_blood_h.set_line_width(5)
+style_line_blood_h.set_line_color(lv.color_make(247, 190, 30))
+
+style_line_blood_l = lv.style_t()
+style_line_blood_l.init()
+style_line_blood_l.set_line_width(5)
+style_line_blood_l.set_line_color(lv.color_make(240, 87, 13))
+
+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
+        self.is_sliding = 0
+        EventMesh.subscribe("show_history_hr_data",self.show_history_hr_data)
+
+    def initialization(self):
+        self.is_sliding =0
+        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, 10)
+            heartrate_label.set_size(LCD_SIZE_W, 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, 45)
+            heartrate_line_bg_img.set_size(230, 120)
+            heartrate_line_bg_img.set_src("E:/static/hr_line_bg.png")
+
+            
+            heartrate_done_img = lv.img(heartrate_screen)
+            heartrate_done_img.set_pos(20, 229)
+            heartrate_done_img.set_src("E:/static/hr_gif_03.png")
+
+            heartrate_reset_btn_img = lv.img(heartrate_screen)
+            heartrate_reset_btn_img.set_pos(0, 172)
+            heartrate_reset_btn_img.set_src("E:/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(LCD_SIZE_W,40)
+            heartrate_start_label.set_pos(0,182)
+            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,45)
+            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,45)
+            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,45)
+            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,45)
+            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,45)
+            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,45)
+            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,45)
+            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, 34)
+            heartrate_bpm_label.set_pos(120, 250)
+            heartrate_bpm_label.set_text("-- bpm")
+            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(LCD_SIZE_W, 34)
+            heartrate_done_label.set_pos(0, 250)
+            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.SHORT_CLICKED, None)
+            heartrate_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
+                lv.EVENT.PRESSING, 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.is_sliding = 0
+        self.heart_value = 0
+        EventMesh.publish("show_history_hr_data")
+        # self.show_history_data()
+        self.start_init()
+
+    def restart_up(self,e):
+        global heartrate_done_label,heartrate_bpm_label,heartrate_start_label,heartrate_reset_btn_img
+
+        code = e.get_code()
+        if code == lv.EVENT.PRESSING:
+            #print("PRESSING")
+            self.is_sliding += 1
+
+        elif  code == lv.EVENT.SHORT_CLICKED:
+            #utime.sleep_ms(10)
+            print("1self.is_sliding",self.is_sliding)
+            if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
+                self.is_sliding =0
+                self.point = 0
+                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.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)
+                        
+            self.is_sliding =0
+    def start_init(self):
+        self.point = 0
+        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.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_hr_data(self,event,msg):
+        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")
+        if read_data != None:
+            if len(read_data) != 0:
+                sort_new = {}
+                sort_new = sorted(read_data, key = lambda i: i['timeSec'],reverse = False)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条
+                # print("hr history sort_new",sort_new)
+                if sort_new != []:
+                    for i in range(len(sort_new)):
+                        print(int(sort_new[i]["hr"]))
+                        # print("hr history read_data",read_data)
+                        value = int(sort_new[i]["hr"])
+                        line_value = value - 30 #180-80 = 100 160-100 = 60
+                    
+                        if value <= 60:#18 36.6 -18 = 18
+                            line_value = int((value-30)*0.6)#
+                        elif value <= 90:
+                            line_value = int((value-60)*0.6)+18#127+15+1
+                        elif value < 120:
+                            line_value = int((value-90)*0.55)+18+18
+                        elif value == 120:
+                            line_value = int((value-90)*0.6)+18+18
+                        elif value < 150:
+                            line_value = int((value-120)*0.55)+18+18+18
+                        elif value == 150:
+                            line_value = int((value-120)*0.6)+18+18+18
+                        elif value < 180:
+                            line_value = int((value-150)*0.56)+18+18+18+18
+                        elif value == 180:
+                            line_value = int((value-150)*0.6)+18+18+18+18
+                        #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,145-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,145-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,145-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,145-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,145-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,145-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,145-line_value)
+                            hr_line7.set_size(10,line_value)
+    def start_measure(self,*args):            
+        EventMesh.publish("publish_message_event_ui",{"func":self.start_measure_do,"data":0})
+    def start_measure_do(self,data):
+        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)
+        WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
+        #print("heart WEAR:{}".format(WEAR))
+        # 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("E:/static/hr_gif_02.png")
+        if self.point%4 == 1 :
+            heartrate_start_label.set_text("正在测量中...")
+            heartrate_done_img.set_src("E:/static/hr_gif_01.png")
+        if self.point%4 == 2 :
+            heartrate_start_label.set_text("正在测量中.")
+            heartrate_done_img.set_src("E:/static/hr_gif_02.png")
+        
+        if self.point%4 == 3 :
+            heartrate_start_label.set_text("正在测量中.")
+            heartrate_done_img.set_src("E:/static/hr_gif_03.png")
+
+
+
+        if self.point > 120 or (WEAR == 0 and self.point > 10): #测60s或没佩戴
+            self.timer.stop()
+            heartrate_done_img.set_src("E:/static/hr_gif_03.png")
+            
+            self.heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
+            if WEAR == 0:
+                self.heart_value = 0
+                heartrate_start_label.set_text("佩戴异常,点击重测")
+            else :
+                heartrate_start_label.set_text("测量结束,点击重测")
+
+            if self.heart_value > 50:
+                EventMesh.publish("set_old_hr_data",self.heart_value)
+                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)
+            
+            
+            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.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 done_left_to_right(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)
+        EventMesh.publish("return_prev_screen")
+
+    def btn8_press(self):
+        EventMesh.publish("watch_top_show")
+        EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+    
+
+
+# -------------------------------------------blood pressure screen----------------------------------------------------------
+# 6-10高 昼高夜低  10 -14 平衡  14-18 高       18 -2低谷      2-6有回升 10%-20
+# 120-150 75-100  110-130 60-80 115-140 75-90  100-135 60-90 105-135 65-85 import urandom
+# >>> random_num = urandom.randint(0,30) 0-10 0-30 0-30
+# >>> print(random_num) 0-10 0-20 0-25 0-10 -25
+# 59
+# >>> 
+blood_pressure_screen = None
+blood_pressure_label = None
+blood_pressure_done_img = None
+blood_pressure_start_label = None
+blood_pressure_bpm_label = None
+blood_pressure_done_label = None
+blood_pressure_line_bg_img = None
+blood_pressure_line1_h = None
+blood_pressure_line1_l = None
+blood_pressure_line2_h = None
+blood_pressure_line2_l = None
+blood_pressure_line3_h = None
+blood_pressure_line3_l = None
+blood_pressure_line4_h = None
+blood_pressure_line4_l = None
+blood_pressure_line5_h = None
+blood_pressure_line5_l = None
+blood_pressure_line6_h = None
+blood_pressure_line6_l = None
+blood_pressure_line7_h = None
+blood_pressure_line7_l = None
+blood_pressure_reset_btn_img = None
+
+blood_pressure_line_points = [{"x":0,"y":0},{"x":0,"y":0}]
+
+
+blood_hline_points = [{"x":0,"y":0},{"x":0,"y":0}]
+blood_lline_points = [{"x":0,"y":0},{"x":0,"y":0}]
+class bloodpressureScreen(Screen):
+    NAME = "blood_pressure"
+
+
+    def __init__(self):
+        super().__init__()
+        self.meta = None
+        self.timer = osTimer()
+        self.point = 0
+        self.heart_value = 0
+        self.count_blood = 0
+        self.max_value = 0
+        self.min_value = 0
+        self.is_sliding = 0
+        self.blood_Maxvalue = 0
+        self.blood_Minvalue = 0
+        EventMesh.subscribe("show_history_blood_data",self.show_history_blood_data)
+        EventMesh.subscribe("get_blood_value",self.get_blood_value)
+
+    def initialization(self):
+        self.is_sliding =0
+        global blood_pressure_screen,blood_pressure_label,blood_pressure_reset_btn_img,blood_pressure_line1_h,blood_pressure_line1_l,\
+        blood_pressure_line2_h,blood_pressure_line2_l,blood_pressure_line3_h,blood_pressure_line3_l,blood_pressure_line4_h,blood_pressure_line4_l,\
+        blood_pressure_line5_h,blood_pressure_line5_l,blood_pressure_line6_h,blood_pressure_line6_l,blood_pressure_line7_h,blood_pressure_line7_l,\
+        blood_pressure_line_bg_img,blood_pressure_done_img ,blood_pressure_start_label,blood_pressure_bpm_label ,blood_pressure_done_label 
+        if blood_pressure_screen == None:
+            blood_pressure_screen = lv.obj()
+            print("blood_pressure_screen")
+            blood_pressure_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+            blood_pressure_label = lv.label(blood_pressure_screen)
+            blood_pressure_label.set_pos(0, 10)
+            blood_pressure_label.set_size(LCD_SIZE_W, 40)
+            blood_pressure_label.set_text("心率")
+            blood_pressure_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
+            blood_pressure_label.set_long_mode(lv.label.LONG.WRAP)
+            blood_pressure_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+            blood_pressure_line_bg_img = lv.img(blood_pressure_screen)
+            blood_pressure_line_bg_img.set_pos(5, 45)
+            blood_pressure_line_bg_img.set_size(230, 120)
+            blood_pressure_line_bg_img.set_src("E:/static/hr_line_bg.png")
+
+            
+            blood_pressure_done_img = lv.img(blood_pressure_screen)
+            blood_pressure_done_img.set_pos(20, 224)
+            blood_pressure_done_img.set_src("E:/static/blood_gif03.png")
+
+            blood_pressure_reset_btn_img = lv.img(blood_pressure_screen)
+            blood_pressure_reset_btn_img.set_pos(0, 172)
+            blood_pressure_reset_btn_img.set_src("E:/static/reset_hr_btn.png")
+            blood_pressure_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
+            blood_pressure_reset_btn_img.add_flag(lv.obj.FLAG.CLICKABLE)
+
+            blood_pressure_start_label = lv.label(blood_pressure_screen)
+            blood_pressure_start_label.set_size(LCD_SIZE_W,40)
+            blood_pressure_start_label.set_pos(0,182)
+            blood_pressure_start_label.set_text("正在测量中.")
+            blood_pressure_start_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
+            blood_pressure_start_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+            blood_pressure_start_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+
+           
+            
+            # lineh_value = max - 30 #180-80 = 100 160-100 = 60
+            # lineh_value = int(lineh_value*0.58)+1
+            # if lineh_value >= 100:
+            #     lineh_value = 100
+            
+            # linel_value = min - 30 #180-80 = 100 160-100 = 60
+            # linel_value = int(linel_value*0.58)+1
+            # if linel_value >= 100:
+            #     linel_value = 100
+            #print("hr hist",line_value)
+            blood_hline_points = [{"x":0,"y":0},{"x":0,"y":0}]
+            blood_lline_points =    [{"x":0,"y":0},{"x":0,"y":0}]
+
+            blood_pressure_line1_h = lv.line(blood_pressure_screen)
+            blood_pressure_line1_h.set_points(blood_hline_points,2)
+            blood_pressure_line1_h.set_pos(20,45)
+            blood_pressure_line1_h.set_size(0,0)
+            blood_pressure_line1_h.add_style(style_line_blood_h,0)
+
+            blood_pressure_line1_l = lv.line(blood_pressure_screen)
+            blood_pressure_line1_l.set_points(blood_lline_points,2)
+            blood_pressure_line1_l.set_pos(28,45)
+            blood_pressure_line1_l.set_size(0,0)
+            blood_pressure_line1_l.add_style(style_line_blood_l,0)
+
+            blood_pressure_line2_h = lv.line(blood_pressure_screen)
+            blood_pressure_line2_h.set_points(blood_hline_points,2)
+            blood_pressure_line2_h.set_pos(48,45)
+            blood_pressure_line2_h.set_size(0,0)
+            blood_pressure_line2_h.add_style(style_line_blood_h,0)
+
+            blood_pressure_line2_l = lv.line(blood_pressure_screen)
+            blood_pressure_line2_l.set_points(blood_lline_points,2)
+            blood_pressure_line2_l.set_pos(56,45)
+            blood_pressure_line2_l.set_size(0,0)
+            blood_pressure_line2_l.add_style(style_line_blood_l,0)
+
+            blood_pressure_line3_h = lv.line(blood_pressure_screen)
+            blood_pressure_line3_h.set_points(blood_hline_points,2)
+            blood_pressure_line3_h.set_pos(75,45)
+            blood_pressure_line3_h.set_size(0,0)
+            blood_pressure_line3_h.add_style(style_line_blood_h,0)
+
+            blood_pressure_line3_l = lv.line(blood_pressure_screen)
+            blood_pressure_line3_l.set_points(blood_lline_points,2)
+            blood_pressure_line3_l.set_pos(83,45)
+            blood_pressure_line3_l.set_size(0,0)
+            blood_pressure_line3_l.add_style(style_line_blood_l,0)
+
+
+            blood_pressure_line4_h = lv.line(blood_pressure_screen)
+            blood_pressure_line4_h.set_points(blood_hline_points,2)
+            blood_pressure_line4_h.set_pos(104,45)
+            blood_pressure_line4_h.set_size(0,0)
+            blood_pressure_line4_h.add_style(style_line_blood_h,0)
+
+            blood_pressure_line4_l = lv.line(blood_pressure_screen)
+            blood_pressure_line4_l.set_points(blood_lline_points,2)
+            blood_pressure_line4_l.set_pos(112,45)
+            blood_pressure_line4_l.set_size(0,0)
+            blood_pressure_line4_l.add_style(style_line_blood_l,0)
+
+            blood_pressure_line5_h = lv.line(blood_pressure_screen)
+            blood_pressure_line5_h.set_points(blood_hline_points,2)
+            blood_pressure_line5_h.set_pos(131,45)
+            blood_pressure_line5_h.set_size(0,0)
+            blood_pressure_line5_h.add_style(style_line_blood_h,0)
+
+            blood_pressure_line5_l = lv.line(blood_pressure_screen)
+            blood_pressure_line5_l.set_points(blood_lline_points,2)
+            blood_pressure_line5_l.set_pos(139,45)
+            blood_pressure_line5_l.set_size(0,0)
+            blood_pressure_line5_l.add_style(style_line_blood_l,0)
+
+            blood_pressure_line6_h = lv.line(blood_pressure_screen)
+            blood_pressure_line6_h.set_points(blood_hline_points,2)
+            blood_pressure_line6_h.set_pos(159,45)
+            blood_pressure_line6_h.set_size(0,0)
+            blood_pressure_line6_h.add_style(style_line_blood_h,0)
+
+            blood_pressure_line6_l = lv.line(blood_pressure_screen)
+            blood_pressure_line6_l.set_points(blood_lline_points,2)
+            blood_pressure_line6_l.set_pos(167,45)
+            blood_pressure_line6_l.set_size(0,0)
+            blood_pressure_line6_l.add_style(style_line_blood_l,0)
+
+            blood_pressure_line7_h = lv.line(blood_pressure_screen)
+            blood_pressure_line7_h.set_points(blood_hline_points,2)
+            blood_pressure_line7_h.set_pos(187,45)
+            blood_pressure_line7_h.set_size(0,0)
+            blood_pressure_line7_h.add_style(style_line_blood_h,0)
+
+            blood_pressure_line7_l = lv.line(blood_pressure_screen)
+            blood_pressure_line7_l.set_points(blood_lline_points,2)
+            blood_pressure_line7_l.set_pos(195,45)
+            blood_pressure_line7_l.set_size(0,0)
+            blood_pressure_line7_l.add_style(style_line_blood_l,0)
+
+
+            blood_pressure_bpm_label = lv.label(blood_pressure_screen)
+            blood_pressure_bpm_label.set_size(120, 34)
+            blood_pressure_bpm_label.set_pos(120, 250)
+            blood_pressure_bpm_label.set_text("--/--")
+            blood_pressure_bpm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+            blood_pressure_bpm_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+
+            blood_pressure_done_label = lv.label(blood_pressure_screen)
+            blood_pressure_done_label.set_size(LCD_SIZE_W, 34)
+            blood_pressure_done_label.set_pos(0, 250)
+            blood_pressure_done_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+            blood_pressure_done_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+            blood_pressure_done_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+
+            self.meta = blood_pressure_screen
+            blood_pressure_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
+                lv.EVENT.SHORT_CLICKED, None)
+            blood_pressure_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
+                lv.EVENT.PRESSING, None)
+            
+        blood_pressure_done_label.set_text(" ")
+        blood_pressure_bpm_label.set_text("--/--")
+        blood_pressure_start_label.set_text("正在测量中.")
+        self.count_blood = 0
+        self.max_value = 0
+        self.min_value = 0
+        self.blood_Maxvalue = 0
+        self.blood_Minvalue = 0
+
+    def post_processor_after_initialization(self):
+        self.point = 0
+        self.is_sliding = 0
+        self.heart_value = 0
+        self.count_blood = 0
+        EventMesh.publish("show_history_blood_data")
+        # self.show_history_data()
+        self.blood_Maxvalue = 0
+        self.blood_Minvalue = 0
+        self.start_init()
+    # 6-10高 昼高夜低  10 -14 平衡  14-18 高       18 -2低谷      2-6有回升 10%-20
+    # 120-150 75-95  110-130 60-85 115-140 70-90  100-130 60-80 105-135 65-85 import urandom
+    # >>> random_num = urandom.randint(0,30) 0-10 0-30 0-30
+    # >>> print(random_num) 0-10 0-20 0-25 0-10 -25
+    def get_blood_value(self,event,msg):
+        self.count_blood+=1
+        data = RTC().datetime()
+        hour = int(data[4])
+        # print("today timehour",type(hour),self.count_blood)
+        
+        if self.count_blood >= 10:
+            if hour >= 6 and hour <= 10:
+                if self.count_blood <= 15:
+                    random_numMax = urandom.randint(0, 10)
+                    random_numMin = urandom.randint(0, 6)
+                    blood_Maxold = 120+random_numMax
+                    blood_Minold = 75+random_numMin
+                    print("get_blood_value 6 -10",self.blood_Maxvalue,blood_Maxold)
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 120:
+                                self.blood_Maxvalue = 120
+                        else:
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 75:
+                                self.blood_Minvalue = 75
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+                        
+                    
+                    
+                elif self.count_blood <= 25:
+
+                    random_numMax = urandom.randint(0, 20)
+                    random_numMin = urandom.randint(0, 12)
+                    blood_Maxold = 120+random_numMax
+                    blood_Minold = 75+random_numMin
+                    print("get_blood_value 6 -10",self.blood_Maxvalue,blood_Maxold)
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 120:
+                                self.blood_Maxvalue = 120
+                        else:
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 75:
+                                self.blood_Minvalue = 75
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+                    
+                else:
+                    random_numMax = urandom.randint(0, 30)
+                    random_numMin = urandom.randint(0, 20)
+                    blood_Maxold = 120+random_numMax
+                    blood_Minold = 75+random_numMin
+                    print("get_blood_value 6 -10",self.blood_Maxvalue,blood_Maxold)
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 120:
+                                self.blood_Maxvalue = 120
+                        else:
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 75:
+                                self.blood_Minvalue = 75
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+                    
+                print("get_blood_value 6 -10",self.blood_Maxvalue,self.blood_Minvalue)
+                # return [self.blood_Maxvalue,self.blood_Minvalue]
+            elif hour > 10 and hour <= 14:#10-14(10,14]
+                if self.count_blood <= 15:
+                    random_numMax = urandom.randint(0, 6)
+                    random_numMin = urandom.randint(0, 8)
+                    blood_Maxold = 115+random_numMax
+                    blood_Minold = 60+random_numMin
+                    print("get_blood_value 10 -14",self.blood_Maxvalue,blood_Maxold)
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 110:
+                                self.blood_Maxvalue = 110
+                        else:
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 60:
+                                self.blood_Minvalue = 60
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+                   
+                elif self.count_blood <= 25:
+                    random_numMax = urandom.randint(0, 12)
+                    random_numMin = urandom.randint(0, 18)
+                    blood_Maxold = 115+random_numMax
+                    blood_Minold = 60+random_numMin
+                    print("get_blood_value 10 -14",self.blood_Maxvalue,blood_Maxold)
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 110:
+                                self.blood_Maxvalue = 110
+                        else:
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 60:
+                                self.blood_Minvalue = 60
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+                   
+                else:
+                    random_numMax = urandom.randint(0, 20)
+                    random_numMin = urandom.randint(0, 25)
+                    blood_Maxold = 115+random_numMax
+                    blood_Minold = 60+random_numMin
+                    print("get_blood_value 10 -14",self.blood_Maxvalue,blood_Maxold)
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 110:
+                                self.blood_Maxvalue = 110
+                        else:
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 60:
+                                self.blood_Minvalue = 60
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+                print("get_blood_value 10 -14",self.blood_Maxvalue,self.blood_Minvalue)
+                # return [self.blood_Maxvalue,self.blood_Minvalue]
+            elif hour > 14 and hour <= 18:#14-18
+                if self.count_blood <= 15:
+                    random_numMax = urandom.randint(0, 8)
+                    random_numMin = urandom.randint(0, 5)
+                    blood_Maxold = 115+random_numMax
+                    blood_Minold = 70+random_numMin
+                    print("get_blood_value 14 -18",self.blood_Maxvalue,blood_Maxold)
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 115:
+                                self.blood_Maxvalue = 115
+                        else:
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 70:
+                                self.blood_Minvalue = 70
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+
+                elif self.count_blood <= 25:
+                    random_numMax = urandom.randint(0, 16)
+                    random_numMin = urandom.randint(0, 10)
+                    blood_Maxold = 115+random_numMax
+                    blood_Minold = 70+random_numMin
+                    print("get_blood_value 14 -18",self.blood_Maxvalue,blood_Maxold)
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 115:
+                                self.blood_Maxvalue = 115
+                        else:
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 70:
+                                self.blood_Minvalue = 70
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+
+                    
+                else:
+                    random_numMax = urandom.randint(0, 25)
+                    random_numMin = urandom.randint(0, 15)
+                    blood_Maxold = 115+random_numMax
+                    blood_Minold = 70+random_numMin
+                    print("get_blood_value 14 -18",self.blood_Maxvalue,blood_Maxold)
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 115:
+                                self.blood_Maxvalue = 115
+                        else:
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 70:
+                                self.blood_Minvalue = 70
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+
+                    
+                print("get_blood_value 14 -18",self.blood_Maxvalue,self.blood_Minvalue)
+                # return [self.blood_Maxvalue,self.blood_Minvalue]
+            elif hour > 2 and hour < 6:#2-6
+                if self.count_blood <= 15:
+                
+                    random_numMax = urandom.randint(0, 10)
+                    random_numMin = urandom.randint(0, 6)
+                    blood_Maxold = 105+random_numMax
+                    blood_Minold = 65+random_numMin
+                    print("get_blood_value 2 -6",self.blood_Maxvalue,blood_Maxold)
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 105:
+                                self.blood_Maxvalue = 105
+                        else:
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 65:
+                                self.blood_Minvalue = 65
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+                    
+                elif self.count_blood <= 25:
+                    random_numMax = urandom.randint(0, 20)
+                    random_numMin = urandom.randint(0, 12)
+                    blood_Maxold = 105+random_numMax
+                    blood_Minold = 65+random_numMin
+                    print("get_blood_value 2 -6",self.blood_Maxvalue,blood_Maxold)
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 105:
+                                self.blood_Maxvalue = 105
+                        else:
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 65:
+                                self.blood_Minvalue = 65
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+
+                else:
+                    random_numMax = urandom.randint(0, 30)
+                    random_numMin = urandom.randint(0, 20)
+                    blood_Maxold = 105+random_numMax
+                    blood_Minold = 65+random_numMin
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 105:
+                                self.blood_Maxvalue = 105
+                        else:
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 65:
+                                self.blood_Minvalue = 65
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+
+                
+                print("get_blood_value 2 -6",self.blood_Maxvalue,self.blood_Minvalue)
+                # return [self.blood_Maxvalue,self.blood_Minvalue]
+            else:#18-2 19 20 21 22 23 1 2
+                if self.count_blood <= 15:
+                    
+                    random_numMax = urandom.randint(0, 10)
+                    random_numMin = urandom.randint(0, 6)
+                    blood_Maxold = 100+random_numMax
+                    blood_Minold = 60+random_numMin
+                    print("get_blood_value 18 -2",self.blood_Maxvalue,blood_Maxold)#90 11 135-100=135+  100-20=80+30 = 115+5=120 120-102=18 102-5+15 = 112
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 100:
+                                self.blood_Maxvalue = 100
+                        else:
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 60:
+                                self.blood_Minvalue = 60
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+                    
+                elif self.count_blood <= 25:
+                   
+                    random_numMax = urandom.randint(0, 20)
+                    random_numMin = urandom.randint(0, 12)
+                    blood_Maxold = 100+random_numMax
+                    blood_Minold = 60+random_numMin
+                    print("get_blood_value 18 -2",self.blood_Maxvalue,blood_Maxold)
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 100:
+                                self.blood_Maxvalue = 100
+                        else:# 113 120
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 60:
+                                self.blood_Minvalue = 60
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+
+                else:
+                    random_numMax = urandom.randint(0, 30)
+                    random_numMin = urandom.randint(0, 20)
+                    blood_Maxold = 100+random_numMax
+                    blood_Minold = 60+random_numMin
+                    print("get_blood_value 18 -2",self.blood_Maxvalue,blood_Maxold)
+                    if self.blood_Maxvalue != 0:
+                        if self.blood_Maxvalue > blood_Maxold:#130 100 110-5 =105 110-
+                            self.blood_Maxvalue = self.blood_Maxvalue-random_numMax
+                            if self.blood_Maxvalue <= 100:
+                                self.blood_Maxvalue = 100
+                        else:#125 100
+                            self.blood_Maxvalue=blood_Maxold
+                    else:
+                        self.blood_Maxvalue=blood_Maxold
+
+                    if self.blood_Minvalue != 0:
+                        if self.blood_Minvalue > blood_Minold:#130 100 110-5 =105 110-
+                            self.blood_Minvalue = self.blood_Minvalue-random_numMin
+                            if self.blood_Minvalue <= 60:
+                                self.blood_Minvalue = 60
+                        else:
+                            self.blood_Minvalue=blood_Minold
+                    else:
+                        self.blood_Minvalue=blood_Minold
+                print("get_blood_value 18 -2",self.blood_Maxvalue,self.blood_Minvalue)
+        return [self.blood_Maxvalue,self.blood_Minvalue]
+
+    def restart_up(self,e):
+        global blood_pressure_done_label,blood_pressure_bpm_label,blood_pressure_start_label,blood_pressure_reset_btn_img
+
+        code = e.get_code()
+        if code == lv.EVENT.PRESSING:
+            #print("PRESSING")
+            self.is_sliding += 1
+
+        elif  code == lv.EVENT.SHORT_CLICKED:
+            #utime.sleep_ms(10)
+            print("1self.is_sliding",self.is_sliding)
+            if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
+                self.is_sliding =0
+                self.point = 0
+                self.blood_Maxvalue = 0
+                self.blood_Minvalue = 0
+                self.count_blood = 0
+                self.timer.start(1*500, 1, self.start_measure)
+                blood_pressure_bpm_label.set_text("--/--")
+                if blood_pressure_reset_btn_img != None:
+                    blood_pressure_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
+                
+                self.heart_value = 0
+                
+                blood_pressure_done_label.set_text(" ")
+                blood_pressure_bpm_label.set_text("--/--")
+                blood_pressure_start_label.set_text("正在测量中.")
+                EventMesh.publish("set_hr_state",1)#1代表手动进入测试界面
+                
+                EventMesh.publish(constants.EVENT.START_HEART)
+                        
+            self.is_sliding =0
+    def start_init(self):
+        self.point = 0
+        self.blood_Maxvalue = 0
+        self.blood_Minvalue = 0
+        self.count_blood = 0
+        self.count_blood = 0
+        self.timer.start(1*500, 1, self.start_measure)
+        blood_pressure_bpm_label.set_text("--/--")
+        if blood_pressure_reset_btn_img != None:
+            blood_pressure_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
+        self.heart_value = 0
+        blood_pressure_done_label.set_text(" ")
+        blood_pressure_bpm_label.set_text("--/--")
+        blood_pressure_start_label.set_text("正在测量中.")
+        EventMesh.publish("set_hr_state",1)#1代表手动进入测试界面
+        
+        EventMesh.publish(constants.EVENT.START_HEART)
+        
+
+    def show_history_blood_data(self,event,msg):
+        global blood_pressure_screen,blood_pressure_label,blood_pressure_reset_btn_img,blood_pressure_line1_h,blood_pressure_line1_l,\
+        blood_pressure_line2_h,blood_pressure_line2_l,blood_pressure_line3_h,blood_pressure_line3_l,blood_pressure_line4_h,blood_pressure_line4_l,\
+        blood_pressure_line5_h,blood_pressure_line5_l,blood_pressure_line6_h,blood_pressure_line6_l,blood_pressure_line7_h,blood_pressure_line7_l,\
+        blood_pressure_line_bg_img,blood_pressure_done_img ,blood_pressure_start_label,blood_pressure_bpm_label ,blood_pressure_done_label 
+        read_data = {}
+        read_data = EventMesh.publish("get_old_blood_data")
+        print("get_old_blood_data",read_data)
+        # read_data = [{'timeSec': 4294938562, 'blMin': 67, 'blMax': 126}]
+        if read_data != None:
+            if len(read_data) != 0:
+                sort_new = {}
+                sort_new = sorted(read_data, key = lambda i: i['timeSec'],reverse = False)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条
+                # print("hr history sort_new",sort_new)
+                if sort_new != []:
+                    for i in range(len(sort_new)):
+                        print(int(sort_new[i]["blMax"]))
+                        print(int(sort_new[i]["blMin"]))
+                        print("hr history read_data",read_data)
+                        valueMax = int(sort_new[i]["blMax"])
+                        valueMin = int(sort_new[i]["blMin"])
+
+                        if valueMax < 30:
+                            valueMax = 30
+                        if valueMax >= 210:
+                            valueMax = 210
+                    
+                        line_Maxvalue = valueMax - 30 # 90*0.6=54 120*0.56 = 67 90 *0.56=50  60*0.56 = 33 
+                        if valueMax <= 60:#18 36.6 -18 = 18
+                            line_Maxvalue = int((valueMax-30)*0.6)#
+                        elif valueMax <= 90:
+                            line_Maxvalue = int((valueMax-60)*0.6)+18#127+15+1
+                        elif valueMax < 120:
+                            line_Maxvalue = int((valueMax-90)*0.55)+18+18
+                        elif valueMax == 120:
+                            line_Maxvalue = int((valueMax-90)*0.6)+18+18
+                        elif valueMax < 150:
+                            line_Maxvalue = int((valueMax-120)*0.55)+18+18+18
+                        elif valueMax == 150:
+                            line_Maxvalue = int((valueMax-120)*0.6)+18+18+18
+                        elif valueMax < 180:
+                            line_Maxvalue = int((valueMax-150)*0.56)+18+18+18+18
+                        elif valueMax == 180:
+                            line_Maxvalue = int((valueMax-150)*0.6)+18+18+18+18
+
+                        if line_Maxvalue >= 100:
+                            line_Maxvalue = 100
+                        
+                        print("line_Maxvalue",line_Maxvalue)
+
+                        if valueMin < 30:
+                            valueMin = 30
+                        if valueMin >= 210:
+                            valueMin = 210
+                    
+                        line_Minvalue = valueMin - 30 #180-80 = 100 160-100 = 60
+                    
+                        if valueMin <= 60:#18 36.6 -18 = 18
+                            line_Minvalue = int((valueMin-30)*0.6)#
+                        elif valueMin <= 90:
+                            line_Minvalue = int((valueMin-60)*0.6)+18#127+15+1
+                        elif valueMin < 120:
+                            line_Minvalue = int((valueMin-90)*0.55)+18+18
+                        elif valueMin == 120:
+                            line_Minvalue = int((valueMin-90)*0.6)+18+18
+                        elif valueMin < 150:
+                            line_Minvalue = int((valueMin-120)*0.55)+18+18+18
+                        elif valueMin == 150:
+                            line_Minvalue = int((valueMin-120)*0.6)+18+18+18
+                        elif valueMin < 180:
+                            line_Minvalue = int((valueMin-150)*0.56)+18+18+18+18
+                        elif valueMin == 180:
+                            line_Minvalue = int((valueMin-150)*0.6)+18+18+18+18
+                        #print("hr hist",line_value)
+                        blood_pressure_lineh_points = [{"x":0,"y":0},{"x":0,"y":line_Maxvalue}]
+                        blood_pressure_linel_points = [{"x":0,"y":0},{"x":0,"y":line_Minvalue}]
+                        if i == 0:
+                            blood_pressure_line1_h.set_points(blood_pressure_lineh_points,2)
+                            blood_pressure_line1_h.set_pos(20,145-line_Maxvalue)
+                            blood_pressure_line1_h.set_size(5,line_Maxvalue)
+
+                            blood_pressure_line1_l.set_points(blood_pressure_linel_points,2)
+                            blood_pressure_line1_l.set_pos(28,145-line_Minvalue)
+                            blood_pressure_line1_l.set_size(5,line_Minvalue)
+
+                        if i == 1:
+                            blood_pressure_line2_h.set_points(blood_pressure_lineh_points,2)
+                            blood_pressure_line2_h.set_pos(48,145-line_Maxvalue)
+                            blood_pressure_line2_h.set_size(5,line_Maxvalue)
+
+                            blood_pressure_line2_l.set_points(blood_pressure_linel_points,2)
+                            blood_pressure_line2_l.set_pos(56,145-line_Minvalue)
+                            blood_pressure_line2_l.set_size(5,line_Minvalue)
+
+                        if i == 2:
+                            blood_pressure_line3_h.set_points(blood_pressure_lineh_points,2)
+                            blood_pressure_line3_h.set_pos(75,145-line_Maxvalue)
+                            blood_pressure_line3_h.set_size(5,line_Maxvalue)
+
+                            blood_pressure_line3_l.set_points(blood_pressure_linel_points,2)
+                            blood_pressure_line3_l.set_pos(83,145-line_Minvalue)
+                            blood_pressure_line3_l.set_size(5,line_Minvalue)
+
+                        if i == 3:
+                            blood_pressure_line4_h.set_points(blood_pressure_lineh_points,2)
+                            blood_pressure_line4_h.set_pos(104,145-line_Maxvalue)
+                            blood_pressure_line4_h.set_size(5,line_Maxvalue)
+
+                            blood_pressure_line4_l.set_points(blood_pressure_linel_points,2)
+                            blood_pressure_line4_l.set_pos(112,145-line_Minvalue)
+                            blood_pressure_line4_l.set_size(5,line_Minvalue)
+
+                        if i == 4:
+                            blood_pressure_line5_h.set_points(blood_pressure_lineh_points,2)
+                            blood_pressure_line5_h.set_pos(131,145-line_Maxvalue)
+                            blood_pressure_line5_h.set_size(5,line_Maxvalue)
+
+                            blood_pressure_line5_l.set_points(blood_pressure_linel_points,2)
+                            blood_pressure_line5_l.set_pos(139,145-line_Minvalue)
+                            blood_pressure_line5_l.set_size(5,line_Minvalue)
+
+                        if i == 5:
+                            blood_pressure_line6_h.set_points(blood_pressure_lineh_points,2)
+                            blood_pressure_line6_h.set_pos(159,145-line_Maxvalue)
+                            blood_pressure_line6_h.set_size(5,line_Maxvalue)
+
+                            blood_pressure_line6_l.set_points(blood_pressure_linel_points,2)
+                            blood_pressure_line6_l.set_pos(167,145-line_Minvalue)
+                            blood_pressure_line6_l.set_size(5,line_Minvalue)
+
+                        if i == 6:
+                            blood_pressure_line7_h.set_points(blood_pressure_lineh_points,2)
+                            blood_pressure_line7_h.set_pos(187,145-line_Maxvalue)
+                            blood_pressure_line7_h.set_size(5,line_Maxvalue)
+
+                            blood_pressure_line7_l.set_points(blood_pressure_linel_points,2)
+                            blood_pressure_line7_l.set_pos(195,145-line_Minvalue)
+                            blood_pressure_line7_l.set_size(5,line_Minvalue)
+
+    def start_measure(self,*args):            
+        EventMesh.publish("publish_message_event_ui",{"func":self.start_measure_do,"data":0})
+    def start_measure_do(self,data):
+        global blood_pressure_screen,blood_pressure_label,blood_pressure_done_img ,blood_pressure_reset_btn_img,blood_pressure_start_label,blood_pressure_bpm_label ,\
+            blood_pressure_done_label
+        self.point = self.point + 1
+        EventMesh.publish("system_sleep_rest")#防止黑屏
+        blood_data = EventMesh.publish("get_blood_value")
+        if blood_data == None:
+            blood_data[0] = 0
+            blood_data[1] = 0
+        self.max_value = blood_data[0]
+        self.min_value = blood_data[1]
+        WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
+        #print("heart WEAR:{}".format(WEAR))
+        # print("self.heart_value:{}".format(self.heart_value))
+
+        if self.point%3 == 0 :
+            blood_pressure_start_label.set_text("正在测量中..")
+            blood_pressure_done_img.set_src("E:/static/blood_gif01.png")
+        if self.point%3 == 1 :
+            blood_pressure_start_label.set_text("正在测量中...")
+            blood_pressure_done_img.set_src("E:/static/blood_gif02.png")
+        if self.point%3 == 2 :
+            blood_pressure_start_label.set_text("正在测量中.")
+            blood_pressure_done_img.set_src("E:/static/blood_gif03.png")
+        
+        
+        if self.point > 80 or (WEAR == 0 and self.point > 10): #测40s或没佩戴
+            self.timer.stop()
+            blood_pressure_done_img.set_src("E:/static/blood_gif03.png")
+            if WEAR == 0:
+                blood_pressure_start_label.set_text("佩戴异常,点击重测")
+            else :
+                blood_pressure_start_label.set_text("测量结束,点击重测")
+
+            blood_pressure_reset_btn_img.clear_flag(lv.obj.FLAG.HIDDEN)
+
+            if (self.max_value != 0 or self.min_value != 0) and WEAR == 1:
+                EventMesh.publish("set_old_blood_data",[self.max_value,self.min_value])
+                blood_pressure_bpm_label.set_text("{}/{}".format(self.max_value,self.min_value))
+                # heartrate_done_label.set_text("测量完成")
+            else:
+                blood_pressure_bpm_label.set_text("--/--")
+            
+            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 done_left_to_right(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)
+        EventMesh.publish("return_prev_screen")
+
+    def btn8_press(self):
+        EventMesh.publish("watch_top_show")
+        EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+    
+
+
+
+
+
index 0f8a8c4..b0f7969 100644 (file)
@@ -430,36 +430,38 @@ MainMenu1_img_spo2_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
 MainMenu1_img_spo2_text.set_text("血氧")
 MainMenu1_img_spo2_text.add_style(style_font_youyuan_20, lv.PART.MAIN|lv.STATE.DEFAULT)
 
+
+
+MainMenu1_img_blood = lv.img(MainMenu1_two)
+MainMenu1_img_blood.set_size(THEME1_ICON_X,THEME1_ICON_Y)
+MainMenu1_img_blood.set_pos(MAIN1_ICON_X,140+5)
+MainMenu1_img_blood.set_src("U:/static/theme1/THEME1_BLOOD_PRESSURE.png")
+MainMenu1_img_blood.add_flag(lv.obj.FLAG.CLICKABLE)
+MainMenu1_img_blood.add_style(style_MainMenu_img_default, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+MainMenu1_img_blood_text = lv.label(MainMenu1_two)
+MainMenu1_img_blood_text.set_pos(int(5),int(232+5))
+MainMenu1_img_blood_text.set_size(LCD_SIZE_W//2-5,30)
+# MainMenu1_img_blood_text.add_flag(lv.obj.FLAG.CLICKABLE)
+MainMenu1_img_blood_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+MainMenu1_img_blood_text.set_text("血压")
+MainMenu1_img_blood_text.add_style(style_font_youyuan_20, lv.PART.MAIN|lv.STATE.DEFAULT)
+
 MainMenu1_img_temp = lv.img(MainMenu1_two)
 MainMenu1_img_temp.set_size(THEME1_ICON_X,THEME1_ICON_Y)
-MainMenu1_img_temp.set_pos(MAIN1_ICON_X,140+5)
+MainMenu1_img_temp.set_pos(MAIN1_ICON_X*2+85,140+5)
 MainMenu1_img_temp.set_src("U:/static/theme1/THEME1_TEMP.png")
 MainMenu1_img_temp.add_flag(lv.obj.FLAG.CLICKABLE)
 MainMenu1_img_temp.add_style(style_MainMenu_img_default, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 MainMenu1_img_temp_text = lv.label(MainMenu1_two)
-MainMenu1_img_temp_text.set_pos(int(5),int(232+5))
-MainMenu1_img_temp_text.set_size(LCD_SIZE_W//2-5,30)
+MainMenu1_img_temp_text.set_pos(int(115),int(232+5))
+MainMenu1_img_temp_text.set_size(LCD_SIZE_W//2,30)
 # MainMenu1_img_temp_text.add_flag(lv.obj.FLAG.CLICKABLE)
 MainMenu1_img_temp_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
 MainMenu1_img_temp_text.set_text("体温")
 MainMenu1_img_temp_text.add_style(style_font_youyuan_20, lv.PART.MAIN|lv.STATE.DEFAULT)
 
-MainMenu1_img_wechat = lv.img(MainMenu1_two)
-MainMenu1_img_wechat.set_size(THEME1_ICON_X,THEME1_ICON_Y)
-MainMenu1_img_wechat.set_pos(MAIN1_ICON_X*2+85,140+5)
-MainMenu1_img_wechat.set_src("U:/static/theme1/THEME1_WECHAT.png")
-MainMenu1_img_wechat.add_flag(lv.obj.FLAG.CLICKABLE)
-MainMenu1_img_wechat.add_style(style_MainMenu_img_default, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-MainMenu1_img_wechat_text = lv.label(MainMenu1_two)
-MainMenu1_img_wechat_text.set_pos(int(115),int(232+5))
-MainMenu1_img_wechat_text.set_size(LCD_SIZE_W//2,30)
-# MainMenu1_img_wechat_text.add_flag(lv.obj.FLAG.CLICKABLE)
-MainMenu1_img_wechat_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-MainMenu1_img_wechat_text.set_text("微聊")
-MainMenu1_img_wechat_text.add_style(style_font_youyuan_20, lv.PART.MAIN|lv.STATE.DEFAULT)
-
 
 MainMenu1_num+=1
 MainMenu1x+=1
@@ -471,66 +473,66 @@ label_text.set_pos(0, LCD_SIZE_H)
 label_text.set_size(0, 0)
 label_text.set_text("{}".format(MainMenu1_num))
 
-MainMenu1_img_alarm = lv.img(MainMenu1_three)
-MainMenu1_img_alarm.set_size(THEME1_ICON_X,THEME1_ICON_X)
-MainMenu1_img_alarm.set_pos(MAIN1_ICON_X,MAIN1_ICON_Y+5)
+MainMenu1_img_wechat = lv.img(MainMenu1_three)
+MainMenu1_img_wechat.set_size(THEME1_ICON_X,THEME1_ICON_X)
+MainMenu1_img_wechat.set_pos(MAIN1_ICON_X,MAIN1_ICON_Y+5)
+MainMenu1_img_wechat.set_src("U:/static/theme1/THEME1_WECHAT.png")
+MainMenu1_img_wechat.add_flag(lv.obj.FLAG.CLICKABLE)
+MainMenu1_img_wechat.add_style(style_MainMenu_img_default, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+MainMenu1_img_wechat_text = lv.label(MainMenu1_three)
+MainMenu1_img_wechat_text.set_pos(int(5),int(104+5))
+MainMenu1_img_wechat_text.set_size(LCD_SIZE_W//2-5,30)
+# MainMenu1_img_wechat_text.add_flag(lv.obj.FLAG.CLICKABLE)
+MainMenu1_img_wechat_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+MainMenu1_img_wechat_text.set_text("微聊")
+MainMenu1_img_wechat_text.add_style(style_font_youyuan_20, lv.PART.MAIN|lv.STATE.DEFAULT)
+
+MainMenu1_img_alarm= lv.img(MainMenu1_three)
+MainMenu1_img_alarm.set_size(THEME1_ICON_X,THEME1_ICON_Y)
+MainMenu1_img_alarm.set_pos(MAIN1_ICON_X*2+85,MAIN1_ICON_Y+5)
 MainMenu1_img_alarm.set_src("U:/static/theme1/THEME1_ALARM.png")
 MainMenu1_img_alarm.add_flag(lv.obj.FLAG.CLICKABLE)
 MainMenu1_img_alarm.add_style(style_MainMenu_img_default, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 MainMenu1_img_alarm_text = lv.label(MainMenu1_three)
-MainMenu1_img_alarm_text.set_pos(int(5),int(104+5))
-MainMenu1_img_alarm_text.set_size(LCD_SIZE_W//2-5,30)
+MainMenu1_img_alarm_text.set_pos(int(120),int(104+5))
+MainMenu1_img_alarm_text.set_size(LCD_SIZE_W//2,30)
 # MainMenu1_img_alarm_text.add_flag(lv.obj.FLAG.CLICKABLE)
 MainMenu1_img_alarm_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
 MainMenu1_img_alarm_text.set_text("闹钟")
 MainMenu1_img_alarm_text.add_style(style_font_youyuan_20, lv.PART.MAIN|lv.STATE.DEFAULT)
 
-MainMenu1_img_stopwatch= lv.img(MainMenu1_three)
+MainMenu1_img_stopwatch = lv.img(MainMenu1_three)
 MainMenu1_img_stopwatch.set_size(THEME1_ICON_X,THEME1_ICON_Y)
-MainMenu1_img_stopwatch.set_pos(MAIN1_ICON_X*2+85,MAIN1_ICON_Y+5)
+MainMenu1_img_stopwatch.set_pos(MAIN1_ICON_X,140+5)
 MainMenu1_img_stopwatch.set_src("U:/static/theme1/THEME1_STOPWATCH.png")
 MainMenu1_img_stopwatch.add_flag(lv.obj.FLAG.CLICKABLE)
 MainMenu1_img_stopwatch.add_style(style_MainMenu_img_default, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 MainMenu1_img_stopwatch_text = lv.label(MainMenu1_three)
-MainMenu1_img_stopwatch_text.set_pos(int(120),int(104+5))
-MainMenu1_img_stopwatch_text.set_size(LCD_SIZE_W//2,30)
-# MainMenu1_img_sms_text.add_flag(lv.obj.FLAG.CLICKABLE)
+MainMenu1_img_stopwatch_text.set_pos(int(5),int(232+5))
+MainMenu1_img_stopwatch_text.set_size(LCD_SIZE_W//2-5,30)
+# MainMenu1_img_stopwatch_text.add_flag(lv.obj.FLAG.CLICKABLE)
 MainMenu1_img_stopwatch_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
 MainMenu1_img_stopwatch_text.set_text("秒表")
 MainMenu1_img_stopwatch_text.add_style(style_font_youyuan_20, lv.PART.MAIN|lv.STATE.DEFAULT)
 
 MainMenu1_img_countdown = lv.img(MainMenu1_three)
 MainMenu1_img_countdown.set_size(THEME1_ICON_X,THEME1_ICON_Y)
-MainMenu1_img_countdown.set_pos(MAIN1_ICON_X,140+5)
+MainMenu1_img_countdown.set_pos(MAIN1_ICON_X*2+85,140+5)
 MainMenu1_img_countdown.set_src("U:/static/theme1/THEME1_COUNTDOWN.png")
 MainMenu1_img_countdown.add_flag(lv.obj.FLAG.CLICKABLE)
 MainMenu1_img_countdown.add_style(style_MainMenu_img_default, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 MainMenu1_img_countdown_text = lv.label(MainMenu1_three)
-MainMenu1_img_countdown_text.set_pos(int(5),int(232+5))
-MainMenu1_img_countdown_text.set_size(LCD_SIZE_W//2-5,30)
+MainMenu1_img_countdown_text.set_pos(int(120),int(232+5))
+MainMenu1_img_countdown_text.set_size(LCD_SIZE_W//2,30)
 # MainMenu1_img_countdown_text.add_flag(lv.obj.FLAG.CLICKABLE)
 MainMenu1_img_countdown_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
 MainMenu1_img_countdown_text.set_text("倒计时")
 MainMenu1_img_countdown_text.add_style(style_font_youyuan_20, lv.PART.MAIN|lv.STATE.DEFAULT)
 
-MainMenu1_img_toolbox = lv.img(MainMenu1_three)
-MainMenu1_img_toolbox.set_size(THEME1_ICON_X,THEME1_ICON_Y)
-MainMenu1_img_toolbox.set_pos(MAIN1_ICON_X*2+85,140+5)
-MainMenu1_img_toolbox.set_src("U:/static/theme1/THEME1_TOOLBOX.png")
-MainMenu1_img_toolbox.add_flag(lv.obj.FLAG.CLICKABLE)
-MainMenu1_img_toolbox.add_style(style_MainMenu_img_default, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-MainMenu1_img_toolbox_text = lv.label(MainMenu1_three)
-MainMenu1_img_toolbox_text.set_pos(int(120),int(232+5))
-MainMenu1_img_toolbox_text.set_size(LCD_SIZE_W//2,30)
-# MainMenu1_img_calllog_text.add_flag(lv.obj.FLAG.CLICKABLE)
-MainMenu1_img_toolbox_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-MainMenu1_img_toolbox_text.set_text("工具箱")
-MainMenu1_img_toolbox_text.add_style(style_font_youyuan_20, lv.PART.MAIN|lv.STATE.DEFAULT)
-
 MainMenu1_num+=1
 MainMenu1x+=1
 
@@ -540,15 +542,30 @@ label_text.set_pos(0, LCD_SIZE_H)
 label_text.set_size(0, 0)
 label_text.set_text("{}".format(MainMenu1_num))
 
+MainMenu1_img_toolbox = lv.img(MainMenu1_four)
+MainMenu1_img_toolbox.set_size(THEME1_ICON_X,THEME1_ICON_X)
+MainMenu1_img_toolbox.set_pos(MAIN1_ICON_X,MAIN1_ICON_Y+5)
+MainMenu1_img_toolbox.set_src("U:/static/theme1/THEME1_TOOLBOX.png")
+MainMenu1_img_toolbox.add_flag(lv.obj.FLAG.CLICKABLE)
+MainMenu1_img_toolbox.add_style(style_MainMenu_img_default, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+MainMenu1_img_toolbox_text = lv.label(MainMenu1_four)
+MainMenu1_img_toolbox_text.set_pos(int(5),int(109))
+MainMenu1_img_toolbox_text.set_size(LCD_SIZE_W//2-5,30)
+# MainMenu1_img_toolbox_text.add_flag(lv.obj.FLAG.CLICKABLE)
+MainMenu1_img_toolbox_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+MainMenu1_img_toolbox_text.set_text("工具箱")
+MainMenu1_img_toolbox_text.add_style(style_font_youyuan_20, lv.PART.MAIN|lv.STATE.DEFAULT)
+
 MainMenu1_img_setting = lv.img(MainMenu1_four)
 MainMenu1_img_setting.set_size(THEME1_ICON_X,THEME1_ICON_X)
-MainMenu1_img_setting.set_pos(MAIN1_ICON_X,MAIN1_ICON_Y+5)
+MainMenu1_img_setting.set_pos(MAIN1_ICON_X*2+85,MAIN1_ICON_Y+5)
 MainMenu1_img_setting.set_src("U:/static/theme1/THEME1_SETTING.png")
 MainMenu1_img_setting.add_flag(lv.obj.FLAG.CLICKABLE)
 MainMenu1_img_setting.add_style(style_MainMenu_img_default, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 MainMenu1_img_setting_text = lv.label(MainMenu1_four)
-MainMenu1_img_setting_text.set_pos(int(5),int(109))
+MainMenu1_img_setting_text.set_pos(int(120),int(104+5))
 MainMenu1_img_setting_text.set_size(LCD_SIZE_W//2-5,30)
 # MainMenu1_img_setting_text.add_flag(lv.obj.FLAG.CLICKABLE)
 MainMenu1_img_setting_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
@@ -557,6 +574,8 @@ MainMenu1_img_setting_text.add_style(style_font_youyuan_20, lv.PART.MAIN|lv.STAT
 
 MainMenu1_num+=1
 MainMenu1x+=1
+
+
 #主菜单风格2,单页
 class MainMenuScreen(Screen):
     NAME = "main_menu"
@@ -605,6 +624,9 @@ class MainMenuScreen(Screen):
         MainMenu1_img_temp.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "temperature")), lv.EVENT.SHORT_CLICKED, None)
         MainMenu1_img_temp.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "temperature")), lv.EVENT.PRESSING, None)
 
+        MainMenu1_img_blood.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "blood_pressure")), lv.EVENT.SHORT_CLICKED, None)
+        MainMenu1_img_blood.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "blood_pressure")), lv.EVENT.PRESSING, None)
+
         MainMenu1_img_wechat.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,  "wechat")), lv.EVENT.SHORT_CLICKED, None)
         MainMenu1_img_wechat.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "wechat")), lv.EVENT.PRESSING, None)
 
diff --git a/2.sdk/project/C06S/usr/static/theme1/THEME1_BLOOD_PRESSURE.png b/2.sdk/project/C06S/usr/static/theme1/THEME1_BLOOD_PRESSURE.png
new file mode 100644 (file)
index 0000000..efec587
Binary files /dev/null and b/2.sdk/project/C06S/usr/static/theme1/THEME1_BLOOD_PRESSURE.png differ