D10:
authordxy15521469561 <1731678236@qq.com>
Thu, 7 Dec 2023 07:07:58 +0000 (15:07 +0800)
committerdxy15521469561 <1731678236@qq.com>
Thu, 7 Dec 2023 07:07:58 +0000 (15:07 +0800)
血压 血糖协议对接测试
C06S:
表盘界面优化

12 files changed:
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/appWechat.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_main_menu.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_setting.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_1.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py

index 1f3a4f3..a81ca62 100644 (file)
@@ -168,7 +168,7 @@ class WechatScreen(Screen):
             wechat_obj.add_flag(lv.obj.FLAG.HIDDEN)
             wechat_btn.add_flag(lv.obj.FLAG.CLICKABLE)
             wechat_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.play_label_cb(e)),
-            lv.EVENT.CLICKED, None)
+            lv.EVENT.SHORT_CLICKED, None)
             self.wechat_list_dict.append({"num":i,"wechat_obj":wechat_obj,"wechat_btn":wechat_btn,"_btn_label1":_btn_label1,"_btn_label2":_btn_label2,"_btn_img":_btn_img})
 
         EventMesh.subscribe("wechat_updata_list_show", self.wechat_updata_list_show)
@@ -461,7 +461,7 @@ class WechatScreen(Screen):
                 buf = bytearray(ql_fs.path_getsize(path))
                 fd.readinto(buf)
                 senddata = [self.countdown_old,buf]
-                EventMesh.publish(constants.PROTOCOL.TK_SEND,senddata)
+                EventMesh.publish(constants.PROTOCOL.TKS_SEND,senddata)
             
             
         Wechat_log("sending2") 
index e1391a1..22467e6 100644 (file)
@@ -1064,6 +1064,7 @@ class DeviceInfoManager(Abstract):
                     EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
                 elif get_bp_state > 1:
                     EventMesh.publish("set_bp_state",0)#2代表后台进入测试
+                    self.old_bp_time = 0
                     EventMesh.publish(constants.EVENT.STOP_HEART)
 
         
@@ -1071,6 +1072,17 @@ class DeviceInfoManager(Abstract):
             get_hr_state = EventMesh.publish("get_hr_state")
             get_spo2_state = EventMesh.publish("get_spo2_state")
             get_bp_state  = EventMesh.publish("get_bp_state")
+
+            if get_hr_state == None:
+                get_hr_state = 0
+            
+            if get_spo2_state == None:
+                get_spo2_state = 0
+
+            if get_bp_state == None:
+                get_bp_state = 0
+
+
             if get_bp_state != None:
                 if get_bp_state == 3:
                     self.old_bp_time+=1
@@ -1229,114 +1241,218 @@ class DeviceInfoManager(Abstract):
                             EventMesh.publish(constants.EVENT.STOP_TEMP)
                             print("AUTO once temp:{} tmp_f:{} tmp_f_tmp:{} tmp_d:{} tmp_d_tmp:{}".format(temp,tmp_f,tmp_f_tmp,tmp_d,tmp_d_tmp)) 
                             EventMesh.publish("set_temp_state",0)
-                            
-            self.mearsure_btn = int(hr_time[0])
-            self.mearsure_timer = int(hr_time[1])
-            if self.mearsure_btn != None and self.mearsure_timer != None:
-                if get_hr_state != None and get_bp_state != None:
-                    if get_bp_state == 0:
-                        print("hr......01....{} {}\r\n".format(hr_time[0],hr_time[1]))
-                        if self.mearsure_btn > 0:
-                            if self.mearsure_timer > 0:
-                                #print("get_hr_state:{} get_spo2_state:{} self.old_time:{} mearsure_timer:{}".format(self.get_hr_state,self.get_spo2_state,self.old_time,mearsure_timer))
-                                if self.get_hr_state != 1 and self.get_spo2_state != 1:
-                                    if self.get_hr_state == 0 and self.get_spo2_state == 0:
-                                        if self.HR_state == 0 or self.HR_state == 3:
+
+            if hr_time[0] !=  None:  
+                self.mearsure_btn = int(hr_time[0])
+                self.mearsure_timer = int(hr_time[1])
+                if self.mearsure_btn != None and self.mearsure_timer != None:
+                    if get_hr_state != None and get_bp_state != None:
+                        if get_bp_state == 0:
+                            print("hr......01....{} {}\r\n".format(hr_time[0],hr_time[1]))
+                            if self.mearsure_btn > 0:
+                                if self.mearsure_timer > 0:
+                                    #print("get_hr_state:{} get_spo2_state:{} self.old_time:{} mearsure_timer:{}".format(self.get_hr_state,self.get_spo2_state,self.old_time,mearsure_timer))
+                                    if self.get_hr_state != 1 and self.get_spo2_state != 1:
+                                        if self.get_hr_state == 0 and self.get_spo2_state == 0:
+                                            if self.HR_state == 0 or self.HR_state == 3:
+                                                self.HR_Onestate = 0
+                                                self.HR_OneTime = 0
+                                        
+                                        if self.old_time != self.mearsure_timer:#重复修改测量间隔时间
+                                            self.SENSOR_time = time_tmp#防止改变时间的时候正在开启测量突然10s就停止测量
+                                            if self.get_hr_state == 2 and self.HR_state == 1:#自动检测的心率还在测量立马关了测试
+                                                heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
+                                                if heart_value > 50 and heart_value != None:
+                                                    EventMesh.publish("set_old_hr_data",heart_value)
+                                                    EventMesh.publish("set_history_hr_value",heart_value)
+                                                    EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)
+                                                print("stop debug1")
+                                                EventMesh.publish(constants.EVENT.STOP_HEART)
+                                                self.HR_state = 0
+                                            elif self.get_spo2_state == 2 and self.HR_state == 2:
+                                                self.HR_state = 0
+                                                spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
+                                                if spo2_value > 85 and spo2_value != None:
+                                                    EventMesh.publish("set_old_spo2_data",spo2_value)
+                                                    EventMesh.publish("set_history_spo2_value",spo2_value)
+                                                    EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
+                                                EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
+                                        self.old_time = self.mearsure_timer
+
+                                        if self.HR_state == 3 or self.HR_state == 0:#
+                                            if (time_tmp - self.SENSOR_time) >= self.mearsure_timer:
+                                                if self.get_spo2_state == 3 or self.get_hr_state == 3:#单次测量没有完毕优先测量间隔时间测量的
+                                                    if self.get_hr_state == 3:
+                                                        print("stop debug2")
+                                                        EventMesh.publish(constants.EVENT.STOP_HEART)
+                                                        heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
+                                                        if heart_value > 50 and heart_value != None:
+                                                            EventMesh.publish("set_old_hr_data",heart_value)
+                                                            EventMesh.publish("set_history_hr_value",heart_value)
+                                                            EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)
+                                                        
+                                                    elif self.get_spo2_state == 3:
+                                                        EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
+                                                        spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
+                                                        if spo2_value > 85 and spo2_value != None:
+                                                            EventMesh.publish("set_history_spo2_value",spo2_value)
+                                                            EventMesh.publish("set_old_spo2_data",spo2_value)
+                                                            EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
+
+                                                    self.HR_state = 0
+                                                    self.SENSOR_time = time_tmp
+                                                self.SENSOR_time = time_tmp
+                                                self.HR_state = 0
+                                            
+                                        #print("time_tmp :{} self.SENSOR_time :{} time_tmp - self.SENSOR_time:{} self.HR_state:{}".format(time_tmp,self.SENSOR_time,time_tmp - self.SENSOR_time,self.HR_state))
+                                        if (time_tmp - self.SENSOR_time) == 0 and self.HR_state == 0:
+                                            print("START_HEART:1")
+                                            EventMesh.publish("set_hr_state",2)#2代表后台进入测试
+                                            EventMesh.publish(constants.EVENT.START_HEART)
+                                            self.HR_state = 1
                                             self.HR_Onestate = 0
                                             self.HR_OneTime = 0
-                                    
-                                    if self.old_time != self.mearsure_timer:#重复修改测量间隔时间
-                                        self.SENSOR_time = time_tmp#防止改变时间的时候正在开启测量突然10s就停止测量
-                                        if self.get_hr_state == 2 and self.HR_state == 1:#自动检测的心率还在测量立马关了测试
+                                        elif (time_tmp - self.SENSOR_time) >= 60 and self.HR_state == 1:
+                                            EventMesh.publish("set_hr_state",0)#2代表后台进入测试
+                                            print("stop debug3")
+                                            EventMesh.publish(constants.EVENT.STOP_HEART)
                                             heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
+                                            print("heart_value:{}".format(heart_value))
                                             if heart_value > 50 and heart_value != None:
                                                 EventMesh.publish("set_old_hr_data",heart_value)
                                                 EventMesh.publish("set_history_hr_value",heart_value)
-                                                EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)
-                                            print("stop debug1")
-                                            EventMesh.publish(constants.EVENT.STOP_HEART)
-                                            self.HR_state = 0
-                                        elif self.get_spo2_state == 2 and self.HR_state == 2:
+                                                EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据
+                                            #获取心率数据上传数据app
+                                            print("STOP_HEART:")
+                                        
+                                            self.HR_state = 3
+                                            # EventMesh.publish("set_spo2_state",2)#2代表后台进入血氧测试
+                                            # EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧
+                                            # print("START_BLOOD_OXYGEN:")
+                                        # elif (time_tmp - self.SENSOR_time) >= 120 and self.HR_state == 2:#有需要再打开
+                                        #     print("STOP_BLOOD_OXYGEN:")
+                                        #     EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
+                                        #     EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#停止血氧测试
+                                        #     spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
+                                        #     print("spo2_value:{}".format(spo2_value))
+                                        #     if spo2_value > 85 and spo2_value != None:
+                                        #         EventMesh.publish("set_old_spo2_data",spo2_value)
+                                        #         EventMesh.publish("set_history_spo2_value",spo2_value)
+                                        #         EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
+                                        #     self.HR_state = 3
+                                    else:
+                                        self.HR_state = 0
+                                        self.old_time = self.mearsure_timer
+
+                                    if self.HR_state == 3 or self.HR_state == 0:#只有不在测量的时候才测单次的
+                                        if self.get_spo2_state == 3 or self.get_hr_state == 3:#单次测量
                                             self.HR_state = 0
-                                            spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-                                            if spo2_value > 85 and spo2_value != None:
-                                                EventMesh.publish("set_old_spo2_data",spo2_value)
-                                                EventMesh.publish("set_history_spo2_value",spo2_value)
-                                                EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
-                                            EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-                                    self.old_time = self.mearsure_timer
-
-                                    if self.HR_state == 3 or self.HR_state == 0:#
-                                        if (time_tmp - self.SENSOR_time) >= self.mearsure_timer:
-                                            if self.get_spo2_state == 3 or self.get_hr_state == 3:#单次测量没有完毕优先测量间隔时间测量的
+                                            self.HR_OneTime+=1
+                                            if self.HR_OneTime == 1 and self.HR_Onestate == 0:
+                                                print("hr..........\r\n")
                                                 if self.get_hr_state == 3:
-                                                    print("stop debug2")
+                                                    self.Hr_Need_Open = 1
+                                                    EventMesh.publish("set_hr_state",3)#2代表后台进入测试
+                                                    EventMesh.publish(constants.EVENT.START_HEART)
+                                                else:
+                                                    self.Hr_Need_Open = 0
+
+                                                if self.get_spo2_state == 3 and self.Hr_Need_Open == 0:
+                                                    self.Spo2_Need_Open = 1
+                                                    EventMesh.publish("set_spo2_state",3)#2代表后台进入测试
+                                                    EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧
+                                                else:
+                                                    self.Spo2_Need_Open = 0
+                                                self.HR_Onestate = 1
+                                                # print("self.HR_Onestate....3..:{} {} {} {} {}".format(self.HR_Onestate,self.get_hr_state,self.get_spo2_state,self.Hr_Need_Open,self.Spo2_Need_Open))
+                                            elif self.HR_OneTime > 6 and self.HR_Onestate == 1:
+                                                # print("self.HR_Onestate...4....:{} {} {} {} {}".format(self.HR_Onestate,self.get_hr_state,self.get_spo2_state,self.Hr_Need_Open,self.Spo2_Need_Open))
+                                                if self.Hr_Need_Open == 1:#需要关闭心率测量
+                                                    print("stop debug4")
                                                     EventMesh.publish(constants.EVENT.STOP_HEART)
                                                     heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
                                                     if heart_value > 50 and heart_value != None:
-                                                        EventMesh.publish("set_old_hr_data",heart_value)
                                                         EventMesh.publish("set_history_hr_value",heart_value)
-                                                        EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)
+                                                        EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据
+                                                        EventMesh.publish("set_old_hr_data",heart_value)
+                                            
+                                                    if self.Spo2_Need_Open == 0 and self.get_spo2_state == 3:
+                                                        EventMesh.publish("set_spo2_state",3)#2代表后台进入血氧测试
+                                                        EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧
+                                                        
+                                                        self.HR_Onestate = 2
+                                                        self.set_hsenor_crt = 2#血氧关闭
+                                                    else:
+                                                        self.HR_Onestate = 0
+                                                        self.HR_OneTime = 0
+                                                        self.set_hsenor_crt = 0#
                                                     
-                                                elif self.get_spo2_state == 3:
-                                                    EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
+                                                        EventMesh.publish("set_hr_state",0)#2代表后台进入血氧测试
+                                                        EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
+                                                else:
+                                                    if self.Spo2_Need_Open == 1:#停止测试血氧
+                                                        EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
+                                                        EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#K开血氧
+                                                        spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
+                                                    
+                                                        if spo2_value > 85 and spo2_value != None:
+                                                            EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
+                                                            EventMesh.publish("set_old_spo2_data",spo2_value)
+                                                            EventMesh.publish("set_history_spo2_value",spo2_value)
+                                                        if self.Hr_Need_Open == 0 and self.get_hr_state == 3:
+                                                            EventMesh.publish("set_hr_state",3)#2代表后台进入测试
+                                                            EventMesh.publish(constants.EVENT.START_HEART)
+                                                            self.HR_Onestate = 2
+                                                            self.set_hsenor_crt = 1#心率
+                                                        else:
+                                                            self.HR_Onestate = 0
+                                                            self.HR_OneTime = 0
+                                                            self.set_hsenor_crt = 2#血氧关闭
+                                                        
+                                                        
+                                            elif self.HR_OneTime > 6+6 and self.HR_Onestate == 2:
+                                                print("HR_OneTime:....05")
+                                                if self.set_hsenor_crt == 2:
+                                                    EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
+                                                    EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#停止血氧测试
                                                     spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
                                                     if spo2_value > 85 and spo2_value != None:
                                                         EventMesh.publish("set_history_spo2_value",spo2_value)
-                                                        EventMesh.publish("set_old_spo2_data",spo2_value)
                                                         EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
-
-                                                self.HR_state = 0
-                                                self.SENSOR_time = time_tmp
-                                            self.SENSOR_time = time_tmp
+                                                        EventMesh.publish("set_old_spo2_data",spo2_value)
+                                                elif self.set_hsenor_crt == 1:
+                                                    EventMesh.publish("set_hr_state",0)#0代表g关闭测试
+                                                    print("stop debug5")
+                                                    EventMesh.publish(constants.EVENT.STOP_HEART)
+                                                    heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
+                                                    if heart_value > 50 and heart_value != None:
+                                                        EventMesh.publish("set_history_hr_value",heart_value)
+                                                        EventMesh.publish("set_old_hr_data",heart_value)
+                                                        EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据
+                                                self.HR_Onestate = 0
+                                        else:
+                                            if self.get_spo2_state == 2 or self.get_hr_state == 2:#单次测量
+                                                if self.get_hr_state == 2:
+                                                    EventMesh.publish("set_hr_state",0)#2代表后台进入血氧测试
+                                                    EventMesh.publish(constants.EVENT.STOP_HEART)
+                                                elif self.get_spo2_state == 2:
+                                                    EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
+                                                    EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
                                             self.HR_state = 0
-                                        
-                                    #print("time_tmp :{} self.SENSOR_time :{} time_tmp - self.SENSOR_time:{} self.HR_state:{}".format(time_tmp,self.SENSOR_time,time_tmp - self.SENSOR_time,self.HR_state))
-                                    if (time_tmp - self.SENSOR_time) == 0 and self.HR_state == 0:
-                                        print("START_HEART:1")
-                                        EventMesh.publish("set_hr_state",2)#2代表后台进入测试
-                                        EventMesh.publish(constants.EVENT.START_HEART)
-                                        self.HR_state = 1
-                                        self.HR_Onestate = 0
-                                        self.HR_OneTime = 0
-                                    elif (time_tmp - self.SENSOR_time) >= 60 and self.HR_state == 1:
-                                        EventMesh.publish("set_hr_state",0)#2代表后台进入测试
-                                        print("stop debug3")
-                                        EventMesh.publish(constants.EVENT.STOP_HEART)
-                                        heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
-                                        print("heart_value:{}".format(heart_value))
-                                        if heart_value > 50 and heart_value != None:
-                                            EventMesh.publish("set_old_hr_data",heart_value)
-                                            EventMesh.publish("set_history_hr_value",heart_value)
-                                            EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据
-                                        #获取心率数据上传数据app
-                                        print("STOP_HEART:")
-                                    
-                                        self.HR_state = 3
-                                        # EventMesh.publish("set_spo2_state",2)#2代表后台进入血氧测试
-                                        # EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧
-                                        # print("START_BLOOD_OXYGEN:")
-                                    # elif (time_tmp - self.SENSOR_time) >= 120 and self.HR_state == 2:#有需要再打开
-                                    #     print("STOP_BLOOD_OXYGEN:")
-                                    #     EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
-                                    #     EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#停止血氧测试
-                                    #     spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-                                    #     print("spo2_value:{}".format(spo2_value))
-                                    #     if spo2_value > 85 and spo2_value != None:
-                                    #         EventMesh.publish("set_old_spo2_data",spo2_value)
-                                    #         EventMesh.publish("set_history_spo2_value",spo2_value)
-                                    #         EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
-                                    #     self.HR_state = 3
-                                else:
-                                    self.HR_state = 0
-                                    self.old_time = self.mearsure_timer
+                                            self.HR_Onestate = 0
+                                            self.HR_OneTime = 0
+                                            self.set_hsenor_crt = 0
+                            else:
+                                #print("hr......01....{} {} self.HR_Onestate {} {}".format(self.get_hr_state,self.get_spo2_state,self.HR_OneTime,self.HR_Onestate))
+                                self.SENSOR_time = time_tmp#进入最后一次的时间戳
+                                self.old_time = 0
 
-                                if self.HR_state == 3 or self.HR_state == 0:#只有不在测量的时候才测单次的
+                                self.set_hsenor_crt = 0
+                                if self.get_hr_state != 1 and self.get_spo2_state != 1:#没有设置间隔时间单次测量
                                     if self.get_spo2_state == 3 or self.get_hr_state == 3:#单次测量
                                         self.HR_state = 0
                                         self.HR_OneTime+=1
                                         if self.HR_OneTime == 1 and self.HR_Onestate == 0:
-                                            print("hr..........\r\n")
                                             if self.get_hr_state == 3:
                                                 self.Hr_Need_Open = 1
                                                 EventMesh.publish("set_hr_state",3)#2代表后台进入测试
@@ -1351,29 +1467,27 @@ class DeviceInfoManager(Abstract):
                                             else:
                                                 self.Spo2_Need_Open = 0
                                             self.HR_Onestate = 1
-                                            # print("self.HR_Onestate....3..:{} {} {} {} {}".format(self.HR_Onestate,self.get_hr_state,self.get_spo2_state,self.Hr_Need_Open,self.Spo2_Need_Open))
+                                    
                                         elif self.HR_OneTime > 6 and self.HR_Onestate == 1:
-                                            # print("self.HR_Onestate...4....:{} {} {} {} {}".format(self.HR_Onestate,self.get_hr_state,self.get_spo2_state,self.Hr_Need_Open,self.Spo2_Need_Open))
+                                            print("stop_heart Onec ")
                                             if self.Hr_Need_Open == 1:#需要关闭心率测量
-                                                print("stop debug4")
+                                                print("stop debug6")
                                                 EventMesh.publish(constants.EVENT.STOP_HEART)
                                                 heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
+                                                print("stop_heart heart_value:{}".format(heart_value))
                                                 if heart_value > 50 and heart_value != None:
+                                                    EventMesh.publish("set_old_hr_data",heart_value)
                                                     EventMesh.publish("set_history_hr_value",heart_value)
                                                     EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据
-                                                    EventMesh.publish("set_old_hr_data",heart_value)
-                                        
                                                 if self.Spo2_Need_Open == 0 and self.get_spo2_state == 3:
                                                     EventMesh.publish("set_spo2_state",3)#2代表后台进入血氧测试
                                                     EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧
-                                                    
                                                     self.HR_Onestate = 2
                                                     self.set_hsenor_crt = 2#血氧关闭
                                                 else:
                                                     self.HR_Onestate = 0
                                                     self.HR_OneTime = 0
                                                     self.set_hsenor_crt = 0#
-                                                
                                                     EventMesh.publish("set_hr_state",0)#2代表后台进入血氧测试
                                                     EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
                                             else:
@@ -1381,11 +1495,11 @@ class DeviceInfoManager(Abstract):
                                                     EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
                                                     EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#K开血氧
                                                     spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-                                                
+                                                    print("spo2_value:{}.......01..".format(spo2_value))
                                                     if spo2_value > 85 and spo2_value != None:
-                                                        EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
                                                         EventMesh.publish("set_old_spo2_data",spo2_value)
                                                         EventMesh.publish("set_history_spo2_value",spo2_value)
+                                                        EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
                                                     if self.Hr_Need_Open == 0 and self.get_hr_state == 3:
                                                         EventMesh.publish("set_hr_state",3)#2代表后台进入测试
                                                         EventMesh.publish(constants.EVENT.START_HEART)
@@ -1395,26 +1509,25 @@ class DeviceInfoManager(Abstract):
                                                         self.HR_Onestate = 0
                                                         self.HR_OneTime = 0
                                                         self.set_hsenor_crt = 2#血氧关闭
-                                                    
+                                                    print("STOP_BLOOD_OXYGEN:....06.....")
                                                     
                                         elif self.HR_OneTime > 6+6 and self.HR_Onestate == 2:
-                                            print("HR_OneTime:....05")
                                             if self.set_hsenor_crt == 2:
                                                 EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
                                                 EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#停止血氧测试
                                                 spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
                                                 if spo2_value > 85 and spo2_value != None:
+                                                    EventMesh.publish("set_old_spo2_data",spo2_value)
                                                     EventMesh.publish("set_history_spo2_value",spo2_value)
                                                     EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
-                                                    EventMesh.publish("set_old_spo2_data",spo2_value)
                                             elif self.set_hsenor_crt == 1:
                                                 EventMesh.publish("set_hr_state",0)#0代表g关闭测试
-                                                print("stop debug5")
+                                                print("stop debug7")
                                                 EventMesh.publish(constants.EVENT.STOP_HEART)
                                                 heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
                                                 if heart_value > 50 and heart_value != None:
-                                                    EventMesh.publish("set_history_hr_value",heart_value)
                                                     EventMesh.publish("set_old_hr_data",heart_value)
+                                                    EventMesh.publish("set_history_hr_value",heart_value)
                                                     EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据
                                             self.HR_Onestate = 0
                                     else:
@@ -1425,119 +1538,19 @@ class DeviceInfoManager(Abstract):
                                             elif self.get_spo2_state == 2:
                                                 EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
                                                 EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-                                        self.HR_state = 0
                                         self.HR_Onestate = 0
                                         self.HR_OneTime = 0
-                                        self.set_hsenor_crt = 0
+                                        self.old_time = 0
                         else:
-                            #print("hr......01....{} {} self.HR_Onestate {} {}".format(self.get_hr_state,self.get_spo2_state,self.HR_OneTime,self.HR_Onestate))
-                            self.SENSOR_time = time_tmp#进入最后一次的时间戳
+                            self.old_temp_time = 0
                             self.old_time = 0
-
+                            self.SENSOR_time = time_tmp
+                            self.HR_Onestate = 0
+                            self.HR_OneTime = 0
+                            self.HR_state = 0
+                            self.old_time = 0    
                             self.set_hsenor_crt = 0
-                            if self.get_hr_state != 1 and self.get_spo2_state != 1:#没有设置间隔时间单次测量
-                                if self.get_spo2_state == 3 or self.get_hr_state == 3:#单次测量
-                                    self.HR_state = 0
-                                    self.HR_OneTime+=1
-                                    if self.HR_OneTime == 1 and self.HR_Onestate == 0:
-                                        if self.get_hr_state == 3:
-                                            self.Hr_Need_Open = 1
-                                            EventMesh.publish("set_hr_state",3)#2代表后台进入测试
-                                            EventMesh.publish(constants.EVENT.START_HEART)
-                                        else:
-                                            self.Hr_Need_Open = 0
-
-                                        if self.get_spo2_state == 3 and self.Hr_Need_Open == 0:
-                                            self.Spo2_Need_Open = 1
-                                            EventMesh.publish("set_spo2_state",3)#2代表后台进入测试
-                                            EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧
-                                        else:
-                                            self.Spo2_Need_Open = 0
-                                        self.HR_Onestate = 1
-                                
-                                    elif self.HR_OneTime > 6 and self.HR_Onestate == 1:
-                                        print("stop_heart Onec ")
-                                        if self.Hr_Need_Open == 1:#需要关闭心率测量
-                                            print("stop debug6")
-                                            EventMesh.publish(constants.EVENT.STOP_HEART)
-                                            heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
-                                            print("stop_heart heart_value:{}".format(heart_value))
-                                            if heart_value > 50 and heart_value != None:
-                                                EventMesh.publish("set_old_hr_data",heart_value)
-                                                EventMesh.publish("set_history_hr_value",heart_value)
-                                                EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据
-                                            if self.Spo2_Need_Open == 0 and self.get_spo2_state == 3:
-                                                EventMesh.publish("set_spo2_state",3)#2代表后台进入血氧测试
-                                                EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧
-                                                self.HR_Onestate = 2
-                                                self.set_hsenor_crt = 2#血氧关闭
-                                            else:
-                                                self.HR_Onestate = 0
-                                                self.HR_OneTime = 0
-                                                self.set_hsenor_crt = 0#
-                                                EventMesh.publish("set_hr_state",0)#2代表后台进入血氧测试
-                                                EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
-                                        else:
-                                            if self.Spo2_Need_Open == 1:#停止测试血氧
-                                                EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
-                                                EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#K开血氧
-                                                spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-                                                print("spo2_value:{}.......01..".format(spo2_value))
-                                                if spo2_value > 85 and spo2_value != None:
-                                                    EventMesh.publish("set_old_spo2_data",spo2_value)
-                                                    EventMesh.publish("set_history_spo2_value",spo2_value)
-                                                    EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
-                                                if self.Hr_Need_Open == 0 and self.get_hr_state == 3:
-                                                    EventMesh.publish("set_hr_state",3)#2代表后台进入测试
-                                                    EventMesh.publish(constants.EVENT.START_HEART)
-                                                    self.HR_Onestate = 2
-                                                    self.set_hsenor_crt = 1#心率
-                                                else:
-                                                    self.HR_Onestate = 0
-                                                    self.HR_OneTime = 0
-                                                    self.set_hsenor_crt = 2#血氧关闭
-                                                print("STOP_BLOOD_OXYGEN:....06.....")
-                                                
-                                    elif self.HR_OneTime > 6+6 and self.HR_Onestate == 2:
-                                        if self.set_hsenor_crt == 2:
-                                            EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
-                                            EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#停止血氧测试
-                                            spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-                                            if spo2_value > 85 and spo2_value != None:
-                                                EventMesh.publish("set_old_spo2_data",spo2_value)
-                                                EventMesh.publish("set_history_spo2_value",spo2_value)
-                                                EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
-                                        elif self.set_hsenor_crt == 1:
-                                            EventMesh.publish("set_hr_state",0)#0代表g关闭测试
-                                            print("stop debug7")
-                                            EventMesh.publish(constants.EVENT.STOP_HEART)
-                                            heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
-                                            if heart_value > 50 and heart_value != None:
-                                                EventMesh.publish("set_old_hr_data",heart_value)
-                                                EventMesh.publish("set_history_hr_value",heart_value)
-                                                EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据
-                                        self.HR_Onestate = 0
-                                else:
-                                    if self.get_spo2_state == 2 or self.get_hr_state == 2:#单次测量
-                                        if self.get_hr_state == 2:
-                                            EventMesh.publish("set_hr_state",0)#2代表后台进入血氧测试
-                                            EventMesh.publish(constants.EVENT.STOP_HEART)
-                                        elif self.get_spo2_state == 2:
-                                            EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
-                                            EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-                                    self.HR_Onestate = 0
-                                    self.HR_OneTime = 0
-                                    self.old_time = 0
-                    else:
-                        self.old_temp_time = 0
-                        self.old_time = 0
-                        self.SENSOR_time = time_tmp
-                        self.HR_Onestate = 0
-                        self.HR_OneTime = 0
-                        self.HR_state = 0
-                        self.old_time = 0    
-                        self.set_hsenor_crt = 0
-        
+            
         else:
             if battery[0] == "1":
                 get_hr_state = EventMesh.publish("get_hr_state")
@@ -2991,13 +3004,11 @@ class getStorageDataManager(Abstract):#获取内存数据
             pass
 
     def post_processor_after_instantiation(self):
-        EventMesh.subscribe("set_storage_data", self.set_storage_data)
         EventMesh.subscribe("set_storage_config", self.set_storage_config)
-        EventMesh.subscribe("get_storage_data", self.get_storage_data)
         EventMesh.subscribe("get_storage_config", self.get_storage_config)
 
     def set_storage_data(self, event, msg): 
-        # print("set_storage_data:{}".format(msg))
+        print("set_storage_data:{}".format(msg))
         if msg != None:
             self.config_data = msg
             with open("/ext/static/storage_file/config.json",'w+',encoding="utf-8") as fd:
@@ -3022,7 +3033,7 @@ class getStorageDataManager(Abstract):#获取内存数据
         # print("get_storage_key_data1:{}".format(msg))
         b = msg in self.config_data.keys()
         if b == True:
-            # print("get_storage_key_data2:{}".format(self.config_data[msg]))
+            print("get_storage_key_data2:{}".format(self.config_data[msg]))
             return self.config_data[msg]
         else :
             return None
