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:
-# -------------------------------------------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
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----------------------------------------------------------
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
+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"
# 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)
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"})
+
+
+
+
+
+
+