体温界面更改
authordxy15521469561 <1731678236@qq.com>
Mon, 17 Jul 2023 09:25:41 +0000 (17:25 +0800)
committerdxy15521469561 <1731678236@qq.com>
Mon, 17 Jul 2023 09:25:41 +0000 (17:25 +0800)
2.sdk/project/K5/ext/static/spo2_gif01.png [new file with mode: 0644]
2.sdk/project/K5/ext/static/spo2_gif02.png [new file with mode: 0644]
2.sdk/project/K5/ext/static/spo2_gif03.png [new file with mode: 0644]
2.sdk/project/K5/ext/static/spo2_gif04.png [new file with mode: 0644]
2.sdk/project/K5/ext/static/spo2_line_bg.png [new file with mode: 0644]
2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui.py

diff --git a/2.sdk/project/K5/ext/static/spo2_gif01.png b/2.sdk/project/K5/ext/static/spo2_gif01.png
new file mode 100644 (file)
index 0000000..69e124e
Binary files /dev/null and b/2.sdk/project/K5/ext/static/spo2_gif01.png differ
diff --git a/2.sdk/project/K5/ext/static/spo2_gif02.png b/2.sdk/project/K5/ext/static/spo2_gif02.png
new file mode 100644 (file)
index 0000000..8fffc67
Binary files /dev/null and b/2.sdk/project/K5/ext/static/spo2_gif02.png differ
diff --git a/2.sdk/project/K5/ext/static/spo2_gif03.png b/2.sdk/project/K5/ext/static/spo2_gif03.png
new file mode 100644 (file)
index 0000000..23ee5d3
Binary files /dev/null and b/2.sdk/project/K5/ext/static/spo2_gif03.png differ
diff --git a/2.sdk/project/K5/ext/static/spo2_gif04.png b/2.sdk/project/K5/ext/static/spo2_gif04.png
new file mode 100644 (file)
index 0000000..60af683
Binary files /dev/null and b/2.sdk/project/K5/ext/static/spo2_gif04.png differ
diff --git a/2.sdk/project/K5/ext/static/spo2_line_bg.png b/2.sdk/project/K5/ext/static/spo2_line_bg.png
new file mode 100644 (file)
index 0000000..04fc347
Binary files /dev/null and b/2.sdk/project/K5/ext/static/spo2_line_bg.png differ
index c9c1fdf..2ae4706 100644 (file)
@@ -1907,6 +1907,7 @@ class gethistoryDataManager(Abstract):
         self.read_data = {}
         self.read_histroy_hr_data = {}
         self.read_histroy_temp_data = {}
+        self.read_histroy_spo2_data = {}
         check_json= ql_fs.path_exists("/ext/static/storage_file/config.json")
         if check_json == True :
             with open("/ext/static/storage_file/config.json","r") as fd:#音频文件编号
@@ -1936,11 +1937,16 @@ class gethistoryDataManager(Abstract):
             with open("/ext/static/storage_file/history_hr.json","r") as fd:#音频文件编号
                 self.read_histroy_hr_data = ujson.load(fd)
         
-        check_temp= ql_fs.path_exists("/ext/static/storage_file/history_hr.json")
+        check_temp= ql_fs.path_exists("/ext/static/storage_file/history_temp.json")
         if check_temp == True :
             with open("/ext/static/storage_file/history_temp.json","r") as fd:#音频文件编号
                 self.read_histroy_temp_data = ujson.load(fd)
 
+        check_spo2= ql_fs.path_exists("/ext/static/storage_file/history_spo2.json")
+        if check_spo2 == True :
+            with open("/ext/static/storage_file/history_spo2.json","r") as fd:#音频文件编号
+                self.read_histroy_spo2_data = ujson.load(fd)
+
     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)
@@ -1957,6 +1963,26 @@ class gethistoryDataManager(Abstract):
         EventMesh.subscribe("get_history_temp_value", self.get_history_temp_value)
         EventMesh.subscribe("set_history_temp_value", self.set_history_temp_value)
 
