From: dxy15521469561 <1731678236@qq.com> Date: Thu, 7 Dec 2023 07:07:58 +0000 (+0800) Subject: D10: X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=e8578d92f54b9a26dada2d2ae15a611ed90f382e;p=mirrors%2FASR1603_G5.git D10: 血压 血糖协议对接测试 C06S: 表盘界面优化 --- diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/appWechat.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/appWechat.py index 1f3a4f32..a81ca625 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/appWechat.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/appWechat.py @@ -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") diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py index e1391a14..22467e69 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py @@ -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 diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py index 90650e67..dd9a971a 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py @@ -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)) diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_main_menu.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_main_menu.py index b0f79692..1ea8881c 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_main_menu.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_main_menu.py @@ -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() diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_setting.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_setting.py index f8cda108..939e1665 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_setting.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_setting.py @@ -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) diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py index 4da1ffe6..59cd58c5 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py @@ -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:#松开 diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py index 7d1a85ea..3dd8d546 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py @@ -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: diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py index 1262403c..08edae51 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py @@ -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() diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_1.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_1.py index 829f270e..c14a3dcc 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_1.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_1.py @@ -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)) diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py index e6072c42..cb168164 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py @@ -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) diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py index 92d77d03..61300ade 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py @@ -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 diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py index e78fbef7..b95abbfa 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py @@ -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']})