From: dxy15521469561 <1731678236@qq.com> Date: Mon, 24 Jul 2023 07:51:34 +0000 (+0800) Subject: 1.表盘心率固定值修复 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=48ee5a29d4cd0f3a1ba6c7fa87d92d4e5efe0d15;p=mirrors%2FASR1603_G5.git 1.表盘心率固定值修复 2.电池电流优化 3.体温心率血氧柱状图优化 --- diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py index 8bd7b320..9e655cc1 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py @@ -651,6 +651,11 @@ class DeviceInfoManager(Abstract): self.vbat_count = 0 + self.vbat_buf=[] + + self.curr_battery_level = 4200 + self.bat_count = 0 + self.usb = USB() self.usb.setCallback(self.usb_event_cb) self.log = LogAdapter(self.__class__.__name__) @@ -683,6 +688,8 @@ class DeviceInfoManager(Abstract): EventMesh.subscribe("about_get_iccid", self.get_ic_cid) EventMesh.subscribe("about_get_phonenum", self.get_phone_num) EventMesh.subscribe("screen_get_battery", self.get_battery) + EventMesh.subscribe("set_curr_battery_level", self.set_curr_battery_level) + EventMesh.subscribe("get_curr_battery_level", self.get_curr_battery_level) EventMesh.subscribe("get_fw_version", self.get_device_fw_version) EventMesh.subscribe("get_standby_time", self.get_standby_time) EventMesh.subscribe(constants.EVENT.GET_STEP, self.get_step_count) @@ -794,6 +801,22 @@ class DeviceInfoManager(Abstract): EventMesh.publish(constants.EVENT.START_LOCATION) #开始定位 EventMesh.publish(constants.EVENT.PUSH_STEP, self.get_step_count()) + temp = Power.getVbatt() + self.bat_count+=1 + self.vbat_buf.append(temp) + + curr_count = len(self.vbat_buf) + bat_total_value = 0 + for i in range(curr_count): + bat_total_value += self.vbat_buf[i] + + bat_total_value = bat_total_value//curr_count#一分钟更新一次电量 10个平均值 + + EventMesh.publish("set_curr_battery_level",bat_total_value) + # print("self.vbat_buf:{} curr_count :{} bat_total_value:{}".format(self.vbat_buf,curr_count,bat_total_value)) + if self.bat_count >= 10: + self.bat_count = 0 + self.vbat_buf = [] bat_tmp = EventMesh.publish("screen_get_battery") self.vbat_count+=10 @@ -888,7 +911,7 @@ class DeviceInfoManager(Abstract): get_temp_time = EventMesh.publish("get_temp_time") get_temp_state = EventMesh.publish("get_temp_state") hr_time = EventMesh.publish("get_time_hr_spo2")#获取时间是否大于0 - if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1 and battery[1] != 1: + if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1 and battery[0] != "1": # print("get_temp_time:{} self.temp_one_state:{}".format(get_temp_time,self.temp_one_state)) if get_temp_time != None:#定时测量体温 if get_temp_time > 0: @@ -1262,32 +1285,35 @@ class DeviceInfoManager(Abstract): self.HR_Onestate = 0 self.HR_OneTime = 0 else: - if self.get_hr_state != None and self.get_spo2_state != None: - if self.get_hr_state ==3 or self.get_spo2_state ==3:#3单次测量 - if self.get_hr_state != 0: + if battery[0] == "1": + get_hr_state = EventMesh.publish("get_hr_state") + get_spo2_state = EventMesh.publish("get_spo2_state") + if get_hr_state != None and get_spo2_state != None: + if get_hr_state == 2 or get_hr_state == 3: EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 print("stop debug8") EventMesh.publish(constants.EVENT.STOP_HEART) - elif self.get_spo2_state != 0: + elif get_spo2_state == 2 or get_spo2_state == 3: EventMesh.publish("set_spo2_state",0)#2代表后台进入测试 EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) - - if get_temp_time != None: - if get_temp_state != 0: - self.temp_one_state = 0 - self.temp_state = 0 - temp = EventMesh.publish(constants.EVENT.GET_TEMP) - 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) - EventMesh.publish("set_temp_state",0) - if temp != None: - if temp != 0: - EventMesh.publish("set_history_temp_value",temp) - EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp]) - EventMesh.publish(constants.EVENT.STOP_TEMP) + + if get_temp_time != None: + get_temp_state = EventMesh.publish("get_temp_state") + if get_temp_state == 2 or get_temp_state == 3: + self.temp_one_state = 0 + self.temp_state = 0 + temp = EventMesh.publish(constants.EVENT.GET_TEMP) + 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) + EventMesh.publish("set_temp_state",0) + if temp != None: + if temp != 0: + EventMesh.publish("set_history_temp_value",temp) + EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp]) + EventMesh.publish(constants.EVENT.STOP_TEMP) self.SENSOR_time = time_tmp self.HR_Onestate = 0 self.HR_OneTime = 0 @@ -1422,24 +1448,33 @@ class DeviceInfoManager(Abstract): else: charge_state = '0' - vbat = 0 - temp = Power.getVbatt() - if temp <= 3505: - vbat = 0 - elif temp <= 3699: - vbat = 20 #"E:/vbat_20.jpg" - elif temp <= 3772: - vbat = 40 #"E:/vbat_40.jpg" - elif temp <= 3882: - vbat = 60 #"E:/vbat_60.jpg" - elif temp <= 4070: - vbat = 80 #"E:/vbat_80.jpg" + #temp = Power.getVbatt() + temp = EventMesh.publish("get_curr_battery_level") + if temp != None : + if temp <= 3505: + vbat = 0 + elif temp <= 3699: + vbat = 20 #"E:/vbat_20.jpg" + elif temp <= 3772: + vbat = 40 #"E:/vbat_40.jpg" + elif temp <= 3882: + vbat = 60 #"E:/vbat_60.jpg" + elif temp <= 4070: + vbat = 80 #"E:/vbat_80.jpg" + else: + vbat = 100 #"E:/vbat_100.jpg" else: - vbat = 100 #"E:/vbat_100.jpg" + vbat = 100 result = [charge_state, vbat] return result + #Set the current average battery level + def set_curr_battery_level(self, event=None, msg=None): + self.curr_battery_level = msg + + def get_curr_battery_level(self, event=None, msg=None): + return self.curr_battery_level def get_device_fw_version(self, *args): ''' @@ -2008,42 +2043,43 @@ class gethistoryDataManager(Abstract): return self.read_histroy_spo2_data def set_history_spo2_value(self, event, msg): - if msg > 0: - self.read_histroy_spo2_data = EventMesh.publish("get_history_spo2_value") - count = len(self.read_histroy_spo2_data) - if count >= 7: - for i in range(6): - self.read_histroy_spo2_data["0{}".format(i+1)] = self.read_histroy_spo2_data["0{}".format(i+2)] - self.read_histroy_spo2_data["07"] = msg - else: - self.read_histroy_spo2_data["0{}".format(count+1)] = msg - with open("/ext/static/storage_file/history_spo2.json","w",encoding="utf-8") as fd: - ujson.dump(self.read_histroy_spo2_data,fd) + pass + def get_history_temp_value(self, event, msg): #近7次体温历史数据统计显示 return self.read_histroy_temp_data def set_history_temp_value(self, event, msg): - if msg > 0: - self.read_histroy_temp_data = EventMesh.publish("get_history_temp_value") - count = len(self.read_histroy_temp_data) - if count >= 7: - for i in range(6): - self.read_histroy_temp_data["0{}".format(i+1)] = self.read_histroy_temp_data["0{}".format(i+2)] - self.read_histroy_temp_data["07"] = msg - else: - self.read_histroy_temp_data["0{}".format(count+1)] = msg - with open("/ext/static/storage_file/history_temp.json","w",encoding="utf-8") as fd: - ujson.dump(self.read_histroy_temp_data,fd) + count = len(self.read_histroy_temp_data) + print(count) + if count >= 7: + for i in range(6): + self.read_histroy_temp_data["0{}".format(i+1)] = self.read_histroy_temp_data["0{}".format(i+2)] + self.read_histroy_temp_data["07"] = msg + else: + self.read_histroy_temp_data["0{}".format(count+1)] =msg + with open("/ext/static/storage_file/history_temp.json","w",encoding="utf-8") as fd: + ujson.dump(self.read_histroy_temp_data,fd) + def get_history_hr_value(self, event, msg): #近7次心率历史数据统计显示 return self.read_histroy_hr_data def set_history_hr_value(self, event, msg): + pass + + + + def save_hr_value(self, event, msg): if msg >= 50: - self.read_histroy_hr_data = EventMesh.publish("get_history_hr_value") + + self.read_data = EventMesh.publish("get_storage_data") + self.read_data["old_hr"] = msg + self.oldHr = msg + EventMesh.publish("set_storage_data", self.read_data) + count = len(self.read_histroy_hr_data) if count >= 7: for i in range(6): @@ -2051,18 +2087,13 @@ class gethistoryDataManager(Abstract): self.read_histroy_hr_data["07"] = msg else: self.read_histroy_hr_data["0{}".format(count+1)] = msg - with open("/ext/static/storage_file/history_hr.json","w",encoding="utf-8") as fd: - ujson.dump(self.read_histroy_hr_data,fd) - def save_hr_value(self, event, msg): - if msg >= 50: - self.read_data = EventMesh.publish("get_storage_data") - self.read_data["old_hr"] = msg - - EventMesh.publish("set_storage_data", self.read_data) with open("/ext/static/storage_file/config.json","w",encoding="utf-8") as fd: ujson.dump(self.read_data,fd) - self.oldHr = msg + + with open("/ext/static/storage_file/history_hr.json","w",encoding="utf-8") as fd: + ujson.dump(self.read_histroy_hr_data,fd) + print(self.read_histroy_temp_data) def get_hr_value(self, event, msg): return self.oldHr @@ -2071,11 +2102,22 @@ class gethistoryDataManager(Abstract): if msg >= 85: self.read_data = EventMesh.publish("get_storage_data") self.read_data["old_spo2"] = msg - + self.oldspo2 = msg EventMesh.publish("set_storage_data", self.read_data) + + count = len(self.read_histroy_spo2_data) + if count >= 7: + for i in range(6): + self.read_histroy_spo2_data["0{}".format(i+1)] = self.read_histroy_spo2_data["0{}".format(i+2)] + self.read_histroy_spo2_data["07"] = msg + else: + self.read_histroy_spo2_data["0{}".format(count+1)] = msg + with open("/ext/static/storage_file/config.json","w",encoding="utf-8") as fd: ujson.dump(self.read_data,fd) - self.oldspo2 = msg + + with open("/ext/static/storage_file/history_spo2.json","w",encoding="utf-8") as fd: + ujson.dump(self.read_histroy_spo2_data,fd) def get_spo2_value(self, event, msg): return self.oldspo2 diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui.py index 2b8038c9..17782166 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui.py @@ -2040,7 +2040,8 @@ class HeartrateScreen(Screen): if count != 0: if count >= 7: for i in range(count): - value = read_data["0{}".format(i+1)] + key = i+1 + value = read_data["0{}".format(key)] if value < 30: value = 30 if value >= 210: @@ -2134,7 +2135,7 @@ class HeartrateScreen(Screen): self.point = self.point + 1 EventMesh.publish("system_sleep_rest")#防止黑屏 self.heart_value = EventMesh.publish(constants.EVENT.GET_HEART) - print("self.heart_value:{}".format(self.heart_value)) + # print("self.heart_value:{}".format(self.heart_value)) if self.point >= 2: if self.heart_value < 40: self.heart_value = 0 @@ -2160,6 +2161,7 @@ class HeartrateScreen(Screen): if self.point > 120: #测20s + self.timer.stop() heartrate_done_img.set_src("E:/static/hr_gif_03.png") self.heart_value = EventMesh.publish(constants.EVENT.GET_HEART) if self.heart_value > 50: @@ -2174,10 +2176,7 @@ class HeartrateScreen(Screen): # heartrate_done_label.set_text("测量完成") else: heartrate_bpm_label.set_text("-- bpm") - self.show_history_data() - - self.timer.stop() self.point = 0 EventMesh.publish("set_hr_state",0)#0代表关闭测试 print("stop debug9") @@ -2859,7 +2858,7 @@ class OnCallScreen(Screen): def show_num(self): global on_call_screen_tab_label - #print("phone self.phone_num ",self.phone_num,self.phone_list) + print("phone self.phone_num ",self.phone_num,self.phone_list) on_call_screen_tab_label.set_size(200, 30) on_call_screen_tab_label.set_text(self.phone_num) def one(self,e): @@ -3746,9 +3745,9 @@ class TemperatureScreen(Screen): if line_value >= 100: line_value = 100 #print("hr hist",line_value) - hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}] + temp_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}] if i == 0: - temp_line1.set_points(hr_line_points,2) + temp_line1.set_points(temp_line_points,2) temp_line1.set_pos(29,150-line_value) temp_line1.set_size(10,line_value) if value >= 37.3: @@ -3756,7 +3755,7 @@ class TemperatureScreen(Screen): else: temp_line1.set_style_line_color(lv.color_make(35,141,255),0) if i == 1: - temp_line2.set_points(hr_line_points,2) + temp_line2.set_points(temp_line_points,2) temp_line2.set_pos(57,150-line_value) temp_line2.set_size(10,line_value) if value >= 37.3: @@ -3765,7 +3764,7 @@ class TemperatureScreen(Screen): temp_line2.set_style_line_color(lv.color_make(35,141,255),0) if i == 2: - temp_line3.set_points(hr_line_points,2) + temp_line3.set_points(temp_line_points,2) temp_line3.set_pos(84,150-line_value) temp_line3.set_size(10,line_value) if value >= 37.3: @@ -3773,7 +3772,7 @@ class TemperatureScreen(Screen): else: temp_line3.set_style_line_color(lv.color_make(35,141,255),0) if i == 3: - temp_line4.set_points(hr_line_points,2) + temp_line4.set_points(temp_line_points,2) temp_line4.set_pos(112,150-line_value) temp_line4.set_size(10,line_value) if value >= 37.3: @@ -3781,7 +3780,7 @@ class TemperatureScreen(Screen): else: temp_line4.set_style_line_color(lv.color_make(35,141,255),0) if i == 4: - temp_line5.set_points(hr_line_points,2) + temp_line5.set_points(temp_line_points,2) temp_line5.set_pos(140,150-line_value) temp_line5.set_size(10,line_value) if value >= 37.3: @@ -3790,7 +3789,7 @@ class TemperatureScreen(Screen): temp_line5.set_style_line_color(lv.color_make(35,141,255),0) if i == 5: - temp_line6.set_points(hr_line_points,2) + temp_line6.set_points(temp_line_points,2) temp_line6.set_pos(167,150-line_value) temp_line6.set_size(10,line_value) if value >= 37.3: @@ -3799,7 +3798,7 @@ class TemperatureScreen(Screen): temp_line6.set_style_line_color(lv.color_make(35,141,255),0) if i == 6: - temp_line7.set_points(hr_line_points,2) + temp_line7.set_points(temp_line_points,2) temp_line7.set_pos(195,150-line_value) temp_line7.set_size(10,line_value) if value >= 37.3: @@ -3827,9 +3826,9 @@ class TemperatureScreen(Screen): if line_value >= 100: line_value = 100 # - hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}] + temp_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}] if count == 1: - temp_line1.set_points(hr_line_points,2) + temp_line1.set_points(temp_line_points,2) temp_line1.set_pos(29,150-line_value) temp_line1.set_size(10,line_value) if value >= 37.3: @@ -3838,7 +3837,7 @@ class TemperatureScreen(Screen): temp_line1.set_style_line_color(lv.color_make(35,141,255),0) if count == 2: - temp_line2.set_points(hr_line_points,2) + temp_line2.set_points(temp_line_points,2) temp_line2.set_pos(57,150-line_value) temp_line2.set_size(10,line_value) if value >= 37.3: @@ -3847,7 +3846,7 @@ class TemperatureScreen(Screen): temp_line2.set_style_line_color(lv.color_make(35,141,255),0) if count == 3: - temp_line3.set_points(hr_line_points,2) + temp_line3.set_points(temp_line_points,2) temp_line3.set_pos(84,150-line_value) temp_line3.set_size(10,line_value) if value >= 37.3: @@ -3857,7 +3856,7 @@ class TemperatureScreen(Screen): if count == 4: - temp_line4.set_points(hr_line_points,2) + temp_line4.set_points(temp_line_points,2) temp_line4.set_pos(112,150-line_value) temp_line4.set_size(10,line_value) if value >= 37.3: @@ -3866,7 +3865,7 @@ class TemperatureScreen(Screen): temp_line4.set_style_line_color(lv.color_make(35,141,255),0) if count == 5: - temp_line5.set_points(hr_line_points,2) + temp_line5.set_points(temp_line_points,2) temp_line5.set_pos(140,150-line_value) temp_line5.set_size(10,line_value) if value >= 37.3: @@ -3875,7 +3874,7 @@ class TemperatureScreen(Screen): temp_line5.set_style_line_color(lv.color_make(35,141,255),0) if count == 6: - temp_line6.set_points(hr_line_points,2) + temp_line6.set_points(temp_line_points,2) temp_line6.set_pos(167,150-line_value) temp_line6.set_size(10,line_value) if value >= 37.3: @@ -3884,7 +3883,7 @@ class TemperatureScreen(Screen): temp_line6.set_style_line_color(lv.color_make(35,141,255),0) if count == 7: - temp_line7.set_points(hr_line_points,2) + temp_line7.set_points(temp_line_points,2) temp_line7.set_pos(195,150-line_value) temp_line7.set_size(10,line_value) if value >= 37.3: @@ -3899,7 +3898,7 @@ class TemperatureScreen(Screen): temp = EventMesh.publish(constants.EVENT.GET_TEMP) tmp = str(temp).split('.')[0] + '.' + str(temp).split('.')[1][:1]#获取小数点后一位 舍去小数点最后一位 - print("self.temp:{}".format(temp)) + # print("self.temp:{}".format(temp)) if self.point >= 2: if temp != 0: temperature_bpm_label.set_text("{}".format(tmp)) @@ -3933,7 +3932,7 @@ class TemperatureScreen(Screen): temperature_keep_label.set_text("体温正常") temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT) if self.point > 120 : #测2min - + self.timer.stop() if temp >= 37.3: temperature_done_img.set_src("E:/static/temp_high.png") else: @@ -3943,7 +3942,7 @@ class TemperatureScreen(Screen): EventMesh.publish("set_history_temp_value",temp) self.show_history_data() - self.timer.stop() + self.point = 0 EventMesh.publish("set_temp_state",0) EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp]) @@ -4420,6 +4419,7 @@ class Spo2Screen(Screen): if self.point > 120: #测20s + self.timer.stop() spo2_done_img.set_src("E:/static/spo2_gif04.png") self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN) if self.spo2_value >= 85: @@ -4439,7 +4439,6 @@ class Spo2Screen(Screen): self.show_history_data() - self.timer.stop() self.point = 0 EventMesh.publish("set_spo2_state",0)#0代表关闭测试 print("stop debug9") diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py index 2f6b7c18..50af606f 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py @@ -266,7 +266,7 @@ class WatchFace1(): pass def __oldHrValue(self, event, msg): - watchface1_HB_span.set_text("120") + watchface1_HB_span.set_text(str(msg)) def __oldSpo2Value(self, event, msg): watchface1_SPO2_span.set_text(str(msg))