+        EventMesh.subscribe("get_history_spo2_value", self.get_history_spo2_value)
+        EventMesh.subscribe("set_history_spo2_value", self.set_history_spo2_value)
+
+    def get_history_spo2_value(self, event, msg): #近7次体温历史数据统计显示
+        return self.read_histroy_spo2_data
+
+    def set_history_spo2_value(self, event, msg): 
+        if msg > 0:
+            self.read_histroy_spo2_data = EventMesh.publish("get_history_spo2_value")
+            count = len(self.read_histroy_spo2_data)
+            if count >= 7:
+                for i in range(6):
+                    self.read_histroy_spo2_data["0{}".format(i+1)] = self.read_histroy_spo2_data["0{}".format(i+2)]
+                self.read_histroy_spo2_data["07"] = msg
+            else:
+                self.read_histroy_spo2_data["0{}".format(count+1)] = msg
+            with open("/ext/static/storage_file/history_spo2.json","w",encoding="utf-8") as fd:
+                ujson.dump(self.read_histroy_spo2_data,fd)
+
+
     def get_history_temp_value(self, event, msg): #近7次体温历史数据统计显示
         return self.read_histroy_temp_data
 
index 3aa1c6d..3b486e9 100644 (file)
@@ -1858,7 +1858,7 @@ class MsgDetailScreen(Screen):
 
             msg_detail_cont = lv.label(msg_detail_screen)
             msg_detail_cont.set_pos(0, 50)
-            msg_detail_cont.set_size(240, 200)
+            msg_detail_cont.set_size(240, 270)
             msg_detail_cont.set_long_mode(lv.label.LONG.WRAP)
             msg_detail_cont.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
             msg_detail_cont.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
@@ -3945,7 +3945,7 @@ class TemperatureScreen(Screen):
             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 * 2: #测2min
+        if self.point > 120 : #测2min
 
             if temp >= 37.3:
                 temperature_done_img.set_src("E:/static/temp_high.png")
@@ -4132,133 +4132,338 @@ spo2_label_1 = None
 spo2_line = None
 spo2_last_time = None
 spo2_last_value = None
+heartrate_screen = None
+heartrate_label = None
+heartrate_done_img = None
+heartrate_start_label = None
+heartrate_bpm_label = None
+heartrate_done_label = None
+heartrate_line_bg_img = None
+spo2_line1 = None
+spo2_line2 = None
+spo2_line3 = None
+spo2_line4 = None
+spo2_line5 = None
+spo2_line6 = None
+spo2_line7 = None
+spo2_reset_btn_img = None
+spo2_label = None
+spo2_line_bg_img = None
+spo2_done_img = None
+spo2_done_label = None
+spo2_value_label = None
+spo2_start_label = None
+
+style_line_red = lv.style_t()
+style_line_red.init()
+style_line_red.set_line_width(10)
+style_line_red.set_line_color(lv.color_make(0xff, 0x00, 0x00))
+
+spo2_line_points = [{"x":0,"y":0},{"x":0,"y":0}]
+
 class Spo2Screen(Screen):
     NAME = "spo2"
 
+
     def __init__(self):
         super().__init__()
         self.meta = None
         self.timer = osTimer()
         self.point = 0
         self.spo2_value = 0
-        self.last_spo2_value = 0
-        self.rtc = RTC()
 
     def initialization(self):
-        global spo2_screen ,spo2_label_0 ,spo2_done_img ,spo2_label ,spo2_label_1 ,spo2_line ,spo2_last_time,spo2_last_value 
+        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_0 = lv.label(spo2_screen)
-            spo2_label_0.set_pos(0, 10)
-            spo2_label_0.set_size(240, 40)
-            spo2_label_0.set_text("血氧")
-            spo2_label_0.set_long_mode(lv.label.LONG.WRAP)
-            spo2_label_0.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            spo2_label_0.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-            spo2_done_img = lv.img(spo2_screen)
-            spo2_done_img.set_pos(89, 50)
-            spo2_done_img.set_size(62, 84)
-            spo2_done_img.set_src("E:/static/IMAGE_SPO2_ONLY_TEST_DONE.png")
-
             spo2_label = lv.label(spo2_screen)
-            spo2_label.set_size(240,30)
-            spo2_label.set_pos(0,160)
-            spo2_label.set_text(" ")
-            spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+            spo2_label.set_pos(0, 20)
+            spo2_label.set_size(240, 40)
+            spo2_label.set_text("血氧")
+            spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
+            spo2_label.set_long_mode(lv.label.LONG.WRAP)
             spo2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 
-            spo2_label_1 = lv.label(spo2_screen)
-            spo2_label_1.set_size(240,40)
-            spo2_label_1.set_pos(0,200)
-            spo2_label_1.set_text("测量中.")
-            spo2_label_1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            spo2_label_1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+            spo2_line_bg_img = lv.img(spo2_screen)
+            spo2_line_bg_img.set_pos(5, 60)
+            spo2_line_bg_img.set_size(230, 120)
+            spo2_line_bg_img.set_src("E:/static/spo2_line_bg.png")
 
             
-            spo2_line = lv.line(spo2_screen)
-            spo2_line.set_points(line_points,2)
-            spo2_line.set_pos(0,240)
-            spo2_line.set_size(240,10)
-            spo2_line.add_style(style_line,0)
-
-            spo2_last_time = lv.label(spo2_screen)
-            spo2_last_time.set_size(240, 15)
-            spo2_last_time.set_pos(0, 250)
-            spo2_last_time.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            spo2_last_time.set_text(" ")
-            spo2_last_time.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-
-            spo2_last_value = lv.label(spo2_screen)
-            spo2_last_value.set_size(240, 15)
-            spo2_last_value.set_pos(0, 280)
-            spo2_last_value.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            spo2_last_value.set_text(" ")
-            spo2_last_value.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+            spo2_done_img = lv.img(spo2_screen)
+            spo2_done_img.set_pos(20, 240)
+            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, 192)
+            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(240,40)
+            spo2_start_label.set_pos(0,200)
+            spo2_start_label.set_text(" ")
+            spo2_start_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
+            spo2_start_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+            spo2_start_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+
+
+            spo2_line1 = lv.line(spo2_screen)
+            spo2_line1.set_points(spo2_line_points,2)
+            spo2_line1.set_pos(25,60)
+            spo2_line1.set_size(10,0)
+            spo2_line1.add_style(style_line_red,0)
+
+            spo2_line2 = lv.line(spo2_screen)
+            spo2_line2.set_points(spo2_line_points,2)
+            spo2_line2.set_pos(53,60)
+            spo2_line2.set_size(10,0)
+            spo2_line2.add_style(style_line_red,0)
+
+            spo2_line3 = lv.line(spo2_screen)
+            spo2_line3.set_points(spo2_line_points,2)
+            spo2_line3.set_pos(80,60)
+            spo2_line3.set_size(10,0)
+            spo2_line3.add_style(style_line_red,0)
+
+            spo2_line4 = lv.line(spo2_screen)
+            spo2_line4.set_points(spo2_line_points,2)
+            spo2_line4.set_pos(109,60)
+            spo2_line4.set_size(10,0)
+            spo2_line4.add_style(style_line_red,0)
+
+            spo2_line5 = lv.line(spo2_screen)
+            spo2_line5.set_points(spo2_line_points,2)
+            spo2_line5.set_pos(136,60)
+            spo2_line5.set_size(10,0)
+            spo2_line5.add_style(style_line_red,0)
+
+            spo2_line6 = lv.line(spo2_screen)
+            spo2_line6.set_points(spo2_line_points,2)
+            spo2_line6.set_pos(164,60)
+            spo2_line6.set_size(10,0)
+            spo2_line6.add_style(style_line_red,0)
+
+            spo2_line7 = lv.line(spo2_screen)
+            spo2_line7.set_points(spo2_line_points,2)
+            spo2_line7.set_pos(192,60)
+            spo2_line7.set_size(10,0)
+            spo2_line7.add_style(style_line_red,0)
+
+            spo2_value_label = lv.label(spo2_screen)
+            spo2_value_label.set_size(110, 40)
+            spo2_value_label.set_pos(130, 270)
+            spo2_value_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+            spo2_value_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+
+
             self.meta = spo2_screen
+            spo2_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
+                lv.EVENT.CLICKED, None)
 
+    def post_processor_after_initialization(self):
         self.point = 0
         self.spo2_value = 0
-        self.timer.start(1*1000, 1, self.start_measure)
+        self.show_history_data()
+        self.restart_up(0)
+
+    def restart_up(self,e):
+        global spo2_value_label,heartrate_bpm_label,spo2_start_label,spo2_reset_btn_img
+        self.timer.start(1*500, 1, self.start_measure)
+        if spo2_reset_btn_img != None:
+            spo2_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
+        self.point = 0
+        
+        spo2_value_label.set_text("- -%")
+        spo2_start_label.set_text("正在测量中.")
         EventMesh.publish("set_spo2_state",1)#2代表后台进入血氧测试
         EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)
-        self.last_spo2_value = EventMesh.publish("get_old_spo2_data")
-        spo2_label.set_text("--%")
-        if self.last_spo2_value == 0:
-            spo2_last_value.set_text(" ")
-        else:
-            spo2_last_value.set_text("{}%".format(self.last_spo2_value))
+
+    def show_history_data(self):
+        global spo2_line1,spo2_line2,spo2_line3,spo2_line4,spo2_line5,spo2_line6,spo2_line7
+        read_data = {}
+        read_data = EventMesh.publish("get_history_spo2_value")
+        print("hr get_history_spo2_value",read_data)
+        if read_data != None:
+            count = len(read_data)
+            if count != 0:
+                if count >= 7:
+                    for i in  range(count):
+                        value = read_data["0{}".format(i+1)]
+                        if value < 80:
+                            value = 80
+                        if value >= 100:
+                            value = 100
+                        if value <= 85:
+                            value = value - 80
+                            line_value = int(value*6)
+                        elif value <= 90:
+                            value = value-85
+                            line_value = int((17/5)*value)+30
+                        elif value <= 95:
+                            value = value-90
+                            line_value = int((21/5)*value)+47
+                        elif value <= 100:
+                            value = value-95
+                            line_value = int((16/5)*value)+68
+                        
+                       
+                        if line_value >= 100:
+                            line_value = 100
+                        #print("hr hist",line_value)
+                        hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}]
+                        if i == 0:
+                            spo2_line1.set_points(hr_line_points,2)
+                            spo2_line1.set_pos(25,160-line_value)
+                            spo2_line1.set_size(10,line_value)
+                        if i == 1:
+                            spo2_line2.set_points(hr_line_points,2)
+                            spo2_line2.set_pos(53,160-line_value)
+                            spo2_line2.set_size(10,line_value)
+
+                        if i == 2:
+                            spo2_line3.set_points(hr_line_points,2)
+                            spo2_line3.set_pos(80,160-line_value)
+                            spo2_line3.set_size(10,line_value)
+
+                        if i == 3:
+                            spo2_line4.set_points(hr_line_points,2)
+                            spo2_line4.set_pos(109,160-line_value)
+                            spo2_line4.set_size(10,line_value)
+
+                        if i == 4:
+                            spo2_line5.set_points(hr_line_points,2)
+                            spo2_line5.set_pos(136,160-line_value)
+                            spo2_line5.set_size(10,line_value)
+
+                        if i == 5:
+                            spo2_line6.set_points(hr_line_points,2)
+                            spo2_line6.set_pos(164,160-line_value)
+                            spo2_line6.set_size(10,line_value)
+
+                        if i == 6:
+                            spo2_line7.set_points(hr_line_points,2)
+                            spo2_line7.set_pos(192,160-line_value)
+                            spo2_line7.set_size(10,line_value)
+                else:
+                    value = read_data["0{}".format(count)]
+                    if value < 80:
+                            value = 80
+                    if value >= 100:
+                        value = 100
+
+                    if value <= 85:
+                        value = value - 80
+                        line_value = int(value*6)
+                    elif value <= 90:
+                        value = value-85
+                        line_value = int((17/5)*value)+30
+                    elif value <= 95:
+                        value = value-90
+                        line_value = int((21/5)*value)+47
+                    elif value <= 100:
+                        value = value-95
+                        line_value = int((16/5)*value)+68
+                    
+                    
+                    if line_value >= 100:
+                        line_value = 100
+                   #
+                    hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}]
+                    if count == 1:
+                        spo2_line1.set_points(hr_line_points,2)
+                        spo2_line1.set_pos(25,160-line_value)
+                        spo2_line1.set_size(10,line_value)
+                    if count == 2:
+                        spo2_line2.set_points(hr_line_points,2)
+                        spo2_line2.set_pos(53,160-line_value)
+                        spo2_line2.set_size(10,line_value)
+
+                    if count == 3:
+                        spo2_line3.set_points(hr_line_points,2)
+                        spo2_line3.set_pos(80,160-line_value)
+                        spo2_line3.set_size(10,line_value)
+
+                    if count == 4:
+                        spo2_line4.set_points(hr_line_points,2)
+                        spo2_line4.set_pos(109,160-line_value)
+                        spo2_line4.set_size(10,line_value)
+
+                    if count == 5:
+                        spo2_line5.set_points(hr_line_points,2)
+                        spo2_line5.set_pos(136,160-line_value)
+                        spo2_line5.set_size(10,line_value)
+
+                    if count == 6:
+                        spo2_line6.set_points(hr_line_points,2)
+                        spo2_line6.set_pos(164,160-line_value)
+                        spo2_line6.set_size(10,line_value)
+
+                    if count == 7:
+                        spo2_line7.set_points(hr_line_points,2)
+                        spo2_line7.set_pos(192,160-line_value)
+                        spo2_line7.set_size(10,line_value)      
+
 
     def start_measure(self,*args):
-        global spo2_screen ,spo2_label_0 ,spo2_done_img ,spo2_label ,spo2_label_1 ,spo2_line ,spo2_last_time,spo2_last_value 
+        global spo2_screen,spo2_label,spo2_start_label,spo2_value_label,spo2_done_img ,spo2_reset_btn_img 
         self.point = self.point + 1
         EventMesh.publish("system_sleep_rest")#防止黑屏
         self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-        if self.spo2_value == 0:
-            spo2_label.set_text("--%")
-        else:
-            spo2_label.set_text("{} %".format(self.spo2_value))
+        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_label_1.set_text("测量中..")
+            spo2_start_label.set_text("正在测量中..")
+            spo2_done_img.set_src("E:/static/spo2_gif03.png")
+
         if self.point%4 == 1 :
-            spo2_label_1.set_text("测量中...")
+            spo2_start_label.set_text("正在测量中...")
+            spo2_done_img.set_src("E:/static/spo2_gif02.png")
+
         if self.point%4 == 2 :
-            spo2_label_1.set_text("测量中....")
+            spo2_start_label.set_text("正在测量中.")
+            spo2_done_img.set_src("E:/static/spo2_gif01.png")
+        
         if self.point%4 == 3 :
-            spo2_label_1.set_text("测量中.")
+            spo2_start_label.set_text("正在测量中.")
+            spo2_done_img.set_src("E:/static/spo2_gif04.png")
 
-        if self.point > 60: #测20s
+
+
+        if self.point > 120: #测20s
+            spo2_done_img.set_src("E:/static/spo2_gif04.png")
             self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-            # print("ui self.spo2_value :{}".format(self.spo2_value))
-            if self.spo2_value > 85 and self.spo2_value != None:
+            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_label.set_text("{} %".format(self.spo2_value))
-            if self.spo2_value == 0:
-                spo2_label.set_text(" ")
-                spo2_label_1.set_text("退出,请重新测量")
-                self.last_spo2_value = EventMesh.publish("get_old_spo2_data")
-                spo2_last_value.set_text(" ")
-            else:
-                self.last_spo2_value = self.spo2_value
-                spo2_last_value.set_text("{}%".format(self.last_spo2_value))
-                spo2_label_1.set_text("测量完成")
-                time = EventMesh.publish("screen_get_time")
-                #print("time ",time)
-                rtc_time = self.rtc.datetime()
-                time_time ="  {}:{}".format("%02d"%(time[0][0]),"%02d"%(time[0][1]))#测量时间
-                spo2_last_time.set_text(str(rtc_time[0])+'/'+str(rtc_time[1])+'/'+str(rtc_time[2])+str(time_time))
+            spo2_reset_btn_img.clear_flag(lv.obj.FLAG.HIDDEN)
             
             
+            if self.spo2_value != 0:
+                spo2_start_label.set_text("测量结束,点击重测")
+                spo2_value_label.set_text("{}%".format(self.spo2_value))
+                # heartrate_done_label.set_text("测量完成")
+            else:
+                spo2_value_label.set_text("- - %")
+                spo2_start_label.set_text("测量异常,点击重测")
+                
+            self.show_history_data()
 
             self.timer.stop()
             self.point = 0
             EventMesh.publish("set_spo2_state",0)#0代表关闭测试
+            print("stop debug9")
             EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-            # spo2_last_time.set_text()
 
     def Close(self):
         self.timer.stop()
@@ -4277,6 +4482,162 @@ class Spo2Screen(Screen):
     def btn8_press(self):
         EventMesh.publish("watch_top_show")
         EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+
+
+
+# class Spo2Screen(Screen):
+#     NAME = "spo2"
+
+#     def __init__(self):
+#         super().__init__()
+#         self.meta = None
+#         self.timer = osTimer()
+#         self.point = 0
+#         self.spo2_value = 0
+#         self.last_spo2_value = 0
+#         self.rtc = RTC()
+
+#     def initialization(self):
+#         global spo2_screen ,spo2_label_0 ,spo2_done_img ,spo2_label ,spo2_label_1 ,spo2_line ,spo2_last_time,spo2_last_value 
+#         if spo2_screen == None:
+#             spo2_screen = lv.obj()
+#             print("spo2_screen")
+#             spo2_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+#             spo2_label_0 = lv.label(spo2_screen)
+#             spo2_label_0.set_pos(0, 10)
+#             spo2_label_0.set_size(240, 40)
+#             spo2_label_0.set_text("血氧")
+#             spo2_label_0.set_long_mode(lv.label.LONG.WRAP)
+#             spo2_label_0.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+#             spo2_label_0.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+#             spo2_done_img = lv.img(spo2_screen)
+#             spo2_done_img.set_pos(89, 50)
+#             spo2_done_img.set_size(62, 84)
+#             spo2_done_img.set_src("E:/static/IMAGE_SPO2_ONLY_TEST_DONE.png")
+
+#             spo2_label = lv.label(spo2_screen)
+#             spo2_label.set_size(240,30)
+#             spo2_label.set_pos(0,160)
+#             spo2_label.set_text(" ")
+#             spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+#             spo2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+#             spo2_label_1 = lv.label(spo2_screen)
+#             spo2_label_1.set_size(240,40)
+#             spo2_label_1.set_pos(0,200)
+#             spo2_label_1.set_text("测量中.")
+#             spo2_label_1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+#             spo2_label_1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+            
+#             spo2_line = lv.line(spo2_screen)
+#             spo2_line.set_points(line_points,2)
+#             spo2_line.set_pos(0,240)
+#             spo2_line.set_size(240,10)
+#             spo2_line.add_style(style_line,0)
+
+#             spo2_last_time = lv.label(spo2_screen)
+#             spo2_last_time.set_size(240, 15)
+#             spo2_last_time.set_pos(0, 250)
+#             spo2_last_time.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+#             spo2_last_time.set_text(" ")
+#             spo2_last_time.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+
+#             spo2_last_value = lv.label(spo2_screen)
+#             spo2_last_value.set_size(240, 15)
+#             spo2_last_value.set_pos(0, 280)
+#             spo2_last_value.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+#             spo2_last_value.set_text(" ")
+#             spo2_last_value.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+#             self.meta = spo2_screen
+
+#         self.point = 0
+#         self.spo2_value = 0
+#         self.timer.start(1*1000, 1, self.start_measure)
+#         EventMesh.publish("set_spo2_state",1)#2代表后台进入血氧测试
+#         EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)
+#         self.last_spo2_value = EventMesh.publish("get_old_spo2_data")
+#         spo2_label.set_text("--%")
+#         if self.last_spo2_value == 0:
+#             spo2_last_value.set_text(" ")
+#         else:
+#             spo2_last_value.set_text("{}%".format(self.last_spo2_value))
+
+#     def start_measure(self,*args):
+#         global spo2_screen ,spo2_label_0 ,spo2_done_img ,spo2_label ,spo2_label_1 ,spo2_line ,spo2_last_time,spo2_last_value 
+#         self.point = self.point + 1
+#         EventMesh.publish("system_sleep_rest")#防止黑屏
+#         self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
+#         if self.spo2_value == 0:
+#             spo2_label.set_text("--%")
+#         else:
+#             spo2_label.set_text("{} %".format(self.spo2_value))
+#         if self.point%4 == 0 :
+#             spo2_label_1.set_text("测量中..")
+#         if self.point%4 == 1 :
+#             spo2_label_1.set_text("测量中...")
+#         if self.point%4 == 2 :
+#             spo2_label_1.set_text("测量中....")
+#         if self.point%4 == 3 :
+#             spo2_label_1.set_text("测量中.")
+
+#         if self.point > 60: #测20s
+#             self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
+#             # print("ui self.spo2_value :{}".format(self.spo2_value))
+#             if self.spo2_value > 85 and self.spo2_value != None:
+#                 EventMesh.publish("set_old_spo2_data",self.spo2_value)
+#                 EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,self.spo2_value)
+#             spo2_label.set_text("{} %".format(self.spo2_value))
+#             if self.spo2_value == 0:
+#                 spo2_label.set_text(" ")
+#                 spo2_label_1.set_text("退出,请重新测量")
+#                 self.last_spo2_value = EventMesh.publish("get_old_spo2_data")
+#                 spo2_last_value.set_text(" ")
+#             else:
+#                 self.last_spo2_value = self.spo2_value
+#                 spo2_last_value.set_text("{}%".format(self.last_spo2_value))
+#                 spo2_label_1.set_text("测量完成")
+#                 time = EventMesh.publish("screen_get_time")
+#                 #print("time ",time)
+#                 rtc_time = self.rtc.datetime()
+#                 time_time ="  {}:{}".format("%02d"%(time[0][0]),"%02d"%(time[0][1]))#测量时间
+#                 spo2_last_time.set_text(str(rtc_time[0])+'/'+str(rtc_time[1])+'/'+str(rtc_time[2])+str(time_time))
+            
+            
+
+#             self.timer.stop()
+#             self.point = 0
+#             EventMesh.publish("set_spo2_state",0)#0代表关闭测试
+#             EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
+#             # spo2_last_time.set_text()
+
+#     def Close(self):
+#         self.timer.stop()
+#         get_hr_state = EventMesh.publish("get_hr_state")
+#         get_spo2_state = EventMesh.publish("get_spo2_state")
+#         if get_hr_state == 1 or get_spo2_state == 1:
+#             EventMesh.publish("set_spo2_state",0)#0代表关闭测试
+#             EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
+
+#     def done_return(self):
+#         EventMesh.publish("load_screen", {"screen": "health"})
+
+#     def btn1_release(self):
+#         EventMesh.publish("load_screen", {"screen": "health"})
+        
+#     def btn8_press(self):
+#         EventMesh.publish("watch_top_show")
+#         EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+
+
+
+
+
+
 # -------------------------------------------countdown screen----------------------------------------------------------
 countdown_screen = None 
 countdown_title = None