def long_press_power_off(self, event, msg): #msg 1 开始测量 2 测量成功 3 测量失败未出值
self.timer.start(5000,0,self.fun)
- EventMesh.publish("set_led_time_arg",[1000,200,6,led_mode.FLASH_LIGHT_RED,led_mode.DEFAULT_LONG_LIGHT_MODE])#測量失敗
+ EventMesh.publish("set_led_time_arg",[1000,500,6,led_mode.FLASH_LIGHT_RED,led_mode.DEFAULT_LONG_LIGHT_MODE])#測量失敗
def fun(self, *args):
self.count = 0
self.step_num = 0
self.setp_old = step
- step = 11
if step <= 10:#个
if play_state != None:
if play_state == 0:
num = int(imei[self.play_count])
self.play_count+=1
self.aud.play(1, 1, 'U:/static/R_READ_TIME_{}.mp3'.format(num)) #播放imei号
+from machine import RTC
+class playCurTimeManager(Abstract):#播放当前时间
+ def __init__(self):
+ self.timer = osTimer()
+ self.aud = audio.Audio(0)
+ self.aud.set_pa(Pin.GPIO29)
+ self.aud.setVolume(11)
+ self.play_count = 0
+ self.old_hour = 0
+ self.old_min = 0
+ self.hour_tmp = ""
+ self.min_tmp = ""
+ pass
+
+
+ def post_processor_after_instantiation(self):
+ EventMesh.subscribe("play_cur_time_event", self.play_cur_time_event)#播報imei号
+
+
+
+ def play_cur_time_event(self, event, msg): #msg 1 开始测量 2 测量成功 3 测量失败未出值
+ self.play_count = 0
+ self.timer.start(1000,1,self.play_timer_cb)
+
+ def play_timer_cb(self,*agrs):
+
+ data = RTC().datetime()
+ hour = data[4]
+ min = data[5]
+ self.hour_tmp = str(hour)
+ self.min_tmp = str(min)
+ shi_value = int(self.step_tmp[0])#十
+ ge_value = int(self.step_tmp[1])#个
+
+ hour_tmp1 = hour//10
+ hour_tmp2 = hour%10
+ if hour != self.old_hour or min != self.old_min:
+ self.play_count = 0
+
+ self.old_hour = hour
+ self.old_min = min
+ play_state = EventMesh.publish("get_audio_state")#音频播放状态
+ if play_state != None:
+ if play_state == 0:
+ self.play_count+=1
+ self.hour_tmp = str(hour)
+ self.min_tmp = str(min)
+ shi_value = int(self.step_tmp[0])#十
+ ge_value = int(self.step_tmp[1])#个
+ if hour > 9:
+ if hour < 20:
+ if self.play_count == 1:
+ # R_READ_TIME_18 #10点
+ pass
+ elif self.play_count == 2:#点
+ pass
+ elif self.play_count == 3:#点
+ if min > 0:
+ pass
+
+ else:
+ pass
+ if min > 9:
+ if self.play_count == 1:
+ if hour < 20:
+ pass
+ # R_READ_TIME_19 #20点
+ else:
+ pass#
+ pass
+ else:
+ pass
+
+
+
+ # print("hour:{} min:{} week:{} date1:{} date2:{} data:{}".format(hour,min,week,date1,date2,data))
+ if self.play_count > 14:
+ self.play_count = 0
+ self.timer.stop()
+ return
+ imei = EventMesh.publish(constants.EVENT.GET_IMEI)
+ play_state = EventMesh.publish("get_audio_state")#音频播放状态
+ if play_state != None:
+ if play_state == 0:
+ num = int(imei[self.play_count])
+ self.play_count+=1
+ self.aud.play(1, 1, 'U:/static/R_READ_TIME_{}.mp3'.format(num)) #播放imei号
i = 0
for sort_new_tmp in sort_new: #字典 key value
i+=1 # 1
- if i >= 1:#大于50条把最后一条删除掉只保留前面50调最新的数据
+ if i >= 1:#
self.wechat_num = sort_new_tmp["num"]
break
else :
self.timeSecond = 0
self.wechat_show = 0
self.sort_new = {}
+ self.time_min = 0
def post_processor_after_instantiation(self):
EventMesh.subscribe("start_wechat_record", self.start_wechat_record)#手表开始录音
EventMesh.subscribe("play_wechat_last_amr", self.play_wechat_last_amr)#播放微聊语音最后一条语音文件
EventMesh.subscribe("get_wechat_data", self.get_wechat_data)
EventMesh.subscribe("set_wechat_data", self.set_wechat_data)
+ EventMesh.subscribe("play_wechat_last_amr", self.play_unread_wechat_infor)#播放微聊语音最后一条语音文件
def get_wechat_data(self,event, msg):
self.aud.setVolume(11)#设置音量最大
self.aud.stop()
self.aud.play(1, 1, '/usr/static/storage_file/{}.amr'.format(self.wechat_num)) #文件名前面要加上路径
+ def play_unread_wechat_infor(self):#未读微聊语音
+ sort_tmp = {}
+ sort_tmp = self.wechat_recode_list.values()
+ sort_new = {}
+ sort_new = sorted(sort_tmp, key = lambda i: i['timesec'],reverse = True)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条
+ date_tmp = utime.localtime()
+ time_tmp = utime.mktime(date_tmp)
+
+ unread = 0
+ for sort_new_tmp in sort_new: #字典 key value
+ read = sort_new_tmp["read"]
+ if read == 1:#未读1标识只要遇到read标识为1则跳出
+ unread = 1
+ break
+ if unread == 1:#未读提示语音和亮灯
+ #每5s闪一下
+ #每十分钟语音提醒一次
+ EventMesh.publish("set_led_time_arg",[5000,400,2,led_mode.FLASH_LIGHT_RED,led_mode.DEFAULT_LONG_LIGHT_MODE])#红灯5s闪一次
+ #self.time_min = 0 20 - 10 = 19
+ #10 20-10 90-10 100-10
+ if self.time_min == 0 or time_tmp - self.time_min >= 10*60:
+ self.time_min = time_tmp
+ #语音提示播放
+ pass
+
+ pass
+ else:
+ self.time_min = 0
+ pass
+
class FindWatchManager(Abstract):#查找设备
def __init__(self):
EventMesh.publish("interup_call_event")#如果在电话中强制挂断电话
EventMesh.publish("stop_led_timer")#设置参数关闭led定时器 同时也关闭所有的灯再开相对应的灯
EventMesh.publish("STOP_FIND_WATCH")#停止查找设备
+ #播报当前时间
+
def pwk_extint_cb(self,args):
self.GPIO26_status = self.extint.read_level()
next_alarm_time = utime.localtime(timeSecond)
machine.RTC().datetime((next_alarm_time[0],next_alarm_time[1],next_alarm_time[2],next_alarm_time[6],next_alarm_time[3],next_alarm_time[4],next_alarm_time[5],0))
- EventMesh.publish("set_led_time_arg",[1000,200,10,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE])#设置参数
+ EventMesh.publish("set_led_time_arg",[1000,500,10,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE])#设置参数
# EventMesh.publish("load_screen", {"screen": "main_menu"})
contact_none_label = lv.label(contacts_screen_list_screen)
contact_none_label.set_pos(0, 80)
- contact_none_label.set_size(240, 40)
- contact_none_label.set_text("空")
+ contact_none_label.set_size(240, 50)
+ contact_none_label.set_text("无联系人,请在手机\nAPP上添加")
contact_none_label.set_long_mode(lv.label.LONG.WRAP)
contact_none_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
contact_none_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
elif rsp_code == 5:
#获取付款码回调
print("upay_display_notify_cb: paycode[%d]: %s\n"%( result_len, result))
- EventMesh.publish("load_screen", {"screen": "alipay_paycode","meta":str(result)})
+ # EventMesh.publish("load_screen", {"screen": "alipay_paycode","meta":str(result)})
EventMesh.publish("set_alipay_code",str(result))
# 查询付款结果
print("upay_display_notify_cb: get payment result\n")
elif check_bind == 5: #未绑定
#EventMesh.publish("load_screen", {"screen": "alipay_invite"})
if self.is_init == 0 :
+ if EventMesh.publish(constants.EVENT.GET_CONNECT) == 0:
+ EventMesh.publish("connect_failed_event")
+ else:
+ EventMesh.publish("connect_ok_event")
args = ""
userdata = ""
print("--000--")
self.timer_AlipayOpen = osTimer()
self.timer_AlipayOpen_count = 0
self.flag = 0
+ EventMesh.subscribe("connect_failed_event",self.connect_failed_event)
+ EventMesh.subscribe("connect_ok_event",self.connect_ok_event)
+
+ def connect_failed_event(self, event, msg):
+ AlipayOpen_label.clear_flag(lv.obj.FLAG.HIDDEN)
+
+ def connect_ok_event(self, event, msg):
+ AlipayOpen_label.add_flag(lv.obj.FLAG.HIDDEN)
-
def initialization(self):
self.flag = 0
state = EventMesh.publish(constants.EVENT.GET_CONNECT)
- print("AlipayOpenScreen:state",state)
+ print("AlipayOpenScreen:state ",state,EventMesh.publish("get_alipay_init"))
- if EventMesh.publish(constants.EVENT.GET_CONNECT) == 0 and EventMesh.publish("get_alipay_init") != 0:
+ #初始化成功 未联网
+ #初始化失败 已联网
+
+ if (EventMesh.publish(constants.EVENT.GET_CONNECT) == 0 and EventMesh.publish("get_alipay_init") != 0) or EventMesh.publish("get_alipay_init") != 0:
AlipayOpen_label.clear_flag(lv.obj.FLAG.HIDDEN)
else:
AlipayOpen_label.add_flag(lv.obj.FLAG.HIDDEN)
if EventMesh.publish("get_alipay_init") == 0:
+ print("get_alipay_init ok:")
+ # AlipayOpen_label.add_flag(lv.obj.FLAG.HIDDEN)
if self.flag == 0:
self.flag = 1
EventMesh.publish("alipay_1")
else:
+ print("get_alipay_init failed:")
+ # AlipayOpen_label.clear_flag(lv.obj.FLAG.HIDDEN)
+ print("timeout_AlipayOpen:",self.flag)
EventMesh.publish_async("Alipay_init","",40*1024)
self.timer_AlipayOpen_count = 0
self.timer_AlipayOpen.start(1000, 1, self.timeout_AlipayOpen)
EventMesh.publish("set_Alipay_Ui_isOpen",1)
+
def timeout_AlipayOpen(self, *args):
#print("timeout_AlipayOpen:",self.flag)
#已绑定,显示功能列表
def __init__(self):
super().__init__()
+ self.timer = osTimer()
self.meta = alipay_1_1_screen
#付款码
alipay_imgbtn_3.add_event_cb(lambda e: EventMesh.callback_wrapper(self.alipay_paycode(e)),
pass
def alipay_paycode(self,e):
+ self.timer.start(1*1000,1,self.fun)
# Alipay.alipay.msg_send(3,"","") #发送获取付款码消息
- EventMesh.publish("get_payment_code")
+
+ def fun(self,*agrc):
+ # print("alipay_paycode!!!!!!!!!!!")
+ if EventMesh.publish("get_alipay_page_paycode") != 1:
+ EventMesh.publish("get_payment_code")
+ infor = EventMesh.publish("get_alipay_code")
+ if infor != None:
+ EventMesh.publish("update_show_defargc")
+ if EventMesh.publish("get_alipay_page_paycode") == 1:
+ self.timer.stop()
+ EventMesh.publish("load_screen", {"screen": "alipay_paycode"})
+ # EventMesh.publish("get_payment_code")
def alipay_collect(self,e):
EventMesh.publish("get_collect_code")
# EventMesh.publish("load_screen", {"screen": "alipay_collect"})
+ def Close(self):
+ self.timer.stop()
def alipay_parent(self,e):
EventMesh.publish("get_parent_code")
def code_128_generate_barcode1(screen, data, width=180, height=80):
left_curr_line = 0
-
+ show_play = 0
# 删除上次的container
# old_container = screen.get_child(-1)
# if old_container:
# 生成二进制码
binary_data = code128.encode(data)
if not binary_data:
- return
+ return 0
# print("binary_data is ",binary_data)
else:
line_bar[i].set_style_bg_color(lv.color_make(0x00, 0x00, 0x00), lv.PART.MAIN | lv.STATE.DEFAULT)
left_curr_line += real_width
+ show_play = 1
+ print("show_play:",show_play)
+ return show_play
class Alipay_paycode(Screen):
NAME = "alipay_paycode"
self.timer = osTimer()
EventMesh.subscribe("set_alipay_code",self.set_alipay_code)
EventMesh.subscribe("get_alipay_code",self.get_alipay_code)
+ EventMesh.subscribe("get_alipay_page_paycode",self.get_alipay_page_paycode)
+ EventMesh.subscribe("update_show_defargc",self.update_show_defargc)
self.alipay_qr_data = {}
-
+ self.count = 0
+ self.update_page_state = 0
+# if EventMesh.publish("get_alipay_page_paycode") == 0:
+# EventMesh.publish("load_screen", {"screen": "alipay_paycode","meta":str(result)})
def post_processor_after_initialization(self):
- self.alipay_qr_data = str(self.meta_info)
- print("alipay_paycode:",str(self.meta_info))
+ self.alipay_qr_data = EventMesh.publish("get_alipay_code")
+ print("self.alipay_qr_data:",str(self.alipay_qr_data))
alipay_paycode_alipay_qr.update(self.alipay_qr_data,len(self.alipay_qr_data))
- code_128_generate_barcode1(alipay_paycode_screen,self.alipay_qr_data,240,100)
+ self.update_page_state = code_128_generate_barcode1(alipay_paycode_screen,self.alipay_qr_data,240,100)
def initialization(self):
print("alipay_paycode:initialization")
- self.timer.start(10*1000,1,self.update_alipy)
+ self.count = 0
+ self.timer.start(1*1000,1,self.update_alipy)
EventMesh.publish("set_Alipay_Ui_isOpen",1)
def update_alipy(self,e):
- EventMesh.publish("get_payment_code")
- EventMesh.publish("publish_message_event_ui",{"func":self.update_show,"data":0})
-
+ EventMesh.publish("system_sleep_rest")#防止黑屏
+ if self.count == 0 or self.count >= 10:
+ if self.count >= 10:
+ self.count = 0
+ EventMesh.publish("get_payment_code")
+ EventMesh.publish("publish_message_event_ui",{"func":self.update_show,"data":0})
+ self.count+=1
+
+ def update_show_defargc(self, event, msg):
+ if self.alipay_qr_data != {}:
+ print("alipay_paycode:update_show")
+ alipay_paycode_alipay_qr.update(self.alipay_qr_data,len(self.alipay_qr_data))
+ self.update_page_state = code_128_generate_barcode1(alipay_paycode_screen,self.alipay_qr_data,240,100)
def update_show(self,data):
if self.alipay_qr_data != {}:
print("alipay_paycode:update_show")
alipay_paycode_alipay_qr.update(self.alipay_qr_data,len(self.alipay_qr_data))
- code_128_generate_barcode1(alipay_paycode_screen,self.alipay_qr_data,240,100)
+ self.update_page_state = code_128_generate_barcode1(alipay_paycode_screen,self.alipay_qr_data,240,100)
+
+ def get_alipay_page_paycode(self, event, msg):#获取
+ return self.update_page_state
def get_alipay_code(self, event, msg):#获取
return self.alipay_qr_data
self.alipay_qr_data = msg
def lcd_on(self):
- self.timer.start(10*1000,1,self.update_alipy)
+ self.count = 0
+ self.timer.start(1*1000,1,self.update_alipy)
def lcd_off(self):
+ self.count = 0
self.timer.stop()
def Close(self):
+ self.update_page_state = 0
self.timer.stop()
EventMesh.publish("set_Alipay_Ui_isOpen",0)
pass
def initialization(self):
EventMesh.publish("set_Alipay_Ui_isOpen",1)
+
+ def done_click(self):
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+
def Close(self):
EventMesh.publish("set_Alipay_Ui_isOpen",0)
pass
-
+
+ def done_return(self):
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+
def btn1_release(self):
EventMesh.publish("load_screen", {"screen": "main_menu"})
style_font_youyuan_black_40.set_text_color(lv.color_make(0x00, 0x00, 0x00))
style_font_youyuan_black_40.set_text_font_v2("font_40.bin",40,0)
+style_font_youyuan_20_op = lv.style_t()
+style_font_youyuan_20_op.init()
+style_font_youyuan_20_op.set_text_color(lv.color_make(0xff, 0xff, 0xff))
+style_font_youyuan_20_op.set_text_font_v2("font_28.bin",28,0)
+
power_on_screen = lv.obj()
print("power_on_screen")
power_on_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
power_on_label = lv.label(power_on_screen)
-power_on_label.set_text(" ")
-power_on_label.align(lv.ALIGN.CENTER, 0, 0)
-power_on_label.add_style(style_font_youyuan_black_40, lv.PART.MAIN | lv.STATE.DEFAULT)
+power_on_label.set_pos(0, 150)
+power_on_label.set_size(240, 40)
+power_on_label.set_text("系统初始化中")
+power_on_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+power_on_label.add_style(style_font_youyuan_20_op, lv.PART.MAIN | lv.STATE.DEFAULT)
print("power_on_screen init...")
lv.scr_load(power_on_screen)
utime.sleep_ms(200)
ui.add_screen(_ui.NovaliedNumScreen())
ui.add_screen(_ui.DialNoconnectPopupScreen())
ui.add_screen(_ui.LowOnePowerScreen())
+ ui.add_screen(_ui.RemoveMessageScreen())
+ ui.add_screen(_ui.NoSimAutoScreen())
+ ui.add_screen(_ui.chargefullScreen())
ui.add_screen(NewWechatPopupScreen())
ui.add_screen(HealthScreen())
# ui.add_screen(_ui.Setting3Screen())
self.mearsure_btn = 0
self.mearsure_timer = 0
+ self.no_smi_count = 0
+ self.no_smi_state = 0
+
+ self.charge_full_count = 0
+
self.usb = USB()
self.usb.setCallback(self.usb_event_cb)
self.log = LogAdapter(self.__class__.__name__)
#消息已满
msg_nums = sms.getMsgNums() #获取短信条数
if(msg_nums != -1):
- self.sms_full_flag+=10
- if self.sms_full_flag >= 120:
- self.sms_full_flag=0
- sms_data = sms.getSaveLoc()
- sms_max = sms_data[0][2]
- if msg_nums >= sms_max:
+ sms_data = sms.getSaveLoc()
+ sms_max = sms_data[0][2]
+ if msg_nums >= sms_max-1:
+ self.sms_full_flag+=10
+ if self.sms_full_flag >= 120:
+ self.sms_full_flag=0
EventMesh.publish("load_screen", {"screen": "message_full"})
+ else:
+ self.sms_full_flag = 0
get_temp_time = EventMesh.publish("get_temp_time")
get_temp_state = EventMesh.publish("get_temp_state")
hr_time = {}
hr_time = EventMesh.publish("get_time_hr_spo2")#获取时间是否大于0
- if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1 and battery[0] != "0":
+ if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1 and battery[0] != "1":
# print("get_temp_time:{} self.temp_one_state:{}".format(get_temp_time,self.temp_one_state))
if get_temp_time != None:#定时测量体温
if get_temp_time > 0:
self.temp_state = 0
self.temp_one_state = 0
temp = EventMesh.publish(constants.EVENT.GET_TEMP)
-
+ if temp < 25 or temp > 42:
+ temp = 0
tmp_f = str(temp).split('.')[0]
tmp_f_tmp = int(tmp_f)
+
tmp_d = str(temp).split('.')[1][:1]
tmp_d_tmp = int(tmp_d)
- EventMesh.publish("set_history_temp_value",temp)
+ if temp != 0:
+ EventMesh.publish("set_history_temp_value",temp)
+ EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp])
EventMesh.publish(constants.EVENT.STOP_TEMP)
print("AUTO 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)
- EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp])
+
if self.temp_state == 0 or get_temp_state == 3:#只有不在测量的时候才测单次的
if get_temp_state == 3:#单次测量
elif self.temp_one_state > 6:
self.temp_one_state = 0
temp = EventMesh.publish(constants.EVENT.GET_TEMP)
-
+ if temp < 25 or temp > 42:
+ temp = 0
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)
if temp != 0:
EventMesh.publish("set_history_temp_value",temp)
EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp])
- EventMesh.publish("set_history_temp_value",temp)
+ EventMesh.publish("set_history_temp_value",temp)
EventMesh.publish(constants.EVENT.STOP_TEMP)
print("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)
elif self.temp_one_state > 6:
self.temp_one_state = 0
temp = EventMesh.publish(constants.EVENT.GET_TEMP)
-
+ if temp < 25 or temp > 42:
+ temp = 0
tmp_f = str(temp).split('.')[0]
tmp_f_tmp = int(tmp_f)
if get_temp_state == 2 or get_temp_state == 3:
self.temp_one_state = 0
self.temp_state = 0
- temp = EventMesh.publish(constants.EVENT.GET_TEMP)
+ temp = EventMesh.publish(constants.EVENT.GET_TEMP)
+ if temp < 25 or temp > 42:
+ temp = 0
+
tmp_f = str(temp).split('.')[0]
tmp_f_tmp = int(tmp_f)
-
+
tmp_d = str(temp).split('.')[1][:1]
tmp_d_tmp = int(tmp_d)
EventMesh.publish("set_temp_state",0)
self.set_hsenor_crt = 0
voiceCall.setCallback(voice_callback)
-
+ if EventMesh.publish(constants.EVENT.GET_CONNECT) == 0:#未插卡提示关机
+ if battery[0] == "1":
+ self.no_smi_count+=1
+ if self.no_smi_count > 6 and self.no_smi_state == 0:
+ self.no_smi_count = 0
+ self.no_smi_state = 1
+ EventMesh.publish("load_screen", {"screen": "no_sim_auto_screen"})
+ if battery[1] >= 100:
+ if self.charge_full_count > 60 and self.charge_full_count % (60*10) == 0:#每十分钟提醒一次
+ EventMesh.publish("load_screen", {"screen": "charge_full"})
+ self.charge_full_count+=10
+ else:
+ self.no_smi_count = 0
+ self.charge_full_count = 0
+ self.no_smi_state = 0
+ else:
+ self.no_smi_count = 0
+ self.charge_full_count = 0
+ self.no_smi_state = 0
#quecgnss.gnssEnable(0)
def set_history_temp_value(self, event, msg):
self.temp_value = msg
- date_tmp = utime.localtime()
- time_tmp = utime.mktime(date_tmp)
- if len(self.read_histroy_temp_data) >= 7:
- sort_new = {}
- sort_new = sorted(self.read_histroy_temp_data, key = lambda i: i['timeSec'],reverse = False)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条
- print(sort_new)
- for i in range(len(self.read_histroy_temp_data)-1):
- sort_new[i] = sort_new[i+1]#0==1 1== 2 2== 3 3==4 4==5 5==6 6==7
- self.read_histroy_temp_data[i] = sort_new[i]
- pass
- self.read_histroy_temp_data[6] = {"timeSec": time_tmp, "temp": self.temp_value}
- else:
- self.read_histroy_temp_data.append({"timeSec": time_tmp, "temp": self.temp_value})
+ if self.temp_value > 0:
+ date_tmp = utime.localtime()
+ time_tmp = utime.mktime(date_tmp)
+ if len(self.read_histroy_temp_data) >= 7:
+ sort_new = {}
+ sort_new = sorted(self.read_histroy_temp_data, key = lambda i: i['timeSec'],reverse = False)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条
+ print(sort_new)
+ for i in range(len(self.read_histroy_temp_data)-1):
+ sort_new[i] = sort_new[i+1]#0==1 1== 2 2== 3 3==4 4==5 5==6 6==7
+ self.read_histroy_temp_data[i] = sort_new[i]
+ pass
+ self.read_histroy_temp_data[6] = {"timeSec": time_tmp, "temp": self.temp_value}
+ else:
+ self.read_histroy_temp_data.append({"timeSec": time_tmp, "temp": self.temp_value})
- with open("/ext/static/storage_file/history_spo2.json","w",encoding="utf-8") as fd:
- ujson.dump(self.read_histroy_temp_data,fd)
- #print(self.read_histroy_temp_data)
+ with open("/ext/static/storage_file/history_spo2.json","w",encoding="utf-8") as fd:
+ ujson.dump(self.read_histroy_temp_data,fd)
+ #print(self.read_histroy_temp_data)
def get_history_hr_value(self, event, msg): #近7次心率历史数据统计显示
return self.read_histroy_hr_data
no_sim_power_screen_cancel = lv.img(no_sim_power_screen)
no_sim_power_screen_cancel.set_size(176, 46)
- no_sim_power_screen_cancel.set_pos(32, 270)
+ no_sim_power_screen_cancel.set_pos(32, 265)
no_sim_power_screen_cancel.set_src("E:/static/cancel_icon.png")
no_sim_power_screen_cancel.add_flag(lv.obj.FLAG.CLICKABLE)
no_sim_power_screen_cancel.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
def btn8_press(self):
EventMesh.publish("return_prev_screen")
+no_sim_auto_screen = None
+no_sim_auto_screen_title = None
+no_sim_auto_screen_label =None
+no_sim_auto_screen_comfirm =None
+no_sim_autor_screen_cancel = None
+no_sim_auto_screen_img = None
+no_sim_confirm_label = None
+
+#未插卡,长按关机
+class NoSimAutoScreen(Screen):#无sim卡是否关机
+ NAME = "no_sim_auto_screen"
+ def __init__(self):
+ super().__init__()
+ self.meta = None
+ self.meta_type = "popup"
+ self.timer = osTimer()
+ self.count = 0
+
+ def initialization(self):
+ global no_sim_auto_screen,no_sim_confirm_label,no_sim_cancel_label,no_sim_auto_screen_img,no_sim_auto_screen_title,no_sim_auto_screen_comfirm,no_sim_auto_screen_cancel,no_sim_auto_screen_label
+ if no_sim_auto_screen == None :
+ no_sim_auto_screen = lv.obj()
+ print("no_sim_power_screen")
+ no_sim_auto_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+ no_sim_auto_screen_title = lv.label(no_sim_auto_screen)
+ no_sim_auto_screen_title.set_pos(0, 10)
+ no_sim_auto_screen_title.set_size(240, 50)
+ no_sim_auto_screen_title.set_text("无SIM卡,无操作30s\n后自动关机")
+ no_sim_auto_screen_title.set_long_mode(lv.label.LONG.WRAP)
+ no_sim_auto_screen_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+ no_sim_auto_screen_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+ no_sim_auto_screen_img = lv.img(no_sim_auto_screen)
+ no_sim_auto_screen_img.set_pos(100, 70)
+ no_sim_auto_screen_img.set_size(61, 61)
+ no_sim_auto_screen_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+ no_sim_auto_screen_img.set_src("E:/static/poweroff_icon.png")
+
+
+ no_sim_auto_screen_label = lv.label(no_sim_auto_screen)
+ no_sim_auto_screen_label.set_pos(0, 150)
+ no_sim_auto_screen_label.set_size(240, 40)
+ no_sim_auto_screen_label.set_text("是否关机?")
+ no_sim_auto_screen_label.set_long_mode(lv.label.LONG.WRAP)
+ no_sim_auto_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+ no_sim_auto_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+ no_sim_auto_screen_comfirm = lv.img(no_sim_auto_screen)
+ no_sim_auto_screen_comfirm.set_size(176, 46)
+ no_sim_auto_screen_comfirm.set_pos(32, 190)
+ no_sim_auto_screen_comfirm.set_src("E:/static/off_icon.png")
+ no_sim_auto_screen_comfirm.add_flag(lv.obj.FLAG.CLICKABLE)
+ no_sim_auto_screen_comfirm.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+ no_sim_confirm_label = lv.label(no_sim_auto_screen_comfirm)
+ no_sim_confirm_label.set_text("确定")
+ no_sim_confirm_label.align(lv.ALIGN.CENTER, 0, 5)
+ no_sim_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+ no_sim_auto_screen_cancel = lv.img(no_sim_auto_screen)
+ no_sim_auto_screen_cancel.set_size(176, 46)
+ no_sim_auto_screen_cancel.set_pos(32, 265)
+ no_sim_auto_screen_cancel.set_src("E:/static/cancel_icon.png")
+ no_sim_auto_screen_cancel.add_flag(lv.obj.FLAG.CLICKABLE)
+ no_sim_auto_screen_cancel.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+ no_sim_cancel_label = lv.label(no_sim_auto_screen_cancel)
+ no_sim_cancel_label.set_text("取消")
+ no_sim_cancel_label.align(lv.ALIGN.CENTER, 0, 5)
+ no_sim_cancel_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+ no_sim_auto_screen_cancel.set_ext_click_area(20)
+
+ self.meta = no_sim_auto_screen
+ no_sim_auto_screen_comfirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),
+ lv.EVENT.CLICKED, None)
+
+ no_sim_auto_screen_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.cancel(e)),
+ lv.EVENT.CLICKED, None)
+ self.timer.start(1*1000,1,self.fun)
+ self.count = 0
+ def fun(self,*argc):
+ EventMesh.publish("system_sleep_rest")#防止黑屏
+ self.count+=1
+ if self.count > 30:
+ self.count = 0
+ self.timer.stop()
+ EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"})
+
+
+ def Close(self):
+ self.count = 0
+ self.timer.stop()
+
+ def confirm(self,e):
+ EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"})
+
+ def cancel(self,e):
+ EventMesh.publish("return_prev_screen")
+
+ def done_return(self):
+ EventMesh.publish("return_prev_screen")
+
+ def btn1_release(self):
+ EventMesh.publish("return_prev_screen")
+
+ def btn8_press(self):
+ EventMesh.publish("return_prev_screen")
+
+
+
+
dialing_popup_screen = None
dialing_popup_img = None
dialing_popup_name = None
def btn8_press(self):
EventMesh.publish("return_prev_screen")
+charge_full_screen = None
+charge_full_screen_title = None
+class chargefullScreen(Screen):#充电已满弹窗提示
+ NAME = "charge_full"
+ def __init__(self):
+ super().__init__()
+ self.meta = None
+ self.meta_type = "popup"
+ self.timer = osTimer()
+ self.count = 0
+ def initialization(self):
+ global charge_full_screen,charge_full_screen_title
+ if charge_full_screen == None :
+ charge_full_screen = lv.obj()
+ print("charge_full_screen")
+ charge_full_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+ charge_full_screen_title = lv.label(charge_full_screen)
+ charge_full_screen_title.set_pos(0, 150)
+ charge_full_screen_title.set_size(240, 40)
+ charge_full_screen_title.set_text("充电已满")
+ charge_full_screen_title.set_long_mode(lv.label.LONG.WRAP)
+ charge_full_screen_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+ charge_full_screen_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+ self.meta = charge_full_screen
+ self.count = 0
+ self.timer.start(1*1000,1,self.fun)
+
+ def Close(self):
+ self.count = 0
+ self.timer.stop()
+ pass
+
+ def fun(self,*argc):
+ EventMesh.publish("system_sleep_rest")#防止黑屏
+ self.count+=1
+ if self.count > 10:
+ self.count = 0
+ self.timer.stop()
+ EventMesh.publish("return_prev_screen")
+
+ def done_click(self):
+ EventMesh.publish("return_prev_screen")
+
+ def done_return(self):
+ EventMesh.publish("return_prev_screen")
+
+ def btn1_release(self):
+ EventMesh.publish("return_prev_screen")
+
+ def btn8_press(self):
+ EventMesh.publish("return_prev_screen")
+
+
+
+
message_popup_screen = None
message_popup_title = None
#信息弹窗
def btn8_press(self):
EventMesh.publish("load_screen", {"screen": "main_menu"})
+remove_message_popup_screen = None
+remove_message_popup_title = None
+#信息弹窗
+class RemoveMessageScreen(Screen):#删除短信弹窗框
+ NAME = "remove_message_popup"
+ def __init__(self):
+ super().__init__()
+ self.meta = None
+ self.meta_type = "popup"
+ self.timer = osTimer()
+
+ def initialization(self):
+ global remove_message_popup_screen,remove_message_popup_title
+ if remove_message_popup_screen == None :
+ remove_message_popup_screen = lv.obj()
+ print("message_popup_screen")
+ remove_message_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+ message_popup_title = lv.label(remove_message_popup_screen)
+ message_popup_title.set_pos(0, 150)
+ message_popup_title.set_size(240, 50)
+ message_popup_title.set_text("正在删除中...\n请稍候")
+ message_popup_title.set_long_mode(lv.label.LONG.WRAP)
+ message_popup_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+ message_popup_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+ self.meta = remove_message_popup_screen
+ self.timer.start(1000,1,self.timer_cb)
+ def timer_cb(self,*argc):
+ msg_nums = sms.getMsgNums()
+ # print("timer_cb remove!!!!!!!!!",msg_nums)
+ if msg_nums == 0:
+ self.timer.stop()
+ EventMesh.publish("load_screen", {"screen": "popup"})
+
+ def Close(self):
+ self.timer.stop()
+
+ def done_left_to_right(self):
+ EventMesh.publish("return_prev_screen")
+
+ def done_right_to_left(self):
+ EventMesh.publish("return_prev_screen")
+
+ def done_bottom_to_top(self):
+ EventMesh.publish("return_prev_screen")
+
+ def done_top_to_bottom(self):
+ EventMesh.publish("return_prev_screen")
+
+ def done_return(self):
+ EventMesh.publish("return_prev_screen")
+ def done_click(self):
+ EventMesh.publish("load_screen", {"screen": "popup"})
+
+ def btn1_release(self):
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+ def btn8_press(self):
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
message_full_screen = None
message_full_label = None
message_full_confirm = None
super().__init__()
self.meta = None
self.meta_type = "popup"
+ EventMesh.subscribe("remove_all_sms_cb",self.remove_all_sms_cb)
def initialization(self):
global message_full_screen,message_full_label,message_full_confirm,message_full_cancel
if message_full_screen == None :
message_full_confirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),lv.EVENT.CLICKED, None)
message_full_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),lv.EVENT.CLICKED, None)
+ def remove_all_sms_cb(self, event, msg):
+ sms.deleteMsg(1,4)
def confirm(self, e):
+ print("sms confirm!!!!!!!!")
# self.timer.start(2*1000,0,self.clear_data)
- sms.deleteMsg(1,4)
- EventMesh.publish("load_screen", {"screen": "popup"})
+ EventMesh.publish("load_screen", {"screen": "remove_message_popup"})
+ EventMesh.publish_async("remove_all_sms_cb","",1*1024)
+
def concel(self, e):
EventMesh.publish("return_prev_screen")
print("index:{}".format(index))
sms_data = sms.getSaveLoc()
sms_max = sms_data[0][2]
- if index >= sms_max:
+ if index >= sms_max-1:
EventMesh.publish("load_screen", {"screen": "message_full"})
else:
EventMesh.publish("load_screen", {"screen": "message_popup"})
contact_none_label = lv.label(contacts_screen_list_screen)
contact_none_label.set_pos(0, 80)
- contact_none_label.set_size(240, 40)
- contact_none_label.set_text("空")
+ contact_none_label.set_size(240, 50)
+ contact_none_label.set_text("无联系人,请在手机\nAPP上添加")
contact_none_label.set_long_mode(lv.label.LONG.WRAP)
contact_none_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
contact_none_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
temp = EventMesh.publish(constants.EVENT.GET_TEMP)
tmp = str(temp).split('.')[0] + '.' + str(temp).split('.')[1][:1]#获取小数点后一位 舍去小数点最后一位
+ if temp < 25 or temp > 42:
+ temp = 0
# print("self.temp:{}".format(temp))
if self.point >= 2:
if temp != 0:
tmp_d = str(temp).split('.')[1][:1]
tmp_d_tmp = int(tmp_d)
if self.point >= 2:
- if temp >= 37.3:
- temperature_keep_label.set_text("体温偏高")
- temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0x00, 0x00), lv.STATE.DEFAULT)
- else:
- temperature_keep_label.set_text("体温正常")
- temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+ if temp != 0:
+ if temp >= 37.3:
+ temperature_keep_label.set_text("体温偏高")
+ temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0x00, 0x00), lv.STATE.DEFAULT)
+ else:
+ temperature_keep_label.set_text("体温正常")
+ temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
if self.point > 120 : #测2min
self.timer.stop()
if temp >= 37.3:
# EventMesh.publish("load_screen", {"screen": "countdown"})
def fun(self,e):
- date_tmp = utime.localtime()
- self.time_tmp = utime.mktime(date_tmp)
- total_sec = self.time_tmp - self.timeSecond
- # print("total_sec:{} self.time_tmp:{} self.timeSecond:{} self.total:{}".format(total_sec,self.time_tmp,self.timeSecond,self.total))
- if self.total > 0:
- self.total = self.total - total_sec
- self.timeSecond = self.time_tmp
-
-
- self.hour = self.total//3600
- self.min = self.total%3600//60
- self.sec = self.total%60
-
+ if self.g_state == 1:
+ date_tmp = utime.localtime()
+ self.time_tmp = utime.mktime(date_tmp)
+ total_sec = self.time_tmp - self.timeSecond
+ # print("total_sec:{} self.time_tmp:{} self.timeSecond:{} self.total:{}".format(total_sec,self.time_tmp,self.timeSecond,self.total))
+ if self.total > 0:
+ self.total = self.total - total_sec
+ self.timeSecond = self.time_tmp
+
+
+ self.hour = self.total//3600
+ self.min = self.total%3600//60
+ self.sec = self.total%60
+
- # print("self.total:{} self.time_tmp:{} self.timeSecond:{} test_hour:{} test_min:{} test_sec:{}".format(self.total,self.time_tmp,self.timeSecond,test_hour,test_min,test_sec))
- self.show_value()
- # print("Close self.timeSecond:22")
- EventMesh.publish("set_countdown_all_time", [self.total,self.timeSecond])
- if self.total <= 0:
- self.g_state = 0
- self.g_end = 1
- self.hour = 0
- self.min = 0
- self.sec = 0
- EventMesh.publish("set_countdown_off_state", [0,self.g_state])
- self.timer.stop()
- self.show_value()
- EventMesh.publish("load_screen", {"screen": "countdown_end"})
+ # print("self.total:{} self.time_tmp:{} self.timeSecond:{} test_hour:{} test_min:{} test_sec:{}".format(self.total,self.time_tmp,self.timeSecond,test_hour,test_min,test_sec))
+ self.show_value()
+ # print("Close self.timeSecond:22")
+ EventMesh.publish("set_countdown_all_time", [self.total,self.timeSecond])
+ if self.total <= 0:
+ self.g_state = 0
+ self.g_end = 1
+ self.hour = 0
+ self.min = 0
+ self.sec = 0
+ EventMesh.publish("set_countdown_off_state", [0,self.g_state])
+ self.timer.stop()
+ self.show_value()
+ EventMesh.publish("load_screen", {"screen": "countdown_end"})
# self.total = self.total - 1
self.meta = countdown_end_screen
self.FIND_timer_count = 0
self.FIND_timer.start(3000, 1, self.FIND_timer_cb)
+ EventMesh.publish("close_count_show_info")
self.aud.play(1, 1, 'E:/static/audio_audio_haixiu.mp3') #播放声音
def FIND_timer_cb(self, *args):
self.aud.play(1, 1, 'E:/static/audio_audio_haixiu.mp3')
def stop_FIND(self) :
- EventMesh.publish("close_count_show_info")
+
self.FIND_timer.stop()
self.aud.stopAll()
watchface1_res_stat_charge_in_img.set_size(10,18)
watchface1_res_stat_charge_in_img.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
watchface1_res_stat_charge_in_img.add_flag(lv.obj.FLAG.CLICKABLE)
-watchface1_res_stat_charge_in_img.set_src("E:/static/charge_in.png")
+# watchface1_res_stat_charge_in_img.set_src("E:/static/charge_in.png")
# add style for watchface1_res_stat_charge_in_img
watchface1_res_stat_charge_in_img.add_style(style_watchface_img_default, lv.PART.MAIN|lv.STATE.DEFAULT)
#print("__battery_cb:",str(msg))
#print(msg)
if msg[0] == '1':
- watchface1_res_stat_charge_in_img.set_src("E:/static/charge_in.png")
+ watchface1_res_stat_battery_img.set_src("E:/static/charge_ing.png")
else:
- watchface1_res_stat_charge_in_img.set_src("E:/static/charge_in1.png")
-
- watchface1_res_stat_battery_img.set_src("E:/static/vbat_%d.png"%(msg[1]))#"E:/vbat_60.png"
+ # watchface1_res_stat_charge_in_img.set_src("E:/static/charge_in1.png")
+ watchface1_res_stat_battery_img.set_src("E:/static/vbat_%d.png"%(msg[1]))#"E:/vbat_60.png"
pass
def __oldHrValue(self, event, msg):
#print("__battery_cb:",str(msg))
#print(msg)
if msg[0] == '1':
- watchface2_res_stat_charge_in_img.set_src("E:/static/charge_in.png")
+ watchface2_res_stat_battery_img.set_src("E:/static/charge_ing.png")
else:
- watchface2_res_stat_charge_in_img.set_src("E:/static/charge_in1.png")
-
- watchface2_res_stat_battery_img.set_src("E:/static/vbat_%d.png"%(msg[1]))#"E:/vbat_60.png"
+ # watchface2_res_stat_charge_in_img.set_src("E:/static/charge_in1.png")
+ watchface2_res_stat_battery_img.set_src("E:/static/vbat_%d.png"%(msg[1]))#"E:/vbat_60.png"
pass
def __stepValue(self, event, msg):
if msg == None:
poweron_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
poweron_label = lv.label(poweron_screen)
-poweron_label.set_text("WELLCOM")
+poweron_label.set_text("WELCOME")
poweron_label.align(lv.ALIGN.CENTER, 0, 0)
poweron_label.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
class PowerOnScreen(Screen):
else:
play_state = EventMesh.publish("get_audio_state")#音频播放状态
if play_state != None:
- if play_state == 0 or self.count >= 5:#在上一个界面在播放音频时切换界面则关闭 以免一直播放
+ if self.count >= 9:#在上一个界面在播放音频时切换界面则关闭 以免一直播放
self.count = 0
EventMesh.publish("load_screen", {"screen": "main_menu"})
self.timer.stop()
-
return
self.count+=1
self.meta = poweroff_confirm_screen
self.timer = osTimer()
self.read_data = {}
+ self.count = 0
+
def initialization(self):
step = EventMesh.publish("get_old_step_value")
self.read_data = EventMesh.publish("get_storage_data")
self.count+=1
play_state = EventMesh.publish("get_audio_state")#音频播放状态
if play_state != None:
- if play_state == 0 or self.count > 5:#在上一个界面在播放音频时切换界面则关闭 以免一直播放
+ if self.count > 8:#在上一个界面在播放音频时切换界面则关闭 以免一直播放
self.count = 0
self.timer.stop()
Power.powerDown()