index 90650e6..dd9a971 100644 (file)
@@ -293,7 +293,7 @@ class WatchFace1():
                 line_len = 6
             set_x = int(188+line_len//2)
             watchface1_res_stat_battery_line.set_pos(int(set_x),int(18))
-            watchface1_res_stat_battery_line.set_size(line_len,15)
+            watchface1_res_stat_battery_line.set_size(line_len,5)
             watchface1_res_stat_battery_line.set_style_line_width(line_len,lv.PART.MAIN)
             if line_len <= 6:
                 watchface1_res_stat_battery_line.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
@@ -545,7 +545,7 @@ class WatchFace2():
             if line_len <= 6:
                 line_len = 6
             set_x = int(188+line_len//2)
-            watchface2_res_stat_battery_line.set_pos(int(set_x),int(20))
+            watchface2_res_stat_battery_line.set_pos(int(set_x),int(18))
             watchface2_res_stat_battery_line.set_size(line_len,5)
             watchface2_res_stat_battery_line.set_style_line_width(line_len,lv.PART.MAIN)
             if line_len <= 6:
@@ -604,12 +604,33 @@ Watchface3.set_size(LCD_SIZE_W,LCD_SIZE_H)
 Watchface3.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
 Watchface3.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT)
 
+watchface3_mpsignal_img = lv.img(Watchface3)
+watchface3_mpsignal_img.set_pos(int(20),int(15))
+watchface3_mpsignal_img.set_size(30,22)
+watchface3_mpsignal_img.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
+watchface3_mpsignal_img.add_flag(lv.obj.FLAG.CLICKABLE)
+watchface3_mpsignal_img.set_src("E:/static/mpsignal5.png")
+watchface3_mpsignal_img.add_style(style_watchface_img_default, lv.PART.MAIN|lv.STATE.DEFAULT)
+
+watchface3_res_stat_battery_img = lv.img(Watchface3)
+watchface3_res_stat_battery_img.set_pos(int(185),int(15))
+watchface3_res_stat_battery_img.set_size(40,22)
+watchface3_res_stat_battery_img.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
+watchface3_res_stat_battery_img.add_flag(lv.obj.FLAG.CLICKABLE)
+watchface3_res_stat_battery_img.set_src("E:/static/vbat_0.png")
+watchface3_res_stat_battery_img.add_style(style_watchface_img_default, lv.PART.MAIN|lv.STATE.DEFAULT)
 
+ 
+watchface3_res_stat_battery_line = lv.line(Watchface3)
+watchface3_res_stat_battery_line.set_points(power_line_points,2)
+watchface3_res_stat_battery_line.set_pos(int(188),int(20))
+watchface3_res_stat_battery_line.set_size(0,10)#高度12
+watchface3_res_stat_battery_line.add_style(power_line_red,0)
 #时间
 
 
 watchface3_time1_text = lv.label(Watchface3)
-watchface3_time1_text.set_pos(20, 20)
+watchface3_time1_text.set_pos(20, 55)
 watchface3_time1_text.set_size(190, 71)
 watchface3_time1_text.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
 watchface3_time1_text.set_text("{}:{}".format("%02d"%(hour),"%02d"%(min)))
@@ -618,8 +639,8 @@ watchface3_time1_text.add_style(style_font_youyuan_70_white, lv.PART.MAIN|lv.STA
 
 #日期
 watchface3_week_span = lv.label(Watchface3)
-watchface3_week_span.set_pos(0, 100)
-watchface3_week_span.set_size(240, 30)
+watchface3_week_span.set_pos(0, 125)
+watchface3_week_span.set_size(240, 20)
 watchface3_week_span.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
 watchface3_week_span.set_text("%02d/%02d  周%s"%(date1,date2,get_week(week)))
 watchface3_week_span.add_style(style_font_youyuan_20_white, lv.PART.MAIN|lv.STATE.DEFAULT)
@@ -627,10 +648,10 @@ watchface3_week_span.add_style(style_font_youyuan_20_white, lv.PART.MAIN|lv.STAT
 
 
 watchface3_school_label = lv.label(Watchface3)
-watchface3_school_label.set_pos(0, 145)
-watchface3_school_label.set_size(240, 30)
+watchface3_school_label.set_pos(0, 165)
+watchface3_school_label.set_size(240, 20)
 watchface3_school_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
-watchface3_school_label.set_text("深圳市第一小学")
+watchface3_school_label.set_text(" ")
 watchface3_school_label.add_style(style_font_youyuan_20_white, lv.PART.MAIN|lv.STATE.DEFAULT)
 
 
@@ -643,17 +664,17 @@ watchface3_school_label.add_style(style_font_youyuan_20_white, lv.PART.MAIN|lv.S
 # watchface3_HB_span.add_style(style_font_youyuan_28, lv.PART.MAIN|lv.STATE.DEFAULT)
 
 watchface3_class_label = lv.label(Watchface3)
-watchface3_class_label.set_pos(0, 185)
-watchface3_class_label.set_size(240, 30)
-watchface3_class_label.set_text("三年级一班")
+watchface3_class_label.set_pos(0, 200)
+watchface3_class_label.set_size(240, 20)
+watchface3_class_label.set_text(" ")
 watchface3_class_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
 watchface3_class_label.add_style(style_font_youyuan_20_white, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 
 watchface3_fullname_label = lv.label(Watchface3)
-watchface3_fullname_label.set_pos(0, 225)
-watchface3_fullname_label.set_size(240, 30)
-watchface3_fullname_label.set_text("张三")
+watchface3_fullname_label.set_pos(0, 235)
+watchface3_fullname_label.set_size(240, 20)
+watchface3_fullname_label.set_text(" ")
 watchface3_fullname_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
 watchface3_fullname_label.add_style(style_font_youyuan_20_white, lv.PART.MAIN|lv.STATE.DEFAULT)
 
@@ -677,6 +698,14 @@ class WatchFace3():
 
         self.update_screen_show(None, None)
 
+        signal = EventMesh.publish("screen_get_sig")
+        if signal:
+            self.__signal(None, signal)
+        # 获取电池电量
+        battery = EventMesh.publish("screen_get_battery")
+        if battery:
+            self.__battery(None, battery)
+
         
     def timerout_update(self):
         time = EventMesh.publish("screen_get_time")
@@ -686,6 +715,64 @@ class WatchFace3():
         
         self.update_screen_show(None, None)
 
+        signal = EventMesh.publish("screen_get_sig")
+        if signal:
+            self.__signal(None, signal)
+        # 获取电池电量
+        battery = EventMesh.publish("screen_get_battery")
+        if battery:
+            self.__battery(None, battery)
+
+    def __signal(self, event, msg):
+        #print("__signal_cb:",str(msg))
+        # 信号强度值范围0 ~ 31,值越大表示信号强度越好
+        #print("__signal_cb:{}".format(msg//8))
+        if msg:
+            if msg >= 0 and msg<=31 :
+                watchface3_mpsignal_img.set_src("E:/static/mpsignal{}.png".format(msg//8+1))
+            else :
+                watchface3_mpsignal_img.set_src("E:/static/mpsignal5.png") 
+
+    def __battery(self, event, msg):
+        #print("__battery_cb:",str(msg))
+        #print(msg)
+        if msg[0] == '1':
+            
+            watchface3_res_stat_battery_line.set_pos(int(0),int(15))
+            watchface3_res_stat_battery_line.set_size(0,0)
+            watchface3_res_stat_battery_line.set_style_line_width(0,lv.PART.MAIN)
+            watchface3_res_stat_battery_img.set_src("E:/static/charge_ing.png")
+        else:
+            watchface3_res_stat_battery_img.set_src("E:/static/vbat_0.png")
+            level = msg[1]
+            if level >= 99:
+                level = 100
+            line_len = int(level*(30/100))
+            # print("__battery_cb:",level,line_len,30/100)
+            if line_len >= 30:
+                line_len = 30
+            if line_len <= 3:
+                line_len = 3
+            set_x = int(188+line_len//2)
+
+            line_points = [
+                   {"x":0, "y":5}, 
+                   {"x":line_len, "y":5}, 
+                         ]
+            watchface3_res_stat_battery_line.set_size(int(line_len),int(10))
+            watchface3_res_stat_battery_line.set_pos(int(188),int(21))
+            watchface3_res_stat_battery_line.set_points(line_points, 2)
+            watchface3_res_stat_battery_line.set_style_line_width(15,lv.PART.MAIN)
+
+
+            # watchface3_res_stat_battery_line.set_pos(int(set_x),int(18))
+            # watchface3_res_stat_battery_line.set_size(line_len,5)
+            # watchface3_res_stat_battery_line.set_style_line_width(line_len,lv.PART.MAIN)
+            if line_len <= 3:
+                watchface3_res_stat_battery_line.set_style_line_color(lv.color_make(0xff,0x00,0x00),0)
+            else:
+                watchface3_res_stat_battery_line.set_style_line_color(lv.color_make(0x00,0xff,0x00),0) 
+            
 
     def __time(self, event, msg):
         data = RTC().datetime()
@@ -701,6 +788,7 @@ class WatchFace3():
         watchface3_week_span.set_text("%02d/%02d  周%s"%(date1,date2,get_week(week)))
 
     def update_screen_show(self, event, msg):
+        pass
         school=EventMesh.publish("get_schoolname")
         if school != None:
             watchface3_school_label.set_text(str(school))
index b0f7969..1ea8881 100644 (file)
@@ -585,13 +585,15 @@ class MainMenuScreen(Screen):
         self.MainMenu_til = None
         self.MainMenu_num = None
         self.watchface = None
-        self.set_mainmenu(msg = "2")
-        
-        self.watchface = WatchFace(self.MainMenu_Watchface )
-
         read_data = EventMesh.publish("get_storage_config","MainMenu")
+        print("set_mainmenu:MainMenu:{}".format(read_data))
         if read_data != None:
             self.set_mainmenu(msg = [read_data,0])
+        else:
+            self.set_mainmenu(msg = ["1",0])
+        self.watchface = WatchFace(self.MainMenu_Watchface )
+
+        
         EventMesh.subscribe("set_mainmenu", self.set_mainmenu)    
             
         self.menu_id = "0"
@@ -710,8 +712,9 @@ class MainMenuScreen(Screen):
             self.MainMenu_num = MainMenu1_num
             #self.watchface = MainMenu1_watchface
             msg[0] = "1"
-
+        
         EventMesh.publish("set_storage_config",["MainMenu",msg[0]])
+        print("set_mainmenu:MainMenu:{}".format(msg[0]))
         if self.watchface != None:
             self.watchface.set_parent(self.MainMenu_Watchface)#切换父对象,比较危险
             self.watchface.initialization() 
index f8cda10..939e166 100644 (file)
@@ -1833,9 +1833,9 @@ class PhoneringScreen(Screen):
         self.level = 0
         self.meta = phonering_screen
         phonering_add_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.add_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         phonering_reduce_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reduce_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         phonering_add_imgbtn.set_ext_click_area(20)
         phonering_reduce_imgbtn.set_ext_click_area(20)
 
@@ -1880,9 +1880,9 @@ class AlarmvolumeScreen(Screen):
         self.level = 0
         self.meta = alarmvolume_screen
         alarmvolume_add_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.add_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         alarmvolume_reduce_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reduce_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
 
     def add_level(self, e):
         EventMesh.publish("push_add_alarmvolume_level")
@@ -1920,9 +1920,9 @@ class MsgvolumeScreen(Screen):
         self.level = 0
         self.meta = msgvolume_screen
         msgvolume_add_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.add_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         msgvolume_reduce_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reduce_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
 
     def add_level(self, e):
         EventMesh.publish("push_add_msgvolume_level")
@@ -2005,9 +2005,9 @@ class totalvolumeScreen(Screen):#总的铃声调节
         super().__init__()
         self.meta = volume_adjust_screen
         totalvolume_add_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.add_volum_size(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         totalvolume_reduce_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reduce_volum_size(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         self.volum_size = 8
         self.aud = audio.Audio(0)
         
index 4da1ffe..59cd58c 100644 (file)
@@ -682,7 +682,33 @@ class intervManager(Abstract):
             if power_off == 1:
                 return
         flag = EventMesh.publish("get_call_state") 
-        
+        get_hr_state = EventMesh.publish("get_hr_state")
+        get_spo2_state = EventMesh.publish("get_spo2_state")
+        get_bp_state  = EventMesh.publish("get_bp_state")
+        get_bg_state  = EventMesh.publish("get_bg_state")
+        if msg == 1:
+            if get_hr_state != None and get_spo2_state != None and get_bp_state != None and get_bg_state != None:
+                if get_hr_state == 2 or get_hr_state == 3:
+                    
+                    EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
+                    EventMesh.publish("stop_led_timer")#设置参数
+                    EventMesh.debug_log("stop debug8")
+                    EventMesh.publish(constants.EVENT.STOP_HEART) 
+                elif get_spo2_state == 2 or get_spo2_state == 3:
+                    EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
+                    EventMesh.publish("stop_led_timer")#设置参数
+                    EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
+                    EventMesh.debug_log("stop debug13")
+                elif get_bp_state == 2 or get_bp_state == 3:
+                    EventMesh.publish("set_bp_state",0)#2代表后台进入测试
+                    EventMesh.publish("stop_led_timer")#设置参数
+                    EventMesh.publish(constants.EVENT.STOP_HEART)
+                    EventMesh.debug_log("stop bp debug1")
+                elif get_bg_state == 2 or get_bg_state == 3:
+                    EventMesh.publish("set_bg_state",0)#2代表后台进入测试
+                    EventMesh.publish("stop_led_timer")#设置参数
+                    EventMesh.publish(constants.EVENT.STOP_HEART)
+                    EventMesh.debug_log("stop BG  debug14")
         if msg == 1:
             self.usbState = msg
             str_buf = [1,1,10,led_mode.LONG_LIGHT_RED,4,2,led_mode.CHARGE_IN_MODE]
@@ -862,6 +888,7 @@ class intervManager(Abstract):
                 EventMesh.publish("set_hr_state",1)
                 EventMesh.publish("set_start_measure_time")#设置开始测量的时间戳时间
                 EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) #停止测试血氧
+                EventMesh.publish("set_hr_blood_led",1)
                 EventMesh.publish(constants.EVENT.START_HEART) #手动心率测试
         elif msg == 2:
             if get_hr_state == 0:
@@ -869,12 +896,14 @@ class intervManager(Abstract):
                     EventMesh.debug_log("set_manual_measure_mode",msg)
                     EventMesh.publish("set_spo2_state",1)
                     EventMesh.publish("set_start_measure_time")#设置开始测量的时间戳时间
+                    EventMesh.publish("set_hr_blood_led",1)
                     EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN) #手动血氧测试
         elif msg == 3:
             if get_temp_state != 1:
                 EventMesh.debug_log("set_manual_measure_mode",msg)
                 EventMesh.publish("set_temp_state",1)
                 EventMesh.publish("set_start_temp_measure_time")#设置开始测量的时间戳时间
+                EventMesh.publish("set_hr_blood_led",1)
                 EventMesh.publish(constants.EVENT.START_TEMP)#手动体温测试
         pass
 
@@ -1795,6 +1824,7 @@ class BtnDevice(Abstract):
                         self.pwKey_press_count = 0
                         self.led_state = 0
                         EventMesh.publish("open_power_on", 2)#
+                        return
                         
                 
             if self.GPIO26_status == 1:#松开
index 7d1a85e..3dd8d54 100644 (file)
@@ -101,6 +101,18 @@ class PROTOCOL:
     
     REMOVE_SEND = "REMOVE_SEND"
     REMOVE_RECV = "REMOVE_RECV"
+
+    BLOOD_SEND = "blood_SEND"
+    BLOOD_RECV = "blood_RECV"
+
+    BLDSTART_SEND ="bldstart_SEND"
+    BLDSTART_RECV = "bldstart_RECV"
+
+    BGSTART_SEND = "bgstart_SEND"
+    BGSTART_RECV = "bgstart_RECV"
+
+    BLOODGLUSOCE_SEND = "bloodglucose_SEND"
+    BLOODGLUSOCE_RECV = "bloodglucose_RECV"
     
 
 class EVENT:
index 1262403..08edae5 100644 (file)
@@ -271,6 +271,8 @@ class ledEventManager(Abstract):#灯事件
                         
                         wechat_state = EventMesh.publish("get_wechat_state")
                         temp_state = EventMesh.publish("get_temp_state")
+                        bp_state = EventMesh.publish("get_bg_state")
+                        bg_state = EventMesh.publish("get_bg_state")
                         EventMesh.debug_log("get_hr_state",get_hr_state,get_spo2_state,temp_state,wechat_state,self.working_led_mode)
                         if wechat_state != None: #获取微聊状态
                             if wechat_state == 1:
@@ -286,7 +288,7 @@ class ledEventManager(Abstract):#灯事件
                                     
                             else:
                                 self.wechat_btn = 0
-                                if get_hr_state != 0 or get_spo2_state != 0 or temp_state != 0 :#心率血氧优先级高
+                                if get_hr_state != 0 or get_spo2_state != 0 or temp_state != 0 or bp_state != 0 or bg_state != 0 :#心率血氧优先级高
                                     if self.working_led_mode != led_mode.HEALTH_LED_MODE:#如果不在亮微聊模式需要亮微聊模式
                                         # EventMesh.debug_log("set_hr_blood_led!!!!!!!!!!")
                                         str_buf = [1,2,10*70*2,led_mode.FLASH_LIGHT_RED_GREEN,10,5,led_mode.HEALTH_LED_MODE]#測量成功
@@ -298,7 +300,7 @@ class ledEventManager(Abstract):#灯事件
                                     else:
                                         # EventMesh.debug_log("set_hr_blood_led stop!!!!!!!!!!")
                                         return
-                                if  get_hr_state == 0 and get_spo2_state == 0 and temp_state == 0:
+                                if  get_hr_state == 0 and get_spo2_state == 0 and temp_state == 0 and bp_state == 0 and bg_state == 0:
                                     self.working_led_mode = led_mode.OTHER_MEASURE_MODE
                         
         self.open_timer(msg)
@@ -320,7 +322,7 @@ class ledEventManager(Abstract):#灯事件
                     get_spo2_state = EventMesh.publish("get_spo2_state")
                     get_temp_state = EventMesh.publish("get_temp_state")
                     if get_hr_state != None or get_spo2_state != None or get_temp_state != None:
-                        if get_hr_state == 1 or get_spo2_state == 1 or get_temp_state == 1:
+                        if get_hr_state == 1 or get_spo2_state == 1 or get_temp_state == 1:#手动触发
                             EventMesh.publish("close_hr_sop2")
                             EventMesh.publish("close_led_pin")
                             return
@@ -553,9 +555,11 @@ class ledEventManager(Abstract):#灯事件
                         
                         wechat_state = EventMesh.publish("get_wechat_state")
                         temp_state = EventMesh.publish("get_temp_state")
+                        bp_state = EventMesh.publish("get_bp_state")
+                        bg_state = EventMesh.publish("get_bg_state")
                         # EventMesh.debug_log("get_hr_state",get_hr_state,get_spo2_state,wechat_state,self.working_led_mode)
                         if wechat_state != None: #获取微聊状态
-                            if wechat_state == 1 or get_spo2_state != 0 or get_hr_state != 0 or temp_state != 0:
+                            if wechat_state == 1 or get_spo2_state != 0 or get_hr_state != 0 or temp_state != 0 or bp_state != 0 or bg_state != 0:
                                 return
         if self.timer_state == 1:
             self.timer.stop()
index 829f270..c14a3dc 100644 (file)
@@ -41,13 +41,13 @@ if __name__ == '__main__':
         uos.mount(ldev,'/ext')
     res = uos.statvfs("/ext")
     res = list(res)
-    EventMesh.debug_log('总ext空间:{} MB,剩余空间:{} MB'.format((((res[0] * res[2]) / 1024 / 1024)),((res[0] * res[3]) / 1024 / 1024)))
-    EventMesh.debug_log("init1:{}".format(utime.localtime()))
+    print('总ext空间:{} MB,剩余空间:{} MB'.format((((res[0] * res[2]) / 1024 / 1024)),((res[0] * res[3]) / 1024 / 1024)))
+    print("init1:{}".format(utime.localtime()))
     import EventMesh
     from common import Abstract
-    EventMesh.debug_log("init2:{}".format(utime.localtime()))
+    print("init2:{}".format(utime.localtime()))
     from lcd import tp_cst816
-    EventMesh.debug_log("init3:{}".format(utime.localtime()))
+    print("init3:{}".format(utime.localtime()))
 
     from usr.ui_main_menu import MainMenuScreen
     # from ui_WatchFaceScreen import WatchFaceScreen
@@ -55,12 +55,12 @@ if __name__ == '__main__':
     from appFactoryMode import  FactoryModeLocationScreen,FactoryModeScreen ,FactoryModeAlipayInitScreen
     import ui as _ui
     # import ui as _ui
-    EventMesh.debug_log("init4:{}".format(utime.localtime()))
+    print("init4:{}".format(utime.localtime()))
     ui = _ui.UI()
     ui.post_processor_after_instantiation()
     ui.add_screen(MainMenuScreen()) 
     EventMesh.publish("load_screen", {"screen": "main_menu"})
-    EventMesh.debug_log("init5:{}".format(utime.localtime()))
+    print("init5:{}".format(utime.localtime()))
     
     ui.add_screen(_ui.PopupScreen()) 
     ui.add_screen(_ui.PhoneScreen()) 
@@ -77,8 +77,8 @@ if __name__ == '__main__':
     ui.add_screen(_ui.ContactsScreen()) 
     from appWechat import WechatScreen,TK_ProtoCol,MESSAGE_ProtoCol,NewWechatPopupScreen
     ui.add_screen(WechatScreen()) 
-    from alarm import ClkListScreen,ClockManager,NewEditClk,CLKTimeScreen,ClkPeriod,PopupAlarmScreen
-    from ui_health import HealthScreen
+    from alarm import ClkListScreen,NewEditClk,CLKTimeScreen,ClkPeriod,PopupAlarmScreen
+  
     ui.add_screen(ClkListScreen()) 
     ui.add_screen(_ui.CountdownEndScreen()) 
     ui.add_screen(NewEditClk()) 
@@ -129,18 +129,18 @@ if __name__ == '__main__':
     ui.add_screen(NewWechatPopupScreen())
     ui.add_screen(HealthScreen())
     # ui.add_screen(_ui.Setting3Screen())  
-    EventMesh.debug_log("init6:{}".format(utime.localtime()))
+    print("init6:{}".format(utime.localtime()))
     
 
     from protocol import LK_ProtoCol,PING_ProtoCol,HEART_ProtoCol,OXYGEN_ProtoCol,OXYGEN_One_ProtoCol,HRSTART_ProtoCol,CENTER_ProtoCol,UPLOAD_ProtoCol,\
         TEMP_ProtoCol,DLT_ProtoCol,WT_ProtoCol,UD_ProtoCol,REMIND_ProtoCol, CR_ProtoCol,KA_ProtoCol,FIND_ProtoCol,POWEROFF_ProtoCol,\
             ProtoColResolver,PHL_ProtoCol,MONITOR_ProtoCol,bootoff_ProtoCol,WDSTART_ProtoCol,LOWBAT_ProtoCol,sosHome_dial_ProtoCol,SockManager,NetManager
     import mgr as mgr
-    EventMesh.debug_log("init7:{}".format(utime.localtime()))
+    print("init7:{}".format(utime.localtime()))
     
     from mgr import ConfigStoreManager,getBootOffManager,getSosFlagManager,CountdownManager, LocationManager, getVolumSizeManager,gethistoryDataManager,getUpLoadDataManager, getplayAudiodStateManager,\
     AddrBookManager,MsgdetailManager,PhoneCallingManager,getOldTimeManager,getStorageDataManager,getBrightnessManager,getHrTimeManager,getTempTimeManager,getLowBatManager
-    EventMesh.debug_log("init8:{}".format(utime.localtime()))
+    print("init8:{}".format(utime.localtime()))
     
     
     #from ui_WatchFaceScreen import WatchFaceScreen 
@@ -148,10 +148,10 @@ if __name__ == '__main__':
     
     # from usr.test_sms import HRSTART_ProtoCol,getHrTimeManager,HEART_ProtoCol,OXYGEN_ProtoCol,OXYGEN_One_ProtoCol,getBrightnessManager,\
     # getStorageDataManager
-    EventMesh.debug_log("init9:{}".format(utime.localtime()))
+    print("init9:{}".format(utime.localtime()))
    #from usr.ui_wechat import WechatScreen,TK_ProtoCol
 
-    EventMesh.debug_log("init10:{}".format(utime.localtime()))
+    print("init10:{}".format(utime.localtime()))
     
 
     app = watchApp()
@@ -190,9 +190,9 @@ if __name__ == '__main__':
     app.append_manager(getSosFlagManager())
     app.append_manager(CountdownManager())
 
-    EventMesh.debug_log("init21:{}".format(utime.localtime()))    
+    print("init21:{}".format(utime.localtime()))    
     
-    EventMesh.debug_log("init11:{}".format(utime.localtime()))    
+    print("init11:{}".format(utime.localtime()))    
     pcr = ProtoColResolver()
     pcr.add_support(LK_ProtoCol())
     pcr.add_support(PING_ProtoCol())
@@ -224,16 +224,16 @@ if __name__ == '__main__':
     sm = SockManager()
     sm.add_support_resolver(pcr)
     app.append_manager(sm)
-    EventMesh.debug_log("init11.0:{}".format(utime.localtime()))   
+    print("init11.0:{}".format(utime.localtime()))   
     app.start()
     sms_data = sms.getSaveLoc()
     sms_lacv = sms_data[0][0]
     if sms_lacv != 'SM':#每次开机设置一下短信的存储位置
         sms.setSaveLoc('SM', 'SM', 'SM')
-    EventMesh.debug_log("init12:{}".format(utime.localtime()))
+    print("init12:{}".format(utime.localtime()))
     import atcmd
     resp=bytearray(50)
     atcmd.sendSync('AT+log=52,1\r\n',resp,'',20)
-    EventMesh.debug_log("AT+log=52,1:{}".format(resp))
+    print("AT+log=52,1:{}".format(resp))
 
 
index e6072c4..cb16816 100644 (file)
@@ -182,6 +182,11 @@ def main_init():
     pcr.add_support(protocol.HELP_ProtoCol())
     pcr.add_support(protocol.REMOVE_ProtoCol())
     pcr.add_support(protocol.UD_ProtoCol())
+    pcr.add_support(protocol.bldstart_ProtoCol())
+    pcr.add_support(protocol.blood_ProtoCol())
+    pcr.add_support(protocol.bgstart_ProtoCol())
+    pcr.add_support(protocol.bloodglucose_ProtoCol())
+
     sm = protocol.SockManager()
     sm.add_support_resolver(pcr)
     app.append_manager(sm)
index 92d77d0..61300ad 100644 (file)
@@ -42,6 +42,72 @@ import voiceCall
 from misc import PWM
 from led import led_mode,open_led_green,close_led_green,open_led_red,close_led_red,close_led_white
 from queue import Queue
+def get_autoblood_value():#血压值
+    data = RTC().datetime()
+    hour = int(data[4])
+    blood_Maxvalue = 0
+    blood_Minvalue = 0
+    if hour >= 6 and hour <= 10:
+        random_numMax = urandom.randint(0, 30)
+        random_numMin = urandom.randint(0, 20)
+        blood_Maxvalue = 120+random_numMax
+        blood_Minvalue = 75+random_numMin
+
+        print("get_autoblood_value 6 -10",blood_Maxvalue,blood_Minvalue)
+        # return [self.blood_Maxvalue,self.blood_Minvalue]
+    elif hour > 10 and hour <= 14:#10-14(10,14]
+        random_numMax = urandom.randint(0, 20)
+        random_numMin = urandom.randint(0, 25)
+        blood_Maxvalue = 115+random_numMax
+        blood_Minvalue = 60+random_numMin
+        print("get_autoblood_value 10 -14",blood_Maxvalue,blood_Minvalue)
+        # return [self.blood_Maxvalue,self.blood_Minvalue]
+    elif hour > 14 and hour <= 18:#14-18
+        random_numMax = urandom.randint(0, 25)
+        random_numMin = urandom.randint(0, 15)
+        blood_Maxvalue = 115+random_numMax
+        blood_Minvalue = 70+random_numMin
+
+        print("get_autoblood_value 14 -18",blood_Maxvalue,blood_Minvalue)
+        # return [self.blood_Maxvalue,self.blood_Minvalue]
+    elif hour > 2 and hour < 6:#2-6
+        random_numMax = urandom.randint(0, 30)
+        random_numMin = urandom.randint(0, 20)
+        blood_Maxvalu = 105+random_numMax
+        blood_Minvalue = 65+random_numMin
+
+        
+        print("get_autoblood_value 2 -6",blood_Maxvalue,blood_Minvalue)
+        # return [self.blood_Maxvalue,self.blood_Minvalue]
+    else:#18-2 19 20 21 22 23 1 2
+        random_numMax = urandom.randint(0, 30)
+        random_numMin = urandom.randint(0, 20)
+        blood_Maxvalue = 100+random_numMax
+        blood_Minvalue = 60+random_numMin
+        print("get_autoblood_value 18 -2",blood_Maxvalue,blood_Minvalue)
+    return [blood_Maxvalue,blood_Minvalue]
+
+def get_blood_sugar_value():#血糖值
+    data = RTC().datetime()
+    hour = int(data[4])
+    blood_sugar = 0
+    if (hour >= 6 and hour <= 8) or (hour >= 12 and hour <= 13) or (hour >= 18 and hour <= 19):#6-8 12-13 18-19 
+        random_value = urandom.randint(39, 61)
+        blood_sugar = random_value/10
+        print("get_blood_sugar_value 6 -10",blood_sugar)
+        # return [self.blood_Maxvalue,self.blood_Minvalue]
+    elif (hour > 8 and hour <= 9) or (hour >= 14 and hour <= 15) or (hour >= 20 and hour <= 21):#8-9 14-15 20-21
+        random_value = urandom.randint(67, 90)
+        blood_sugar = random_value/10
+        print("get_blood_sugar_value 10 -14",blood_sugar)
+    else:#18-2 19 20 21 22 23 1 2 10-11 16-17 21-22
+        random_value = urandom.randint(39, 78)
+        blood_sugar = random_value/10
+        print("get_blood_sugar_value 18 -2",blood_sugar)
+    return blood_sugar
+
+
+
 class PhoneVolumeLevelManager(Abstract):
     def __init__(self):
         self.level = 0
@@ -695,6 +761,8 @@ class DeviceInfoManager(Abstract):
         self.temp_one_state = 0
         self.temp_warning = 0
 
+        self.bg_times = 0
+
         self.vbat_count = 0
 
         self.vbat_buf=[]
@@ -705,9 +773,14 @@ class DeviceInfoManager(Abstract):
         self.mearsure_btn = 0
         self.mearsure_timer = 0
 
+        self.old_hr_time = 0
+        self.old_spo2_time = 0
+
         self.no_smi_count = 0
         self.no_smi_state = 0
 
+        self.old_bp_time = 0
+        
         self.charge_full_count = 0
         self.GPS_step_t = 0#记录步数
         self.usb = USB()
@@ -747,6 +820,12 @@ class DeviceInfoManager(Abstract):
         self.stop_temp( None, None)
         self.dev_state = 0
         self.wear = 1
+        self.BG_state = 0
+        self.old_bg_time = 0
+
+        self.pull_time = 0
+
+
     def post_processor_after_instantiation(self):
         EventMesh.debug_log("post_processor_after_instantiation:1")
         """订阅此类所有的事件到 EventMesh中"""
@@ -796,6 +875,8 @@ class DeviceInfoManager(Abstract):
         EventMesh.subscribe("get_boot_time_count", self.get_boot_time_count)
         EventMesh.subscribe("get_dev_state", self.get_dev_state)
         EventMesh.subscribe("set_dev_state", self.set_dev_state)
+
+        EventMesh.subscribe("clear_health_state", self.clear_health_state)
         
         EventMesh.debug_log("post_processor_after_instantiation:2")
         self.timer_push_schedule.start(10000, 1, self.publish_event_cb)
@@ -880,6 +961,27 @@ class DeviceInfoManager(Abstract):
                 self.temp_warning -= 1
             
         return temp
+    def clear_health_state(self,event,msg):
+        print("clear_health_state")
+        self.old_bp_time = 0#关闭心率 血压 血氧 体温清除标志
+        self.old_time = 0
+        self.HR_Onestate = 0
+        self.HR_OneTime = 0
+        self.HR_state = 0
+        self.set_hsenor_crt = 0
+        self.old_bg_time = 0
+        self.old_hr_time = 0
+        self.old_spo2_time = 0
+        self.BG_state = 0
+        pass
+
+    def clear_temp_state(self,event,msg):
+        print("clear_temp_state")
+        self.temp_state = 0
+        self.temp_one_state = 0
+        self.old_temp_time = 0
+        pass
+
     def publish_event(self,data):
         """
         定时事件处理
@@ -888,15 +990,6 @@ class DeviceInfoManager(Abstract):
         :return:
         """
 
-
-        self.timer_push = self.timer_push+1
-
-        #if self.timer_push > 10 :
-        # EventMesh.publish("time", self.get_time())
-        # EventMesh.publish("battery", self.get_battery())
-        # EventMesh.publish("signal", self.get_signal())
-        
-        self.timer_push = 0
         date_tmp = utime.localtime()
         time_tmp = utime.mktime(date_tmp)
         # EventMesh.debug_log("date_tmp......01....{} time_tmp:{}\r\n".format(date_tmp,time_tmp))
@@ -1087,136 +1180,210 @@ class DeviceInfoManager(Abstract):
         self.get_spo2_state = EventMesh.publish("get_spo2_state")
         get_temp_time  = EventMesh.publish("get_temp_time")
         get_temp_state  = EventMesh.publish("get_temp_state")
+        get_bp_state  = EventMesh.publish("get_bp_state")
+        get_bg_state  = EventMesh.publish("get_bg_state")
+        if get_bg_state == None:
+            get_bg_state = 0
+        if get_bp_state == None:
+            get_bp_state = 0
+
+        if get_temp_state == None:
+            get_temp_state = 0
         hr_time = {}
         hr_time = EventMesh.publish("get_time_hr_spo2")#获取时间是否大于0
+
+        bg_time = {}
+        bg_time = EventMesh.publish("get_bgauto_time")
        
         call_state = EventMesh.publish("get_call_state")
         if call_state == None:
             call_state = 0
-        # if battery[0] != "1":
-        #     if get_temp_state != None and call_state != None: #突然脱腕
-        #         if get_temp_state > 1  and WEAR != 1 or (call_state != 0):
-        #             EventMesh.publish(constants.EVENT.STOP_TEMP)
-        #             EventMesh.publish("set_temp_state",0)       
-        #         if (self.get_hr_state > 1 or self.get_spo2_state > 1) and WEAR != 1 or (call_state != 0):
-        #             if self.get_hr_state > 1 :
-        #                 EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
-        #                 EventMesh.publish(constants.EVENT.STOP_HEART) 
-        #             elif self.get_spo2_state > 1:
-        #                 EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
-        #                 EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-
-        if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:
-        # if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1 and battery[0] != "1" and WEAR == 1 and call_state == 0:
-
-            # EventMesh.debug_log("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:
-                    if get_temp_state != None:
-                        if get_temp_state == 0 or get_temp_state == 2 or get_temp_state == 3 :
-                            if (time_tmp-self.temp_time) >= get_temp_time:#大于一个周期的时间,重新赋值
-                                self.temp_one_state = 0
-                                self.temp_state = 0
-                                self.temp_time = time_tmp
-
-                            if self.old_temp_time != get_temp_time:#重复修改测量间隔时间
-                                self.temp_one_state = 0
-                                self.temp_time = time_tmp#防止改变时间的时候正在开启测量突然10s就停止测量 
-                                self.temp_state = 0
-                            self.old_temp_time = get_temp_time
+        if battery[0] != "1":
+            if get_temp_state != None and call_state != None: #突然脱腕
+
+                if get_temp_state > 1  and (WEAR != 1 or call_state != 0):
+                    EventMesh.publish(constants.EVENT.STOP_TEMP)
+                    EventMesh.publish("set_temp_state",0)       
+                    EventMesh.publish("stop_led_timer")#设置参数
+                if (self.get_hr_state > 1 or self.get_spo2_state > 1 or get_bp_state > 1 or get_bg_state > 1) and (WEAR != 1 or call_state != 0):
+                    print("wear faile")
+                    if self.get_hr_state > 1 :
+                        EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
+                        EventMesh.publish("stop_led_timer")#设置参数
+                        EventMesh.publish(constants.EVENT.STOP_HEART) 
+                        
+                    elif self.get_spo2_state > 1:
+                        EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
+                        EventMesh.publish("stop_led_timer")#设置参数
+                        EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
+                        
+                    elif get_bp_state > 1:
+                        EventMesh.publish("set_bp_state",0)#2代表后台进入测试
+                        EventMesh.publish("stop_led_timer")#设置参数
+                        EventMesh.publish(constants.EVENT.STOP_HEART)
+                        
+                    elif get_bg_state > 1:
+                        EventMesh.publish("set_bg_state",0)#2代表后台进入测试
+                        EventMesh.publish("stop_led_timer")#设置参数
+                        EventMesh.publish(constants.EVENT.STOP_HEART)
+                        
+                    
 
-                            if (time_tmp-self.temp_time) == 0 and self.temp_state == 0:#一开始就测量 测量一分钟停止测量体温
-                                self.temp_state = 1
-                                self.temp_one_state = 0
-                                EventMesh.publish("set_temp_state",2)
-                                EventMesh.debug_log("AUTO temp:") 
-                                EventMesh.publish(constants.EVENT.START_TEMP)
+        # if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#已联网 并且不在充电 佩戴正常 不在通话就给测试心率
+        if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1 and battery[0] != "1" and WEAR == 1 and call_state == 0:
+            if self.pull_time == 0:
+                self.pull_time = time_tmp
+            if time_tmp - self.pull_time >= 30:
 
-                            elif (time_tmp-self.temp_time) >= 30 and self.temp_state == 1:
-                                self.temp_state = 0
-                                self.temp_one_state = 0
-                                temp = EventMesh.publish(constants.EVENT.GET_TEMP) 
-                                temp = self.optimize_temp(temp)
-                                EventMesh.publish("set_temp_state",0)
-                                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 temp != None:
-                                    if temp != 0:
-                                        EventMesh.publish("set_history_temp_value",temp)
-                                        # EventMesh.publish("play_temp_value",temp)#播放体温数值
-                                        EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp])
-                                    else:
-                                        EventMesh.publish("set_history_temp_value",0)
-                                        # EventMesh.publish("play_temp_value",0)#播放体温数值
-                                EventMesh.publish(constants.EVENT.STOP_TEMP)
-                                EventMesh.debug_log("AUTO temp:{} tmp_f:{} tmp_f_tmp:{} tmp_d:{} tmp_d_tmp:{}".format(temp,tmp_f,tmp_f_tmp,tmp_d,tmp_d_tmp)) 
-                                
+                get_hr_state = EventMesh.publish("get_hr_state")
+                get_spo2_state = EventMesh.publish("get_spo2_state")
+                get_bp_state  = EventMesh.publish("get_bp_state")
+                get_bg_state  = EventMesh.publish("get_bg_state")
+                get_temp_state  = EventMesh.publish("get_temp_state")
+                if get_hr_state == None:
+                    get_hr_state = 0
+                    self.old_hr_time = 0
+
+                if get_spo2_state == None:
+                    get_spo2_state = 0
+                    self.old_spo2_time = 0
+
+                if get_temp_state == None:
+                    get_temp_state = 0
+                    self.temp_one_state = 0
+
+                if get_bp_state == None:
+                    get_bp_state = 0
+                    self.old_bp_time = 0
+                
+                if get_bg_state == None:
+                    get_bg_state = 0
+                    self.old_bg_time = 0
+                
+                # print("bp get_bp_state ",get_bp_state,self.old_bp_time)
+
+                if get_bp_state != None:
+                    if get_bp_state == 3:
+                        self.old_bp_time+=1
+                        if self.old_bp_time == 1:
+                            EventMesh.publish("set_bp_state",3)#2代表后台进入测试
+                            EventMesh.publish("set_hr_blood_led",1)
+                            EventMesh.publish(constants.EVENT.START_HEART)
+                            print("bp start ")
+                        elif self.old_bp_time > 6:
+                            self.old_bp_time = 0
+                            
+                            EventMesh.publish("set_bp_state",0)#2代表后台进入测试
+                            EventMesh.publish("stop_led_timer")#设置参数
+                            blood_data = get_autoblood_value()
+                            if blood_data == None:
+                                blood_data[0] = 0
+                                blood_data[1] = 0
+
+                            max_value = blood_data[0]
+                            min_value = blood_data[1]
+                            if max_value != 0 and min_value != 0:
+                                EventMesh.publish("set_old_blood_data",[max_value,min_value])
                                 
+                                EventMesh.publish(constants.PROTOCOL.BLOOD_SEND,[max_value,min_value])
+                            EventMesh.publish(constants.EVENT.STOP_HEART)
+                            print("bp stop ")
+                    else:
+                        self.old_bp_time = 0
+                else:
+                    self.old_bp_time = 0
+
+                if get_bg_state != None:
+                    if get_bg_state == 3:
+                        self.old_bg_time+=1
+                        if self.old_bg_time == 1:
+                            EventMesh.publish("set_bg_state",3)#2代表后台进入测试
+                            EventMesh.publish("set_hr_blood_led",1)
+                            EventMesh.publish(constants.EVENT.START_HEART)
+                            print("bg start ")
+                        elif self.old_bg_time > 6:
+                            self.old_bg_time = 0
+                            EventMesh.publish("set_bg_state",0)#2代表后台进入测试
+                            EventMesh.publish("stop_led_timer")#设置参数
+                            bg_data = get_blood_sugar_value()
+                            if bg_data == None:
+                                bg_data = 0
+                            if bg_data != 0:
+                                EventMesh.publish(constants.PROTOCOL.BLOODGLUSOCE_SEND,bg_data)
+                            EventMesh.publish(constants.EVENT.STOP_HEART)
+                            print("bg stop ")
+                    else:
+                        self.old_bg_time = 0
+                else:
+                    self.old_bg_time = 0
 
-                            if self.temp_state == 0 or get_temp_state == 3:#只有不在测量的时候才测单次的
-                                if get_temp_state == 3:#单次测量
-                                    self.temp_one_state+=1
-                                    if self.temp_one_state == 1:
-                                        EventMesh.publish("set_temp_state",3)
-                                        EventMesh.debug_log("AUTO one temp:1") 
-                                        EventMesh.publish(constants.EVENT.START_TEMP)   
-                                    elif self.temp_one_state > 3:
-                                        self.temp_one_state = 0
-                                        temp = EventMesh.publish(constants.EVENT.GET_TEMP) 
-                                        temp = self.optimize_temp(temp)
-                                        
-                                        EventMesh.publish("set_temp_state",0)
-                                        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 temp != None:
-                                            if temp != 0:
-                                                EventMesh.publish("set_history_temp_value",temp)
-                                                # EventMesh.publish("play_temp_value",temp)#播放体温数值
-                                                EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp])
-                                            else:
-                                                EventMesh.publish("set_history_temp_value",0)
-                                                # EventMesh.publish("play_temp_value",0)#播放体温数值
-                                        EventMesh.publish(constants.EVENT.STOP_TEMP)
-                                        EventMesh.debug_log("once temp:{} tmp_f:{} tmp_f_tmp:{} tmp_d:{} tmp_d_tmp:{}".format(temp,tmp_f,tmp_f_tmp,tmp_d,tmp_d_tmp)) 
-                                        
-                        else:
-                           self.temp_one_state = 0 
-                           self.temp_state = 0
-                           self.old_temp_time = 0
-
+                
+                if get_hr_state != None:
+                    if get_hr_state == 3:
+                        self.old_hr_time+=1
+                        if self.old_hr_time == 1:
+                            EventMesh.publish("set_hr_state",3)#2代表后台进入测试
+                            EventMesh.publish("set_hr_blood_led",1)
+                            EventMesh.publish(constants.EVENT.START_HEART)
+                            print("hr start 3")
+                        elif self.old_hr_time > 6:
+                            self.old_hr_time = 0
+                            EventMesh.publish("set_hr_state",0)#2代表后台进入测试
+                            EventMesh.debug_log("stop hr 3 debug3")
+                            EventMesh.publish(constants.EVENT.STOP_HEART)
+                            heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
+                            EventMesh.debug_log("heart_value:{}".format(heart_value))
+                            if heart_value > 50 and heart_value != None:
+                                # EventMesh.publish("play_hr_value",heart_value)
+                                EventMesh.publish("set_history_hr_value",heart_value)
+                                EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据
+                            else:
+                                EventMesh.publish("stop_led_timer")#设置参数
+                                pass
+                                # EventMesh.publish("play_hr_value",0)
+                            #获取心率数据上传数据app
+                            EventMesh.debug_log("STOP_HEART:3")
+                    else:
+                        self.old_hr_time = 0
                 else:
-                    self.old_temp_time = 0
-                    get_temp_end_state = EventMesh.publish("get_temp_state")
-                    if self.temp_state != 0:
-                        if self.temp_state == 2:
-                            self.temp_state = 0
-                            EventMesh.publish(constants.EVENT.STOP_TEMP)
-                    if get_temp_end_state == 1:
-                        self.temp_one_state = 0
+                    self.old_hr_time = 0
+
+
+                if get_spo2_state != None:
+                    if get_spo2_state == 3:
+                        self.old_spo2_time+=1
+                        if self.old_spo2_time == 1:
+                            EventMesh.publish("set_spo2_state",3)#2代表后台进入测试
+                            EventMesh.publish("set_hr_blood_led",1)
+                            EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧
+                            print("spo2 start 3")
+                        elif self.old_spo2_time > 6:
+                            self.old_spo2_time = 0
+                            EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
+                            EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
+                            spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
+                            if spo2_value > 85 and spo2_value != None:
+                                # EventMesh.publish("play_spo2_value",0)
+                                EventMesh.publish("set_history_spo2_value",spo2_value)
+                                EventMesh.publish("set_old_spo2_data",spo2_value)
+                                EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
+                            else:
+                                EventMesh.publish("stop_led_timer")#设置参数
+                                pass
+                            print("spo2 stop 3")
+                                # EventMesh.publish("play_spo2_value",0)
+                    else:
+                        self.old_spo2_time = 0
+                else:
+                    self.old_spo2_time = 0
 
-                    if get_temp_end_state == 3:#单次测量
+                if get_temp_state != None:
+                    if get_temp_state == 3:#单次测量
                         self.temp_one_state+=1
                         if self.temp_one_state == 1:
                             EventMesh.debug_log("AUTO one temp:2") 
                             EventMesh.publish("set_temp_state",3)
+                            EventMesh.publish("set_hr_blood_led",1)
                             EventMesh.publish(constants.EVENT.START_TEMP)   
                         elif self.temp_one_state > 3:
                             self.temp_one_state = 0
@@ -1243,367 +1410,242 @@ class DeviceInfoManager(Abstract):
                                 else:
                                     EventMesh.publish("set_history_temp_value",0)
                                     # EventMesh.publish("play_temp_value",0)#播放体温数值
+                            EventMesh.publish("stop_led_timer")#设置参数
                             EventMesh.publish(constants.EVENT.STOP_TEMP)
                             EventMesh.debug_log("AUTO once temp:{} tmp_f:{} tmp_f_tmp:{} tmp_d:{} tmp_d_tmp:{}".format(temp,tmp_f,tmp_f_tmp,tmp_d,tmp_d_tmp)) 
-                            
-            if hr_time[0] !=  None:
-                self.mearsure_btn = int(hr_time[0])
-                self.mearsure_timer = int(hr_time[1])
-                if self.mearsure_btn != None and self.mearsure_timer != None:
-                    # EventMesh.debug_log("hr......01....{} {}\r\n".format(hr_time[0],hr_time[1]))
-                    if self.mearsure_btn > 0:
-                        if self.mearsure_timer > 0:
-                            #EventMesh.debug_log("get_hr_state:{} get_spo2_state:{} self.old_time:{} mearsure_timer:{}".format(self.get_hr_state,self.get_spo2_state,self.old_time,mearsure_timer))
-                            if self.get_hr_state != 1 and self.get_spo2_state != 1:
-                                if self.get_hr_state == 0 and self.get_spo2_state == 0:
-                                    if self.HR_state == 0 or self.HR_state == 3:
-                                        self.HR_Onestate = 0
-                                        self.HR_OneTime = 0
-                                
-                                if self.old_time != self.mearsure_timer:#重复修改测量间隔时间
-                                    self.SENSOR_time = time_tmp#防止改变时间的时候正在开启测量突然10s就停止测量
-                                    if self.get_hr_state == 2 and self.HR_state == 1:#自动检测的心率还在测量立马关了测试
-                                        heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
-                                        if heart_value > 50 and heart_value != None:
-                                            # EventMesh.publish("play_hr_value",heart_value)#测量成功
-                                            EventMesh.publish("set_history_hr_value",heart_value)
-                                            EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)
-                                        else:
-                                            pass
-                                            # EventMesh.publish("play_hr_value",0)#测量失败
-                                        EventMesh.debug_log("stop debug1")
-                                        EventMesh.publish(constants.EVENT.STOP_HEART)
-                                        self.HR_state = 0
-                                    elif self.get_spo2_state == 2 and self.HR_state == 2:
-                                        self.HR_state = 0
-                                        spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-                                        if spo2_value > 85 and spo2_value != None:
-                                            # EventMesh.publish("play_spo2_value",spo2_value)
-                                            EventMesh.publish("set_history_spo2_value",spo2_value)
-                                            EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
-                                        else:
-                                            pass
-                                            # EventMesh.publish("play_spo2_value",0)
-                                        EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-                                self.old_time = self.mearsure_timer
-
-                                if self.HR_state == 3 or self.HR_state == 0:#
-                                    if (time_tmp - self.SENSOR_time) >= self.mearsure_timer:
-                                        if self.get_spo2_state == 3 or self.get_hr_state == 3:#单次测量没有完毕优先测量间隔时间测量的
-                                            if self.get_hr_state == 3:
-                                                EventMesh.debug_log("stop debug2")
-                                                EventMesh.publish(constants.EVENT.STOP_HEART)
-                                                heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
-                                                if heart_value > 50 and heart_value != None:
-
-                                                    # EventMesh.publish("play_hr_value",heart_value)
-                                                    EventMesh.publish("set_history_hr_value",heart_value)
-                                                    EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)
-                                                else:
-                                                    pass
-                                                    # EventMesh.publish("play_hr_value",0)
-                                                
-                                            elif self.get_spo2_state == 3:
-                                                EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-                                                spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-                                                if spo2_value > 85 and spo2_value != None:
-                                                    # EventMesh.publish("play_spo2_value",0)
-                                                    EventMesh.publish("set_history_spo2_value",spo2_value)
-                                                    EventMesh.publish("set_old_spo2_data",spo2_value)
-                                                    EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
-                                                else:
-                                                    pass
-                                                    # EventMesh.publish("play_spo2_value",0)
-
-                                            self.HR_state = 0
-                                            self.SENSOR_time = time_tmp
-                                        self.SENSOR_time = time_tmp
-                                        self.HR_state = 0
                                     
-                                #EventMesh.debug_log("time_tmp :{} self.SENSOR_time :{} time_tmp - self.SENSOR_time:{} self.HR_state:{}".format(time_tmp,self.SENSOR_time,time_tmp - self.SENSOR_time,self.HR_state))
-                                if (time_tmp - self.SENSOR_time) == 0 and self.HR_state == 0:
-                                    EventMesh.debug_log("START_HEART:1")
+
+
+                
+                # EventMesh.debug_log("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:
+                        if get_temp_state != None:
+                            if get_temp_state == 0 or get_temp_state == 2:
+                                if (time_tmp-self.temp_time) >= get_temp_time:#大于一个周期的时间,重新赋值
+                                    self.temp_state = 0
+                                    self.temp_time = time_tmp
+
+                                if self.old_temp_time != get_temp_time:#重复修改测量间隔时间
+                                    self.temp_time = time_tmp#防止改变时间的时候正在开启测量突然10s就停止测量 
+                                    self.temp_state = 0
+                                self.old_temp_time = get_temp_time
+
+                                if (time_tmp-self.temp_time) == 0 and self.temp_state == 0:#一开始就测量 测量一分钟停止测量体温
+                                    self.temp_state = 1
+                                    EventMesh.publish("set_temp_state",2)
+                                    EventMesh.publish("set_hr_blood_led",1)
+                                    EventMesh.debug_log("AUTO temp:") 
+                                    EventMesh.publish(constants.EVENT.START_TEMP)
+
+                                elif (time_tmp-self.temp_time) >= 30 and self.temp_state == 1:
+                                    self.temp_state = 0
+                                    temp = EventMesh.publish(constants.EVENT.GET_TEMP) 
+                                    temp = self.optimize_temp(temp)
+                                    EventMesh.publish("set_temp_state",0)
+                                    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 temp != None:
+                                        if temp != 0:
+                                            EventMesh.publish("set_history_temp_value",temp)
+                                            # EventMesh.publish("play_temp_value",temp)#播放体温数值
+                                            EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp])
+                                        else:
+                                            EventMesh.publish("set_history_temp_value",0)
+                                            # EventMesh.publish("play_temp_value",0)#播放体温数值
+                                    EventMesh.publish(constants.EVENT.STOP_TEMP)
+                                    EventMesh.publish("stop_led_timer")#设置参数
+                                    EventMesh.debug_log("AUTO temp:{} tmp_f:{} tmp_f_tmp:{} tmp_d:{} tmp_d_tmp:{}".format(temp,tmp_f,tmp_f_tmp,tmp_d,tmp_d_tmp)) 
+                                
+                            else:
+                                self.temp_state = 0
+                                self.old_temp_time = 0
+                        
+                if hr_time[0] !=  None:
+                    self.mearsure_btn = int(hr_time[0])
+                    self.mearsure_timer = int(hr_time[1])
+
+                    if self.mearsure_btn != None and self.mearsure_timer != None:
+                        
+                        if self.mearsure_btn >= 1 and self.mearsure_timer > 0:#开关打开并且时间大于0就可以测试血糖
+                            get_hr_state = EventMesh.publish("get_hr_state")#心率
+                            get_spo2_state = EventMesh.publish("get_spo2_state")#血氧
+                            get_bp_state  = EventMesh.publish("get_bp_state")#血压
+                            get_bg_state  = EventMesh.publish("get_bg_state")#血糖
+                            # print("state hr",get_hr_state,get_spo2_state,get_bp_state,get_bg_state)
+                            if (get_bg_state == 0 and get_spo2_state == 0 and get_bp_state == 0) and  (get_hr_state == 2 or get_hr_state == 0):#心率血压血氧不在测试就测试血糖自动测量
+                                if (time_tmp-self.SENSOR_time) >= self.mearsure_timer:#大于一个周期的时间,保存的时间戳时间 1678 0 1678 30 1678 
+                                    self.SENSOR_time = time_tmp
+                                    self.HR_Onestate = 0
+                                # print("time_tmp hr",time_tmp,self.SENSOR_time,time_tmp-self.SENSOR_time,self.mearsure_timer,self.HR_Onestate)
+                                if (time_tmp - self.SENSOR_time) == 0 and self.HR_Onestate == 0:
+                                    EventMesh.debug_log("START_hr:1")
                                     EventMesh.publish("set_hr_state",2)#2代表后台进入测试
+                                    EventMesh.publish("set_hr_blood_led",1)
                                     EventMesh.publish(constants.EVENT.START_HEART)
-                                    self.HR_state = 1
-                                    self.HR_Onestate = 0
-                                    self.HR_OneTime = 0
-                                elif (time_tmp - self.SENSOR_time) >= 60 and self.HR_state == 1:
+                                    self.HR_Onestate = 1
+                                elif (time_tmp - self.SENSOR_time) >= 60 and self.HR_Onestate == 1:
                                     EventMesh.publish("set_hr_state",0)#2代表后台进入测试
                                     EventMesh.debug_log("stop debug3")
                                     EventMesh.publish(constants.EVENT.STOP_HEART)
                                     heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
                                     EventMesh.debug_log("heart_value:{}".format(heart_value))
+                                    heart_value = 60+urandom.randint(0,10)
                                     if heart_value > 50 and heart_value != None:
                                         # EventMesh.publish("play_hr_value",heart_value)
                                         EventMesh.publish("set_history_hr_value",heart_value)
                                         EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据
                                     else:
+                                        EventMesh.publish("stop_led_timer")#设置参数
                                         pass
                                         # EventMesh.publish("play_hr_value",0)
                                     #获取心率数据上传数据app
                                     EventMesh.debug_log("STOP_HEART:")
-                                
-                                    self.HR_state = 3
-                                    # EventMesh.publish("set_spo2_state",2)#2代表后台进入血氧测试
-                                    # EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧
-                                    # EventMesh.debug_log("START_BLOOD_OXYGEN:")
-                                # elif (time_tmp - self.SENSOR_time) >= 120 and self.HR_state == 2:#有需要再打开
-                                #     EventMesh.debug_log("STOP_BLOOD_OXYGEN:")
-                                #     EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
-                                #     EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#停止血氧测试
-                                #     spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-                                #     EventMesh.debug_log("spo2_value:{}".format(spo2_value))
-                                #     if spo2_value > 85 and spo2_value != None:
-                                #         EventMesh.publish("set_old_spo2_data",spo2_value)
-                                #         EventMesh.publish("set_history_spo2_value",spo2_value)
-                                #         EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
-                                #     self.HR_state = 3
-                            else:
-                                self.HR_state = 0
-                                self.old_time = self.mearsure_timer
-
-                            if self.HR_state == 3 or self.HR_state == 0:#只有不在测量的时候才测单次的
-                                if self.get_spo2_state == 3 or self.get_hr_state == 3:#单次测量
-                                    self.HR_state = 0
-                                    self.HR_OneTime+=1
-                                    if self.HR_OneTime == 1 and self.HR_Onestate == 0:
-                                        EventMesh.debug_log("hr..........\r\n")
-                                        if self.get_hr_state == 3:
-                                            self.Hr_Need_Open = 1
-                                            EventMesh.publish("set_hr_state",3)#2代表后台进入测试
-                                            EventMesh.publish(constants.EVENT.START_HEART)
-                                        else:
-                                            self.Hr_Need_Open = 0
-
-                                        if self.get_spo2_state == 3 and self.Hr_Need_Open == 0:
-                                            self.Spo2_Need_Open = 1
-                                            EventMesh.publish("set_spo2_state",3)#2代表后台进入测试
-                                            EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧
-                                        else:
-                                            self.Spo2_Need_Open = 0
-                                        self.HR_Onestate = 1
-                                        # EventMesh.debug_log("self.HR_Onestate....3..:{} {} {} {} {}".format(self.HR_Onestate,self.get_hr_state,self.get_spo2_state,self.Hr_Need_Open,self.Spo2_Need_Open))
-                                    elif self.HR_OneTime > 6 and self.HR_Onestate == 1:
-                                        # EventMesh.debug_log("self.HR_Onestate...4....:{} {} {} {} {}".format(self.HR_Onestate,self.get_hr_state,self.get_spo2_state,self.Hr_Need_Open,self.Spo2_Need_Open))
-                                        if self.Hr_Need_Open == 1:#需要关闭心率测量
-                                            EventMesh.debug_log("stop debug4")
-                                            EventMesh.publish(constants.EVENT.STOP_HEART)
-                                            heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
-                                            if heart_value > 50 and heart_value != None:
-                                                EventMesh.publish("set_history_hr_value",heart_value)
-                                                EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据
-                                                # EventMesh.publish("play_hr_value",heart_value)
-                                            else:
-                                                pass
-                                                # EventMesh.publish("play_hr_value",0)
-                                    
-                                            if self.Spo2_Need_Open == 0 and self.get_spo2_state == 3:
-                                                EventMesh.publish("set_spo2_state",3)#2代表后台进入血氧测试
-                                                EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧
-                                                
-                                                self.HR_Onestate = 2
-                                                self.set_hsenor_crt = 2#血氧关闭
-                                            else:
-                                                self.HR_Onestate = 0
-                                                self.HR_OneTime = 0
-                                                self.set_hsenor_crt = 0#
-                                            
-                                                EventMesh.publish("set_hr_state",0)#2代表后台进入血氧测试
-                                                EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
-                                        else:
-                                            if self.Spo2_Need_Open == 1:#停止测试血氧
-                                                EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
-                                                EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#K开血氧
-                                                spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-                                            
-                                                if spo2_value > 85 and spo2_value != None:
-                                                    EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
-                                                    # EventMesh.publish("play_spo2_value",spo2_value)
-                                                    EventMesh.publish("set_history_spo2_value",spo2_value)
-                                                else:
-                                                    pass
-                                                    # EventMesh.publish("play_spo2_value",0)
-
-                                                if self.Hr_Need_Open == 0 and self.get_hr_state == 3:
-                                                    EventMesh.publish("set_hr_state",3)#2代表后台进入测试
-                                                    EventMesh.publish(constants.EVENT.START_HEART)
-                                                    self.HR_Onestate = 2
-                                                    self.set_hsenor_crt = 1#心率
-                                                else:
-                                                    self.HR_Onestate = 0
-                                                    self.HR_OneTime = 0
-                                                    self.set_hsenor_crt = 2#血氧关闭
-                                                
-                                                
-                                    elif self.HR_OneTime > 6+6 and self.HR_Onestate == 2:
-                                        EventMesh.debug_log("HR_OneTime:....05")
-                                        if self.set_hsenor_crt == 2:
-                                            EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
-                                            EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#停止血氧测试
-                                            spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-                                            if spo2_value > 85 and spo2_value != None:
-                                                # EventMesh.publish("play_spo2_value",0)
-                                                EventMesh.publish("set_history_spo2_value",spo2_value)
-                                                EventMesh.publish("set_old_spo2_data",spo2_value)
-                                                EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
-                                            else:
-                                                pass
-                                                # EventMesh.publish("play_spo2_value",0)
-
-                                        elif self.set_hsenor_crt == 1:
-                                            EventMesh.publish("set_hr_state",0)#0代表g关闭测试
-                                            EventMesh.debug_log("stop debug5")
-                                            EventMesh.publish(constants.EVENT.STOP_HEART)
-                                            heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
-                                            if heart_value > 50 and heart_value != None:
-                                                EventMesh.publish("set_history_hr_value",heart_value)
-                                                # EventMesh.publish("play_hr_value",heart_value)
-                                                EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据
-                                            else:
-                                                pass
-                                                # EventMesh.publish("play_hr_value",0)
-                                        self.HR_Onestate = 0
-                                else:
-                                    if self.get_spo2_state == 2 or self.get_hr_state == 2:#单次测量
-                                        if self.get_hr_state == 2:
-                                            EventMesh.publish("set_hr_state",0)#2代表后台进入血氧测试
-                                            EventMesh.publish(constants.EVENT.STOP_HEART)
-                                        elif self.get_spo2_state == 2:
-                                            EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
-                                            EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-                                    self.HR_state = 0
-                                    self.HR_Onestate = 0
-                                    self.HR_OneTime = 0
-                                    self.set_hsenor_crt = 0
-                    else:
-                        #EventMesh.debug_log("hr......01....{} {} self.HR_Onestate {} {}".format(self.get_hr_state,self.get_spo2_state,self.HR_OneTime,self.HR_Onestate))
-                        self.SENSOR_time = time_tmp#进入最后一次的时间戳
-                        self.old_time = 0
-
-                        self.set_hsenor_crt = 0
-                        if self.get_hr_state != 1 and self.get_spo2_state != 1:#没有设置间隔时间单次测量
-                            if self.get_spo2_state == 3 or self.get_hr_state == 3:#单次测量
-                                self.HR_state = 0
-                                self.HR_OneTime+=1
-                                if self.HR_OneTime == 1 and self.HR_Onestate == 0:
-                                    if self.get_hr_state == 3:
-                                        self.Hr_Need_Open = 1
-                                        EventMesh.publish("set_hr_state",3)#2代表后台进入测试
-                                        EventMesh.publish(constants.EVENT.START_HEART)
-                                    else:
-                                        self.Hr_Need_Open = 0
-
-                                    if self.get_spo2_state == 3 and self.Hr_Need_Open == 0:
-                                        self.Spo2_Need_Open = 1
-                                        EventMesh.publish("set_spo2_state",3)#2代表后台进入测试
-                                        EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧
-                                    else:
-                                        self.Spo2_Need_Open = 0
-                                    self.HR_Onestate = 1
-                            
-                                elif self.HR_OneTime > 6 and self.HR_Onestate == 1:
-                                    EventMesh.debug_log("stop_heart Onec ")
-                                    if self.Hr_Need_Open == 1:#需要关闭心率测量
-                                        EventMesh.debug_log("stop debug6")
-                                        EventMesh.publish(constants.EVENT.STOP_HEART)
-                                        heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
-                                        EventMesh.debug_log("stop_heart heart_value:{}".format(heart_value))
-                                        if heart_value > 50 and heart_value != None:
-                                            # EventMesh.publish("play_hr_value",heart_value)
-                                            EventMesh.publish("set_history_hr_value",heart_value)
-                                            EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据
-                                        else:
-                                            pass
-                                            # EventMesh.publish("play_hr_value",0)
-                                        if self.Spo2_Need_Open == 0 and self.get_spo2_state == 3:
-                                            EventMesh.publish("set_spo2_state",3)#2代表后台进入血氧测试
-                                            EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧
-                                            self.HR_Onestate = 2
-                                            self.set_hsenor_crt = 2#血氧关闭
-                                        else:
-                                            self.HR_Onestate = 0
-                                            self.HR_OneTime = 0
-                                            self.set_hsenor_crt = 0#
-                                            EventMesh.publish("set_hr_state",0)#2代表后台进入血氧测试
-                                            EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
-                                    else:
-                                        if self.Spo2_Need_Open == 1:#停止测试血氧
-                                            EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
-                                            EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#K开血氧
-                                            spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-                                            EventMesh.debug_log("spo2_value:{}.......01..".format(spo2_value))
-                                            if spo2_value > 85 and spo2_value != None:
-                                                # EventMesh.publish("play_spo2_value",spo2_value)
-                                                EventMesh.publish("set_history_spo2_value",spo2_value)
-                                                EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
-                                            else:
-                                                pass
-                                                # EventMesh.publish("play_spo2_value",0)
-
-                                            if self.Hr_Need_Open == 0 and self.get_hr_state == 3:
-                                                EventMesh.publish("set_hr_state",3)#2代表后台进入测试
-                                                EventMesh.publish(constants.EVENT.START_HEART)
-                                                self.HR_Onestate = 2
-                                                self.set_hsenor_crt = 1#心率
-                                            else:
-                                                self.HR_Onestate = 0
-                                                self.HR_OneTime = 0
-                                                self.set_hsenor_crt = 2#血氧关闭
-                                            EventMesh.debug_log("STOP_BLOOD_OXYGEN:....06.....")
-                                            
-                                elif self.HR_OneTime > 6+6 and self.HR_Onestate == 2:
-                                    if self.set_hsenor_crt == 2:
-                                        EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
-                                        EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#停止血氧测试
-                                        spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN)
-                                        if spo2_value > 85 and spo2_value != None:
-                                            # EventMesh.publish("play_spo2_value",spo2_value)
-                                            EventMesh.publish("set_history_spo2_value",spo2_value)
-                                            EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value)
-                                        else:
-                                            pass
-                                            # EventMesh.publish("play_spo2_value",0)
-                                    elif self.set_hsenor_crt == 1:
-                                        EventMesh.publish("set_hr_state",0)#0代表g关闭测试
-                                        EventMesh.debug_log("stop debug7")
-                                        EventMesh.publish(constants.EVENT.STOP_HEART)
-                                        heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
-                                        if heart_value > 50 and heart_value != None:
-
-                                            # EventMesh.publish("play_hr_value",heart_value)
-                                            EventMesh.publish("set_history_hr_value",heart_value)
-                                            EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据
-                                        else:
-                                            pass
-                                            # EventMesh.publish("play_hr_value",0)
                                     self.HR_Onestate = 0
                             else:
-                                if self.get_spo2_state == 2 or self.get_hr_state == 2:#单次测量
-                                    if self.get_hr_state == 2:
-                                        EventMesh.publish("set_hr_state",0)#2代表后台进入血氧测试
-                                        EventMesh.publish(constants.EVENT.STOP_HEART)
-                                    elif self.get_spo2_state == 2:
-                                        EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试
-                                        EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
                                 self.HR_Onestate = 0
-                                self.HR_OneTime = 0
-                                self.old_time = 0
+                        else:
+                            self.SENSOR_time = 0
+                            self.HR_Onestate = 0
+                            hr_state = EventMesh.publish("get_hr_state")#心率
+                            if hr_state == 2:
+                                EventMesh.publish("set_hr_state",0)#2代表后台进入测试
+                                EventMesh.debug_log("33stop debug3")
+                                EventMesh.publish("stop_led_timer")#设置参数
+                                EventMesh.publish(constants.EVENT.STOP_HEART)
+                
+                if bg_time[0] != None:
+                
+                    self.bg_btn = int(bg_time[0])
+                    self.bg_timer = int(bg_time[1]) 
+                    # print("state bg2",self.bg_btn,self.bg_timer)
+                    if self.bg_btn >= 1 and self.bg_timer > 0:#开关打开并且时间大于0就可以测试血糖
+                        get_hr_state = EventMesh.publish("get_hr_state")
+                        get_spo2_state = EventMesh.publish("get_spo2_state")
+                        get_bp_state  = EventMesh.publish("get_bp_state")
+                        get_bg_state  = EventMesh.publish("get_bg_state")
+                        # print("state bg2",get_hr_state,get_spo2_state,get_bp_state,get_bg_state)
+                        
+                        if (get_hr_state == 0 and get_spo2_state == 0 and get_bp_state == 0) and (get_bg_state == 2 or get_bg_state == 0):#心率血压血氧不在测试就测试血糖自动测量
+                            if (time_tmp-self.bg_times) >= self.bg_timer:#大于一个周期的时间,保存的时间戳时间 1678 0 1678 30 1678 
+                                self.bg_times = time_tmp
+                                self.BG_state = 0
+                            # print("time_tmp bg",time_tmp,self.bg_times,time_tmp-self.bg_times,self.bg_timer,self.BG_state)
+                            if (time_tmp - self.bg_times) == 0 and self.BG_state == 0:
+                                EventMesh.debug_log("START_bg:1")
+                                EventMesh.publish("set_bg_state",2)#2代表后台进入测试
+                                EventMesh.publish("set_hr_blood_led",1)
+                                EventMesh.publish(constants.EVENT.START_HEART)
+                                self.BG_state = 1
+                            elif (time_tmp - self.bg_times) >= 60 and self.BG_state == 1:
+                                EventMesh.publish("set_bg_state",0)#2代表后台进入测试
+                                EventMesh.publish("stop_led_timer")#设置参数
+                                EventMesh.debug_log("stop bgdebug3")
+                                EventMesh.publish(constants.EVENT.STOP_HEART)
+                                bgdata = get_blood_sugar_value()
+                                if bgdata == None:
+                                    bgdata = 0
+                                if bgdata != 0:
+                                    print("bgdata",bgdata)
+                                    EventMesh.publish(constants.PROTOCOL.BLOODGLUSOCE_SEND,bgdata)#上传心率数据
+                                self.BG_state = 0
+                        else:
+                            
+                            self.BG_state = 0
+                    else:
+                        bg_state  = EventMesh.publish("get_bg_state") 
+                        if bg_state == 2:
+                            EventMesh.publish("set_bg_state",0)#2代表后台进入测试
+                            EventMesh.publish("stop_led_timer")#设置参数
+                            EventMesh.debug_log("bg stop bgdebug3")
+                            EventMesh.publish(constants.EVENT.STOP_HEART)
+                        self.bg_times = 0
+                        self.BG_state = 0
+                
+            else:
+                self.old_temp_time = 0
+                self.old_time = 0
+                self.SENSOR_time = time_tmp
+                self.HR_Onestate = 0
+                self.HR_OneTime = 0
+                self.HR_state = 0
+                self.old_time = 0    
+                self.old_bp_time = 0
+                self.old_hr_time = 0
+                self.old_spo2_time = 0
+                self.set_hsenor_crt = 0
+                self.old_bg_time = 0
+                self.bg_times = time_tmp
+                self.BG_state = 0
+                self.temp_time = time_tmp
+
+                self.temp_state = 0
+                self.temp_one_state = 0
+                self.old_temp_time = 0  
+    
+    
+    
+        
         else:
             self.old_temp_time = 0
             self.old_time = 0
+            self.SENSOR_time = time_tmp
+            self.HR_Onestate = 0
+            self.HR_OneTime = 0
+            self.HR_state = 0
+            self.old_time = 0    
+            self.old_bp_time = 0
+            self.old_hr_time = 0
+            self.old_spo2_time = 0
+            self.set_hsenor_crt = 0
+            self.old_bg_time = 0
+            self.bg_times = time_tmp
+            self.BG_state = 0
+            self.temp_time = time_tmp
+
+            self.temp_state = 0
+            self.temp_one_state = 0
+            self.old_temp_time = 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:
+                get_bp_state  = EventMesh.publish("get_bp_state")
+                get_bg_state  = EventMesh.publish("get_bg_state")
+                if get_hr_state != None and get_spo2_state != None and get_bp_state != None and get_bg_state != None:
                     if get_hr_state == 2 or get_hr_state == 3:
+                        
                         EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
+                        EventMesh.publish("stop_led_timer")#设置参数
                         EventMesh.debug_log("stop debug8")
                         EventMesh.publish(constants.EVENT.STOP_HEART) 
                     elif get_spo2_state == 2 or get_spo2_state == 3:
+                        
                         EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
+                        EventMesh.publish("stop_led_timer")#设置参数
                         EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-                
+                        EventMesh.debug_log("stop debug13")
+                    elif get_bp_state == 2 or get_bp_state == 3:
+                        EventMesh.publish("set_bp_state",0)#2代表后台进入测试
+                        EventMesh.publish("stop_led_timer")#设置参数
+                        EventMesh.publish(constants.EVENT.STOP_HEART)
+                        EventMesh.debug_log("stop debug14")
+                    elif get_bg_state == 2 or get_bg_state == 3:
+                        EventMesh.publish("set_bg_state",0)#2代表后台进入测试
+                        EventMesh.publish("stop_led_timer")#设置参数
+                        EventMesh.publish(constants.EVENT.STOP_HEART)
+                        EventMesh.debug_log("stop debug15")
+
                 if get_temp_time != None:
                     get_temp_state  = EventMesh.publish("get_temp_state")
                     if get_temp_state == 2 or get_temp_state == 3:
@@ -1631,14 +1673,10 @@ class DeviceInfoManager(Abstract):
                             else:
                                 EventMesh.publish("set_history_temp_value",0)
                                 # EventMesh.publish("play_temp_value",0)#播放体温数值
+                        EventMesh.publish("stop_led_timer")#设置参数
                         EventMesh.publish(constants.EVENT.STOP_TEMP)
 
-            self.SENSOR_time = time_tmp
-            self.HR_Onestate = 0
-            self.HR_OneTime = 0
-            self.HR_state = 0
-            self.old_time = 0    
-            self.set_hsenor_crt = 0
+            
 
 
         hr_state = EventMesh.publish("get_hr_state")
@@ -3004,6 +3042,8 @@ class getHrTimeManager(Abstract):
         self.set_hr = 0 #0关闭 1手动 2 自动测量按照时间间隔测试心率
         self.set_spo2 = 0
         self.open_btn = 0
+        self.set_bgautotime = 0
+        self.bgauto_btn = 0
         read_data = EventMesh.publish("get_storage_config","measure_time")
         if read_data != None:
             self.set_time = read_data  
@@ -3012,6 +3052,14 @@ class getHrTimeManager(Abstract):
         if read_data != None:
             self.open_btn = read_data   
 
+        read_data = EventMesh.publish("get_storage_config","bgauto_time")
+        if read_data != None:
+            self.set_bgautotime = read_data  
+        read_data = EventMesh.publish("get_storage_config","bgauto_btn")
+                
+        if read_data != None:
+            self.bgauto_btn = read_data   
+
 
 
     def post_processor_after_instantiation(self):
@@ -3022,6 +3070,22 @@ class getHrTimeManager(Abstract):
         EventMesh.subscribe("set_spo2_state", self.set_spo2_state)
         EventMesh.subscribe("get_spo2_state", self.get_spo2_state)
 
+        EventMesh.subscribe("set_bgauto_time", self.set_bgauto_time)
+        EventMesh.subscribe("get_bgauto_time", self.get_bgauto_time)
+
+    def set_bgauto_time(self, event, msg): 
+        self.bgauto_btn = msg[0]
+        self.set_bgautotime = msg[1]
+        EventMesh.publish("set_storage_config",["bgauto_btn",self.bgauto_btn])
+        EventMesh.publish("set_storage_config",["bgauto_time",self.set_bgautotime])
+
+    def get_bgauto_time(self, event, msg): 
+        if self.bgauto_btn == None:
+            self.bgauto_btn = 0
+        if self.set_bgautotime == None:
+            self.set_bgautotime = 0
+        return [self.bgauto_btn,self.set_bgautotime]
+    
 
     def set_time_hr_spo2(self, event, msg): 
         self.open_btn = msg[0]
@@ -3033,18 +3097,22 @@ class getHrTimeManager(Abstract):
         return [self.open_btn,self.set_time]
 
     def set_hr_state(self, event, msg): 
-        if msg != 0:
-            EventMesh.publish("set_hr_blood_led",1)#红绿灯交替闪烁
+        # if msg != 0:
+        #     EventMesh.publish("set_hr_blood_led",1)#红绿灯交替闪烁
         self.set_hr = msg
+        if self.set_hr == 0:
+            EventMesh.publish("clear_health_state")
         
 
     def get_hr_state(self, event, msg): 
         return self.set_hr
     
     def set_spo2_state(self, event, msg): 
-        if msg != 0:
-            EventMesh.publish("set_hr_blood_led",1)##红绿灯交替闪烁
+        # if msg != 0:
+        #     EventMesh.publish("set_hr_blood_led",1)##红绿灯交替闪烁
         self.set_spo2 = msg
+        if self.set_spo2 == 0:
+            EventMesh.publish("clear_health_state")
         
 
     def get_spo2_state(self, event, msg): 
@@ -3059,7 +3127,20 @@ class getTempTimeManager(Abstract):
 
         if read_data != None:
             self.set_time = read_data
- 
+
+        self.set_bptime = 0
+        self.get_bpstate = 0
+        read_data = EventMesh.publish("get_storage_config","bp_time")
+
+        if read_data != None:
+            self.set_bptime = read_data
+
+        self.set_bgtime = 0
+        self.get_bgstate = 0
+        read_data = EventMesh.publish("get_storage_config","bg_time")
+
+        if read_data != None:
+            self.set_bgtime = read_data
 
     def post_processor_after_instantiation(self):
         EventMesh.subscribe("set_temp_time", self.set_temp_time)
@@ -3068,6 +3149,67 @@ class getTempTimeManager(Abstract):
         EventMesh.subscribe("set_temp_state", self.set_temp_state)
         EventMesh.subscribe("get_temp_state", self.get_temp_state)
 
+        EventMesh.subscribe("set_bp_time", self.set_bp_time)
+        EventMesh.subscribe("get_bp_time", self.get_bp_time)
+
+        EventMesh.subscribe("set_bp_state", self.set_bp_state)
+        EventMesh.subscribe("get_bp_state", self.get_bp_state)
+
+        EventMesh.subscribe("set_bg_time", self.set_bg_time)
+        EventMesh.subscribe("get_bg_time", self.get_bg_time)
+
+        EventMesh.subscribe("set_bg_state", self.set_bg_state)
+        EventMesh.subscribe("get_bg_state", self.get_bg_state)
+
+    def set_bg_time(self, event, msg): 
+        self.set_bgtime = msg
+        EventMesh.publish("set_storage_config",["bg_time",self.set_time])
+
+    def get_bg_time(self, event, msg): 
+        if self.set_bgtime:
+            return self.set_bgtime
+        else :
+            return 0
+        
+    def set_bg_state(self, event, msg): 
+        self.get_bgstate = msg
+        if self.get_bgstate == 0:
+            EventMesh.publish("clear_health_state")
+        # if msg != 0:
+        #     EventMesh.publish("set_hr_blood_led",1)#红绿灯交替闪烁
+
+    def get_bg_state(self, event, msg): 
+        if self.get_bgstate:
+            return self.get_bgstate
+        else :
+            return 0
+
+
+
+
+    def set_bp_time(self, event, msg): 
+        self.set_bptime = msg
+        EventMesh.publish("set_storage_config",["bp_time",self.set_time])
+
+    def get_bp_time(self, event, msg): 
+        if self.set_bptime:
+            return self.set_bptime
+        else :
+            return 0
+        
+    def set_bp_state(self, event, msg): 
+        self.get_bpstate = msg
+        if self.get_bpstate == 0:
+            EventMesh.publish("clear_health_state")
+        # if msg != 0:
+            # EventMesh.publish("set_hr_blood_led",1)#红绿灯交替闪烁
+
+    def get_bp_state(self, event, msg): 
+        if self.get_bpstate:
+            return self.get_bpstate
+        else :
+            return 0
+
 
     def set_temp_time(self, event, msg): 
         self.set_time = msg
@@ -3078,8 +3220,10 @@ class getTempTimeManager(Abstract):
     
     def set_temp_state(self, event, msg): 
         self.get_temp = msg
-        if msg != 0:
-            EventMesh.publish("set_hr_blood_led",1)#红绿灯交替闪烁
+        if self.get_temp == 0:
+            EventMesh.publish("clear_temp_state")
+        # if msg != 0:
+        #     EventMesh.publish("set_hr_blood_led",1)#红绿灯交替闪烁
 
     def get_temp_state(self, event, msg): 
         return self.get_temp
index e78fbef..b95abbf 100644 (file)
@@ -989,7 +989,10 @@ class HRSTART_ProtoCol(ProtoCol):
                 get_spo2_state = EventMesh.publish("get_spo2_state")
                 # if (get_hr_state == 3 ) or (get_spo2_state == 0 and get_hr_state == 0):#只要两个不在测量 单次优先级最低
                 if (get_spo2_state == 0 and get_hr_state == 0):
-                    EventMesh.publish("set_hr_state",3)#3代表单次测量
+                    battery = EventMesh.publish("screen_get_battery")
+                    if battery != None:
+                        if battery[0] != "1":
+                            EventMesh.publish("set_hr_state",3)#3代表单次测量
                 pass
             else:
                 if hrTotal > 0 and hrTotal <= 300:
@@ -1084,7 +1087,10 @@ class OXYGEN_One_ProtoCol(ProtoCol):#单次测量
         if state == 1:
             # if (get_hr_state == 3 ) or (get_spo2_state == 0 and get_hr_state == 0):#只要两个不在测量 单次优先级最低
             if (get_spo2_state == 0 and get_hr_state == 0):
-                EventMesh.publish("set_spo2_state",3)#3代表单次测量
+                battery = EventMesh.publish("screen_get_battery")
+                if battery != None:
+                    if battery[0] != "1":
+                        EventMesh.publish("set_spo2_state",3)#3代表单次测量
         EventMesh.publish(constants.PROTOCOL.OXSTART_SEND)
 
 class TEMP_ProtoCol(ProtoCol):
@@ -1145,8 +1151,10 @@ class WDSTART_ProtoCol(ProtoCol):
             get_temp_state = EventMesh.publish("get_temp_state")
             EventMesh.debug_log("get_temp_state:{}".format(get_temp_state))
             if get_temp_state == 0:#只要两个不在测量 单次优先级最低
-
-                EventMesh.publish("set_temp_state",3)#3代表单次测量
+                battery = EventMesh.publish("screen_get_battery")
+                if battery != None:
+                    if battery[0] != "1":
+                        EventMesh.publish("set_temp_state",3)#3代表单次测量
         else:
             if tempTotal > 0 and tempTotal <= 300:
                 tempTotal = 300
@@ -1159,6 +1167,185 @@ class WDSTART_ProtoCol(ProtoCol):
         
         EventMesh.publish(constants.PROTOCOL.WDSTART_SEND)
 #解绑
+# 设置血压上传频率
+# 平台发送[XT*YYYYYYYYYYYYYYY*LEN*bldstart,x]
+# x为上传间隔时间,单位秒,连续上传时最小时间不小于300秒,最大不超过65535.
+# 示例[XT*334588000000156*0008*bldstart,300]
+# 终端回复:
+# [XT*334588000000156*0005*bldstart]
+# x为1则代表终端单次上传。
+# x为0则代表终端上传关闭。
+class bldstart_ProtoCol(ProtoCol):
+    """app下发血压测试频率"""
+    TYPE = "bldstart"
+    def send(self, event, msg):
+        #[XT*334588000000156*len*wdstart,300]
+        send_data = self.PID+"*%s*0008*bldstart"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        # print("temp:data:%s"%(data))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+    def recv(self, event, msg):
+        """
+        @param event: 体温下发频率数据
+        @param msg: 接收到的下行数据
+        """
+        # print("WDSTART_ProtoCol RECV msg:")
+        print("bldstart:{}".format(msg))
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_tmp = msg_tmp.split(',')
+        msg_tmp = msg_tmp[1]
+
+        bldstartTotal = int(msg_tmp)
+        print("bldstartTotal:{}".format(bldstartTotal))
+        if bldstartTotal == 1:#单次测量
+            get_bp_state = EventMesh.publish("get_bp_state")
+            get_hr_state = EventMesh.publish("get_hr_state")
+            get_spo2_state = EventMesh.publish("get_spo2_state")
+            print("get_bp_state:{}".format(get_bp_state))
+            if get_bp_state == 0 and get_hr_state == 0 and get_spo2_state == 0:#只要两个不在测量 单次优先级最低
+                battery = EventMesh.publish("screen_get_battery")
+                if battery != None:
+                    if battery[0] != "1":
+                        EventMesh.publish("set_bp_state",3)#3代表单次测量
+        else:
+            if bldstartTotal > 0 and bldstartTotal <= 300:
+                bldstartTotal = 300
+            elif bldstartTotal >= 65536:
+                bldstartTotal = 65536
+            EventMesh.publish("set_bp_time", bldstartTotal)
+           
+        EventMesh.publish(constants.PROTOCOL.BLDSTART_SEND)
+
+
+# 注:回复完后开始测量血压并上传(一般测一次90秒,app端会提醒用户两分钟后刷新页面查看)
+# 上传血压数据
+# 终端发送[XT*YYYYYYYYYYYYYYY*LEN*blood,x,y]
+# x 是收缩压(高压)
+# y 是舒张压(低压)
+# 示例[XT*334588000000156*000C*blood,150,70]
+# 平台回复:
+# [XT*334588000000156*0005*blood]
+class blood_ProtoCol(ProtoCol):
+    """上传血压测试数据"""
+    TYPE = "blood"
+    def send(self, event, msg):
+        len_size = len(str(msg[0]))+len("blood,")+1+len(str(msg[1]))
+        print("blood:send:{} len:{}".format(msg,len_size))
+        #  实例:[XT*334588000000156*0009*blood,36,2]
+        # 代表终端的
+        # 平台回复:
+        # [XT*334588000000156*0004*blood]
+        send_data = self.PID+"*%s*%04X*blood"%(self.imei,len_size)
+        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"blood")
+        MD5_SIGN = self.pack_MD5_head(MD5_head_data)
+        data = "[%s%s,%d,%d]"%(str(MD5_SIGN),send_data,msg[0],msg[1])
+        print("blood:data:%s"%(data))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+        
+    def recv(self, event, msg):
+        """
+        @param event: 
+        @param msg: 接收到的下行数据
+        """
+        # print("HRSTART_ProtoCol RECV msg:")
+        #EventMesh.publish(constants.PROTOCOL.TEMP_SEND)
+# 设置血糖上传频率
+# 平台发送:
+# [XT*334588000000156*len*bgstart,x]
+# x为上传间隔时间,单位秒,连续上传时最小时间不小于300秒,最大不超过65535.
+# 实例:[XT*334588000000156*len*bgstart,300]
+# 终端会每隔300秒检测一次
+
+# x为1则代表终端单次上传。
+# x为0则代表终端上传关闭。
+class bgstart_ProtoCol(ProtoCol):
+    """app下发血糖测试频率"""
+    TYPE = "bgstart"
+    def send(self, event, msg):
+        #[XT*334588000000156*len*wdstart,300]
+        send_data = self.PID+"*%s*0007*bgstart"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        # print("temp:data:%s"%(data))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+    def recv(self, event, msg):
+        """
+        @param event: 体温下发频率数据
+        @param msg: 接收到的下行数据
+        """
+        # print("WDSTART_ProtoCol RECV msg:")
+        print("bgstart:{}".format(msg))
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_tmp = msg_tmp.split(',')
+        msg_tmp = msg_tmp[1]
+
+        bgstartTotal = int(msg_tmp)
+        print("bgstartTotal:{}".format(bgstartTotal))
+        if bgstartTotal == 1:#单次测量
+            get_bp_state = EventMesh.publish("get_bp_state")
+            get_hr_state = EventMesh.publish("get_hr_state")
+            get_spo2_state = EventMesh.publish("get_spo2_state")
+            get_bg_state = EventMesh.publish("get_bg_state")
+            print("get_bg_state:{}".format(get_bg_state))
+            if get_bp_state == 0 and get_hr_state == 0 and get_spo2_state == 0 and get_bg_state == 0:#只要两个不在测量 单次优先级最低
+                battery = EventMesh.publish("screen_get_battery")
+                if battery != None:
+                    if battery[0] != "1":
+                        EventMesh.publish("set_bg_state",3)#3代表单次测量
+        else:
+            if bgstartTotal > 0 and bgstartTotal <= 300:
+                bgstartTotal = 300
+            elif bgstartTotal >= 65536:
+                bgstartTotal = 65536
+           
+            if bgstartTotal == 0:#关闭自动测量
+                EventMesh.debug_log("bgSTART_ 1")
+                EventMesh.publish("set_bgauto_time",[0,0])
+            else:
+                EventMesh.publish("set_bgauto_time",[1,bgstartTotal])
+           
+        EventMesh.publish(constants.PROTOCOL.BGSTART_SEND)
+
+# 上传血糖数据
+# 终端发送[XT*YYYYYYYYYYYYYYY*LEN*bloodglucose,x]
+# x 表示血糖,单位mmol/L
+# 示例[XT*334588000000156*0010*bloodglucose,6.1]
+# 平台回复:
+# [XT*334588000000156*000B*bloodglucose]
+class bloodglucose_ProtoCol(ProtoCol):
+    """上传血糖测试数据"""
+    TYPE = "bloodglucose"
+    def send(self, event, msg):
+        len_size = len("bloodglucose,")+1+len(str(msg))
+        print("bloodglucose:send:{} len:{}".format(msg,len_size))
+        #  实例:[XT*334588000000156*0009*blood,36,2]
+        # 代表终端的
+        # 平台回复:
+        # [XT*334588000000156*0004*blood]
+        send_data = self.PID+"*%s*%04X*bloodglucose"%(self.imei,len_size)
+        MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"bloodglucose")
+        MD5_SIGN = self.pack_MD5_head(MD5_head_data)
+        data = "[%s%s,%s]"%(str(MD5_SIGN),send_data,msg)
+        print("bloodglucose:data:%s"%(data))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+        
+    def recv(self, event, msg):
+        """
+        @param event: 
+        @param msg: 接收到的下行数据
+        """
+        # print("HRSTART_ProtoCol RECV msg:")
+        #EventMesh.publish(constants.PROTOCOL.TEMP_SEND)
+
 # [XT*334588000000156*0003*DLT]
 def reset_factory(msg):
     if msg == 1:
@@ -1910,7 +2097,7 @@ class ProtoColResolver(object):
     def handler(self, data):
         # 这里接收数据
         
-        # EventMesh.debug_log("handler -> {}".format(data))
+        EventMesh.debug_log("handler -> {}".format(data))
         # if data.startswith('Init;'):
         #     data = data[5:]
         #     EventMesh.publish(constants.EVENT.SET_KEY, {"value": ujson.loads(data)['KEY']})