优化心率血压体温柱状图显示
authordxy15521469561 <1731678236@qq.com>
Fri, 28 Jul 2023 08:16:48 +0000 (16:16 +0800)
committerdxy15521469561 <1731678236@qq.com>
Fri, 28 Jul 2023 08:16:48 +0000 (16:16 +0800)
2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui.py

index 55b6dc9..0d4a63d 100644 (file)
@@ -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
index 76e4bc8..5384181 100644 (file)
@@ -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: