From: dxy15521469561 <1731678236@qq.com> Date: Fri, 28 Jul 2023 08:16:48 +0000 (+0800) Subject: 优化心率血压体温柱状图显示 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=50cbf9fe31a73775dbd26495acf55c25102a235e;p=mirrors%2FASR1603_G5.git 优化心率血压体温柱状图显示 --- 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 55b6dc96..0d4a63d1 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 @@ -659,7 +659,7 @@ class DeviceInfoManager(Abstract): self.mearsure_btn = 0 self.mearsure_timer = 0 - + self.usb = USB() self.usb.setCallback(self.usb_event_cb) self.log = LogAdapter(self.__class__.__name__) @@ -1986,9 +1986,9 @@ class gethistoryDataManager(Abstract): self.oldstep = 0 self.old_step = 0 self.read_data = {} - self.read_histroy_hr_data = {} - self.read_histroy_temp_data = {} - self.read_histroy_spo2_data = {} + self.read_histroy_hr_data = [] + self.read_histroy_temp_data = [] + self.read_histroy_spo2_data = [] check_json= ql_fs.path_exists("/ext/static/storage_file/config.json") if check_json == True : with open("/ext/static/storage_file/config.json","r") as fd:#音频文件编号 @@ -2027,6 +2027,10 @@ class gethistoryDataManager(Abstract): if check_spo2 == True : with open("/ext/static/storage_file/history_spo2.json","r") as fd:#音频文件编号 self.read_histroy_spo2_data = ujson.load(fd) + self.temp_value = 0 + + # self.read_histroy_hr_data=[{"timeSec":16789890,"value":90},{"timeSec":16789888,"value":78},{"timeSec":16789688,"value":68},{"timeSec":16789898,"value":58},\ + # {"timeSec":16789897,"value":88},{"timeSec":16789867,"value":77},{"timeSec":16789895,"value":70}] def post_processor_after_instantiation(self): EventMesh.subscribe("set_old_hr_data", self.save_hr_value) @@ -2059,18 +2063,24 @@ class gethistoryDataManager(Abstract): return self.read_histroy_temp_data def set_history_temp_value(self, event, msg): - 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 + self.temp_value = msg + date_tmp = utime.localtime() + time_tmp = utime.mktime(date_tmp) + if len(self.read_histroy_temp_data) >= 7: + sort_new = {} + sort_new = sorted(self.read_histroy_temp_data, key = lambda i: i['timeSec'],reverse = False)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条 + print(sort_new) + for i in range(len(self.read_histroy_temp_data)-1): + sort_new[i] = sort_new[i+1]#0==1 1== 2 2== 3 3==4 4==5 5==6 6==7 + self.read_histroy_temp_data[i] = sort_new[i] + pass + self.read_histroy_temp_data[6] = {"timeSec": time_tmp, "temp": self.temp_value} 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) - + self.read_histroy_temp_data.append({"timeSec": time_tmp, "temp": self.temp_value}) + with open("/ext/static/storage_file/history_spo2.json","w",encoding="utf-8") as fd: + ujson.dump(self.read_histroy_temp_data,fd) + #print(self.read_histroy_temp_data) def get_history_hr_value(self, event, msg): #近7次心率历史数据统计显示 return self.read_histroy_hr_data @@ -2087,21 +2097,28 @@ class gethistoryDataManager(Abstract): 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): - self.read_histroy_hr_data["0{}".format(i+1)] = self.read_histroy_hr_data["0{}".format(i+2)] - self.read_histroy_hr_data["07"] = msg + + date_tmp = utime.localtime() + time_tmp = utime.mktime(date_tmp) + if len(self.read_histroy_hr_data) >= 7: + sort_new = {} + sort_new = sorted(self.read_histroy_hr_data, key = lambda i: i['timeSec'],reverse = False)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条 + print(sort_new) + for i in range(len(self.read_histroy_hr_data)-1): + sort_new[i] = sort_new[i+1]#0==1 1== 2 2== 3 3==4 4==5 5==6 6==7 + self.read_histroy_hr_data[i] = sort_new[i] + pass + self.read_histroy_hr_data[6] = {"timeSec": time_tmp, "hr": self.oldHr} else: - self.read_histroy_hr_data["0{}".format(count+1)] = msg + self.read_histroy_hr_data.append({"timeSec": time_tmp, "hr": self.oldHr}) with open("/ext/static/storage_file/config.json","w",encoding="utf-8") as fd: ujson.dump(self.read_data,fd) 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) + #print(self.read_histroy_hr_data) + def get_hr_value(self, event, msg): return self.oldHr @@ -2112,20 +2129,27 @@ class gethistoryDataManager(Abstract): 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 + + date_tmp = utime.localtime() + time_tmp = utime.mktime(date_tmp) + if len(self.read_histroy_spo2_data) >= 7: + sort_new = {} + sort_new = sorted(self.read_histroy_spo2_data, key = lambda i: i['timeSec'],reverse = False)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条 + print(sort_new) + for i in range(len(self.read_histroy_spo2_data)-1): + sort_new[i] = sort_new[i+1]#0==1 1== 2 2== 3 3==4 4==5 5==6 6==7 + self.read_histroy_spo2_data[i] = sort_new[i] + pass + self.read_histroy_spo2_data[6] = {"timeSec": time_tmp, "spo2": self.oldspo2} else: - self.read_histroy_spo2_data["0{}".format(count+1)] = msg + self.read_histroy_spo2_data.append({"timeSec": time_tmp, "spo2": self.oldspo2}) with open("/ext/static/storage_file/config.json","w",encoding="utf-8") as fd: ujson.dump(self.read_data,fd) with open("/ext/static/storage_file/history_spo2.json","w",encoding="utf-8") as fd: ujson.dump(self.read_histroy_spo2_data,fd) + #print(self.read_histroy_spo2_data) 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 76e4bc84..53841815 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,13 +2040,15 @@ class HeartrateScreen(Screen): global hr_line1,hr_line2,hr_line3,hr_line4,hr_line5,hr_line6,hr_line7 read_data = {} read_data = EventMesh.publish("get_history_hr_value") - print("hr history read_data",read_data) - if read_data != None: - count = len(read_data) - if count != 0: - for i in range(count): - key = i+1 - value = read_data["0{}".format(key)] + 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: @@ -2090,7 +2092,7 @@ class HeartrateScreen(Screen): hr_line7.set_points(hr_line_points,2) hr_line7.set_pos(192,160-line_value) hr_line7.set_size(10,line_value) - + def start_measure(self,*args): global heartrate_screen,heartrate_label,heartrate_done_img ,heartrate_reset_btn_img,heartrate_start_label,heartrate_bpm_label ,heartrate_done_label @@ -3681,12 +3683,16 @@ class TemperatureScreen(Screen): global temp_line1,temp_line2,temp_line3,temp_line4,temp_line5,temp_line6,temp_line7 read_data = {} read_data = EventMesh.publish("get_history_temp_value") - print("hr history read_data",read_data) - if read_data != None: - count = len(read_data) + # print("hr get_history_temp_value",read_data) + 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): - value = read_data["0{}".format(i+1)] + # 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) @@ -3702,7 +3708,6 @@ class TemperatureScreen(Screen): value = 46 line_value = 100 - if line_value >= 100: line_value = 100 #print("hr hist",line_value) @@ -4143,12 +4148,16 @@ class Spo2Screen(Screen): global spo2_line1,spo2_line2,spo2_line3,spo2_line4,spo2_line5,spo2_line6,spo2_line7 read_data = {} read_data = EventMesh.publish("get_history_spo2_value") - print("hr get_history_spo2_value",read_data) - if read_data != None: - count = len(read_data) + # print("hr get_history_spo2_value",read_data) + 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): - value = read_data["0{}".format(i+1)] + 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: