From: p15692025051 <846603105@qq.com> Date: Mon, 18 Sep 2023 08:02:27 +0000 (+0800) Subject: d10休眠模式添加,gps修正 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=5ef3988d00200e5e5b794c03e5a93a42ab4707e3;p=mirrors%2FASR1603_G5.git d10休眠模式添加,gps修正 --- diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modHsensor_GH3018.c b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modHsensor_GH3018.c index 19595dea..a79510cb 100644 --- a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modHsensor_GH3018.c +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modHsensor_GH3018.c @@ -449,7 +449,8 @@ STATIC mp_obj_t mp_GH3018_get_hrv(mp_obj_t self_in) //获取佩戴状态 STATIC mp_obj_t mp_GH3018_get_wear(mp_obj_t self_in) { - return mp_obj_new_int(s_gh3018_wear_status); + return mp_obj_new_int(1); + //return mp_obj_new_int(s_gh3018_wear_status); } //获取所有数据 心律、血氧、高压、低压、HRV、佩戴状态 STATIC mp_obj_t mp_GH3018_get_all_data(mp_obj_t self_in) @@ -472,7 +473,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_activate_GH3018_obj, mp_activate_GH3018);// STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_get_blood_oxygen_obj, mp_GH3018_get_blood_oxygen);// STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_get_heart_obj, mp_GH3018_get_heart);// STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_get_blood_pressure_obj, mp_GH3018_get_blood_pressure);// -STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_get_weart_obj, mp_GH3018_get_wear);// +STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_get_wear_obj, mp_GH3018_get_wear);// STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_open_heart_obj, mp_GH3018_open_heart);// STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_open_blood_oxygen_obj, mp_GH3018_open_blood_oxygen);// STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_GH3018_open_hrv_obj, mp_GH3018_open_hrv);// @@ -488,7 +489,7 @@ STATIC const mp_rom_map_elem_t GH3018_locals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_get_blood_oxygen), MP_ROM_PTR(&mp_GH3018_get_blood_oxygen_obj)}, { MP_ROM_QSTR(MP_QSTR_get_heart), MP_ROM_PTR(&mp_GH3018_get_heart_obj)}, { MP_ROM_QSTR(MP_QSTR_get_blood_pressure), MP_ROM_PTR(&mp_GH3018_get_blood_pressure_obj)}, - { MP_ROM_QSTR(MP_QSTR_get_weart), MP_ROM_PTR(&mp_GH3018_get_weart_obj)}, + { MP_ROM_QSTR(MP_QSTR_get_wear), MP_ROM_PTR(&mp_GH3018_get_wear_obj)}, { MP_ROM_QSTR(MP_QSTR_open_heart), MP_ROM_PTR(&mp_GH3018_open_heart_obj)}, { MP_ROM_QSTR(MP_QSTR_open_blood_oxygen), MP_ROM_PTR(&mp_GH3018_open_blood_oxygen_obj)}, { MP_ROM_QSTR(MP_QSTR_open_hrv), MP_ROM_PTR(&mp_GH3018_open_hrv_obj)}, diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/Makefile b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/Makefile index 48bc55a5..a5adfa30 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/Makefile +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/Makefile @@ -948,7 +948,6 @@ frozen_mpy_list = $(BUILD)/_boot.mpy \ $(BUILD)/ymodem.mpy \ $(BUILD)/alarm.mpy \ $(BUILD)/appFactoryMode.mpy \ - $(BUILD)/appWechat.mpy \ $(BUILD)/btn_device_ec800m.mpy \ $(BUILD)/capacitive_hynitron_cst816d_update.mpy \ $(BUILD)/common.mpy \ 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 6571d11a..d9bd0ff1 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 @@ -1501,7 +1501,8 @@ class BtnDevice(Abstract): usys.print_exception(e) def publish_message_event_btnInfo(self,event,msg): self.btnInfo_queue.put(msg) - + EventMesh.publish(constants.EVENT.SYSTEM_UP)#唤醒休眠 + def publish_wechat_btn_event_cb(self, *args, **kwargs): EventMesh.publish("publish_message_event_btnInfo",{"func":self.wechatKey_press_cb,"data":0}) 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 829658be..f4dfc226 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 @@ -306,7 +306,7 @@ class ledEventManager(Abstract):#灯事件 def led_fun_cb(self, data):# if self.led_enable ==0 and self.led_total_time == 0: return - # print("self.long_count",self.long_count) + print("self.long_count",self.long_count) if self.led_total_time != 0: #红灯闪烁 if self.long_light_mode == led_mode.FLASH_LIGHT_RED :# 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 f22eb339..d9f16143 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 @@ -22,11 +22,16 @@ import usys import audio from machine import I2C from Gsensor import SC7A20 +import pm try : from Hsensor import GH3018 except Exception as e: print("Hsensor none GH3018:{}".format(e)) -# +# +try : + from Hsensor import HX3918 +except Exception as e: + print("Hsensor none HX3918:{}".format(e)) from machine import RTC import quecgnss import wifiScan @@ -695,7 +700,11 @@ class DeviceInfoManager(Abstract): self.gsensor.init() print("DeviceInfoManager:2") self.gsensor.set_callback(self.gsensor_cb) - + try : + self.hsensor = HX3918() + + except Exception as e: + print("Hsensor none HX3918:{}".format(e)) try : self.hsensor = GH3018() except Exception as e: @@ -831,11 +840,13 @@ class DeviceInfoManager(Abstract): EventMesh.publish("countdown_end_cb") """定时检查是否关闭gps失败""" - gnss_state = quecgnss.get_state() - get_location_flag = EventMesh.publish("get_location_flag") - if get_location_flag != None: - if gnss_state == 2 and get_location_flag == 0: - EventMesh.publish(constants.EVENT.GPSCLOSE) + # gnss_state = quecgnss.get_state() + # get_location_flag = EventMesh.publish("get_location_flag") + # if get_location_flag != None: + # # if gnss_state == 2 and get_location_flag == 0: + # # EventMesh.publish(constants.EVENT.GPSCLOSE) + # if(get_location_flag == 0): + # EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.UD_SEND) #开始UD定位 """7分钟一次心跳""" if math.fabs(time_tmp - self.KA_time) > 7*60: #7分钟一次心跳 @@ -843,16 +854,22 @@ class DeviceInfoManager(Abstract): EventMesh.publish(constants.PROTOCOL.KA_SEND) """定时定位""" + #EventMesh.publish("set_upload_data",3*60) self.upload_time = EventMesh.publish("get_upload_data") #print("self.upload_time:{} math.fabs(time_tmp - self.UD_time):{}".format(self.upload_time,math.fabs(time_tmp - self.UD_time))) if self.upload_time != None : if math.fabs(time_tmp - self.UD_time) > self.upload_time: #30分钟一次定位 self.UD_time = time_tmp status_tmp = self.gsensor.get_status()#获取运动次数 + #status_tmp = 4 #EventMesh.txt_log("status_count:{}".format(status_tmp)) if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1 and status_tmp > 3 : EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.UD_SEND) #开始UD定位 self.gsensor.clean_status()#清除运动次数 + else : #关闭定位 + #EventMesh.txt_log("NO status") + print("NO status") + EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 EventMesh.publish(constants.EVENT.PUSH_STEP, self.get_step_count()) """电池平均值""" @@ -996,26 +1013,26 @@ class DeviceInfoManager(Abstract): self.sms_full_flag = 0 """定时测量心率,血氧,体温""" - # WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据 + WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据 self.get_hr_state = EventMesh.publish("get_hr_state") 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") hr_time = {} hr_time = EventMesh.publish("get_time_hr_spo2")#获取时间是否大于0 - # if get_temp_state != None : #突然脱腕 - # if get_temp_state > 1 and WEAR != 1: - # 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: - # 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 and battery[0] != "1": #: + if get_temp_state != None : #突然脱腕 + if get_temp_state > 1 and WEAR != 1: + 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: + 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 and battery[0] != "1" and WEAR == 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: @@ -1864,8 +1881,7 @@ class DeviceInfoManager(Abstract): return data[0] def get_wear(self, topic, msg): - pass - # return self.hsensor.get_wear() + return self.hsensor.get_wear() def get_Hsensor(self, topic, msg): return self.hsensor @@ -1941,6 +1957,7 @@ class DeviceInfoManager(Abstract): def wifiScan_cb(args): EventMesh.publish(constants.EVENT.WIFIINFO, args) + wifiScan.control(0) class LocationManager(Abstract): @@ -1949,16 +1966,18 @@ class LocationManager(Abstract): self.match = GPSMatch() self.timer_read_GPS_info = osTimer() self.wifi_data = [] - self.gps_data = [] + self.gps_data = {} self.cell_data = [] self.location_timer_count = 0 self.location_check_data_timer_count = 0 + self.GGA_count = 0 + self.RMC_A_count = 0 self.location_type = 0 #定位类型,0:正常定位,有gps数据或60秒关闭;1:测试模式,只有发CLOSE_LOCATION消息才关闭 self.location_flag = 0 self.start_location_flag = 0 - self.location_thread_id = 0 - self.location_thread_id = _thread.start_new_thread(self.location_thread, ()) + self.location_thread_id = 0 self.location_queue = Queue(100) + self.lpm_fd = None #quecgnss.init() #quecgnss.gnssEnable(0) @staticmethod @@ -1998,34 +2017,37 @@ class LocationManager(Abstract): return self.location_flag def start_location(self, event, msg): self.location_queue.put(msg)#测试类型入队 + self.gps_data = {} + self.wifi_data = [] + self.cell_data = [] + self.location_timer_count = 0 + self.GSV_sig_ok_count = 0 print("start_location:{}".format(msg)) - self.timer_read_GPS_info.start(1000, 1, self.location_timer) if( self.location_flag == 1): return - self.location_timer_count = 0 + self.location_thread_id = _thread.start_new_thread(self.location_thread, ()) self.location_flag = 1 #self.gps_open(event, msg) - self.start_location_flag = 1 def start_location_test(self, event, msg): print("start_location_test") - self.timer_read_GPS_info.start(1000, 1, self.location_timer) + + self.location_type = 1 if( self.location_flag == 1): return + self.location_thread_id = _thread.start_new_thread(self.location_thread, ()) self.location_timer_count = 0 self.location_flag = 1 #self.gps_open(event, msg) self.location_type = 1 - self.start_location_flag = 1 + def close_location(self, event, msg): self.location_flag = 0 self.location_type = 0 - self.gps.power_switch(0) - wifiScan.control(0) - self.timer_read_GPS_info.stop() + def WIFI_INFO(self, event, msg): self.wifi_data = msg @@ -2034,11 +2056,12 @@ class LocationManager(Abstract): def WIFI_scan_open(self, event, msg): #print("WIFI_scan_open") - self.wifi_data = [] - if wifiScan.support(): - if wifiScan.getState() == False : - wifiScan.control(1) - wifiScan.setConfig(4, 2, 5, 6, 0) #设置WiFi参数,10秒上层,两轮,最多6个,6秒底层,PS优先 + + + if wifiScan.getState() == False : + self.wifi_data = [] + wifiScan.control(1) + wifiScan.setCfgParam(6, 2, 5, 0) #设置WiFi参数,10秒上层,两轮,最多6个,6秒底层,PS优先 wifiScan.setCallback(wifiScan_cb) #注册回调函数 wifiScan.asyncStart() #print("wifiScan.asyncStart") @@ -2058,8 +2081,11 @@ class LocationManager(Abstract): def Location_send(self, msg) : #print("Location_send1") + if self.location_queue.empty() == True: + return date = "{:04d}{:02d}{:02d},{:02d}{:02d}{:02d}".format(*utime.localtime()[0:6]) date = date[2:] + #date = "180916,025723" GPS_type = "V" latitude = "0.000000,N" longitude = "0.000000,E" @@ -2067,7 +2093,8 @@ class LocationManager(Abstract): direction = "0.0" high = "100.0" number = "0" - if msg[0] != [] :#有GPS数据 + precision = "24" + if msg[0] :#有GPS数据 GPS_type = "A" # 纬度 latitude = msg[0]["latitude"] @@ -2086,6 +2113,9 @@ class LocationManager(Abstract): high = "%s"%(high_tmp[0]) # 讯号质量:搜索到的卫星数目 number = msg[0]["number"] + precision = msg[0]["precision"] + #date = msg[0]["date"] + #gsm 信号强度 gsm_sig = str((100//31)*EventMesh.publish("screen_get_sig")) # 电池电量百分比 @@ -2145,6 +2175,7 @@ class LocationManager(Abstract): send_data += ",%s,%s,%s"%(battery_caption,step,turn_count) send_data += ",%s,%d,%s"%(state,CELL_num,CELL_data) send_data += ",%d,%s"%(WIFI_num,WIFI_data) + send_data+=",%s"%(precision) #print("Location_send2:{} q_size:{}".format(send_data,self.location_queue.size())) while True: if self.location_queue.empty() == False: @@ -2157,134 +2188,231 @@ class LocationManager(Abstract): def location_thread(self): - gnss_r_data = "" - while True: + self.wifi_data = [] + self.gps_data = {} + self.cell_data = [] + gnss_r_data = [] + self.GSV_sig_ok_count = 0 + self.GGA_count = 0 + self.RMC_A_count = 0 + if self.lpm_fd == None: + self.lpm_fd = pm.create_wakelock("test_lock", len("test_lock")) + pm.wakelock_lock(self.lpm_fd) + print("location_thread:1") + EventMesh.publish(constants.EVENT.GPSOPEN) + print("location_thread:2") + self.timer_read_GPS_info.start(1000, 1, self.location_timer) + + #utime.sleep_ms(1000) + self.location_timer_count = 0 + #quecgnss.read(4096)#去掉第一次错误数据 + #EventMesh.txt_log("START_LOCATION") + # pm.autosleep(0)#唤醒 + # pm.sclkEx_set(0, 1, 5) + while self.location_flag == 1: try : - if self.location_flag == 1 : + + match_gga_data = [] + #match_gsv_data = [] + gnss_r_data = [] + # if self.location_check_data_timer_count >= 3: + # pm.autosleep(0)#唤醒 + # pm.sclkEx_set(0, 1, 5) + if self.location_check_data_timer_count >= 5 :#5秒查一次基站数据和wifi数据 + self.location_check_data_timer_count = 0 + #print(self.location_timer_count) + #GSV_dict= {} - if self.start_location_flag == 1 : - self.start_location_flag = 0 - self.wifi_data = [] - self.gps_data = [] - self.cell_data = [] - gnss_r_data = [] - print("location_thread:1") - EventMesh.publish(constants.EVENT.GPSOPEN) - print("location_thread:2") - EventMesh.publish(constants.EVENT.WIFISCANOPEN) - print("location_thread:3") - utime.sleep_ms(1000) - self.location_timer_count - #quecgnss.read(4096)#去掉第一次错误数据 - match_gga_data = [] - #match_gsv_data = [] - gnss_r_data = [] - if self.location_check_data_timer_count > 3 :#5秒查一次基站数据和wifi数据 - self.location_check_data_timer_count = 0 - #print(self.location_timer_count) - GSV_dict= {} - GSV_sig_ok_count = 0 - #检查GNSS数据 - if (self.gps_data == [] or self.location_type == 1) and quecgnss.get_state() == 2: - self.gps.__gps_nmea_data_clean() - #gnss_r_data = [0,1] - gnss_r_data = quecgnss.read(4096) - #print("location gnss_r_data:{}".format(gnss_r_data[1].decode())) - print("gnss_r_data len:{}".format(gnss_r_data[0])) - if gnss_r_data[0] > 0 : #有数据 - gsv_data = gnss_r_data[1].split("GSV") - if len(gsv_data) >= 2 : - gsv_data = gsv_data[1:] - for i in range(len(gsv_data)) : - gsv_data[i] = gsv_data[i].split("\r\n")[0] - gsv_tmp = gsv_data[i].split(",") - if len(gsv_tmp) < 7 : - break - gsv_tmp = gsv_tmp[4:] - #print("gsv_tmp:{}".format(gsv_tmp)) - for i in range(len(gsv_tmp)) : - if i % 4 == 0: - GSV_dict[gsv_tmp[i]] = gsv_tmp[i+3] - try: - #print("gsv_tmp[i+3]:{}".format(gsv_tmp[i+3])) - if gsv_tmp[i+3] != "" : - if int(gsv_tmp[i+3])>=24: - GSV_sig_ok_count+=1 - except Exception as e: - usys.print_exception(e) - #print("GSV_dict:{}:[{}]".format(gsv_tmp[i],gsv_tmp[i+3])) - if len(gsv_tmp)-i < 4: - break - #match_gga_data = self.match.GxGGA(gnss_r_data[1]).split(",") - #match_gsv_data = self.match.GxGSV(gnss_r_data[1]).split(",") - if self.gps.__check_gps_valid(gnss_r_data[1].decode()): #数据齐全 - match_gmc_data = self.match.GxRMC(gnss_r_data[1]).split(",") - match_vtg_data = self.match.GxVTG(gnss_r_data[1]).split(",") - match_gga_data = self.match.GxGGA(gnss_r_data[1]).split(",") - gps_data_tmp = self.gps.read_coordinates(gnss_r_data[1]) - latitude_tmp = str(gps_data_tmp[1]).split(".") - if len(latitude_tmp) >= 2 and len(latitude_tmp[1])>=5: - latitude = "%s.%s"%(latitude_tmp[0],latitude_tmp[1][:6]) - latitude = "%s,%s"%(latitude,match_gmc_data[4] ) - longitude_tmp = str(gps_data_tmp[0]).split(".") - if len(longitude_tmp) >= 2 and len(longitude_tmp[1])>=5: - longitude = "%s.%s"%(longitude_tmp[0],longitude_tmp[1][:6]) - longitude = "%s,%s"%(longitude,match_gmc_data[6] ) #match_gmc_data[6] + str(gnss_r_data[1]) - high = str(gps_data_tmp[2]) - self.gps_data = { - "latitude": latitude, - "longitude": longitude, - "high": high, - "direction": match_vtg_data[1], - "speed": match_vtg_data[5], - "number": match_gga_data[7], - } - #检查wifi数据 - if self.wifi_data == [] or (self.wifi_data != [] and self.wifi_data[0] == 0):#and self.wifi_data[0] <= 0: - EventMesh.publish(constants.EVENT.WIFISCANOPEN) + #检查GNSS数据 + if ( self.gps_data == {} or self.location_type == 1) and quecgnss.get_state() == 2: - #检查基站数据 - if self.cell_data == []: - data_tmp = net.getCellInfo() - for cell in data_tmp: - if cell and cell[0][0] == 0 and len(cell[0]) > 1: - self.cell_data = cell + self.gps.__gps_nmea_data_clean() + #gnss_r_data = [0,1] + gnss_r_data = quecgnss.read(4096) + #EventMesh.txt_log("gps Datalen:{}".format(gnss_r_data[0])) + print("location gnss_r_data:len{}\n{}".format(gnss_r_data[0],gnss_r_data[1].decode())) + #print("gnss_r_data len:{}".format(gnss_r_data[0])) + if gnss_r_data[0] > 0 : #有数据 + tmp_ok_count = 0 + gsv_data = gnss_r_data[1].split("GSV") + + if len(gsv_data) >= 2 : + gsv_data = gsv_data[1:] + for i in range(len(gsv_data)) : + gsv_data[i] = gsv_data[i].split("\r\n")[0] + gsv_tmp = gsv_data[i].split(",") + if len(gsv_tmp) < 7 : break - if self.location_timer_count >= 60*7 : #4分钟关闭 + + gsv_tmp = gsv_tmp[4:] + #print("gsv_tmp:{}".format(gsv_tmp)) + for i in range(len(gsv_tmp)) : + if i % 4 == 0: + #GSV_dict[gsv_tmp[i]] = gsv_tmp[i+3] + try: + #print("gsv_tmp[i+3]:{}".format(gsv_tmp[i+3])) + if gsv_tmp[i+3] != "" : + if int(gsv_tmp[i+3])>=20: + tmp_ok_count +=1 + except Exception as e: + usys.print_exception(e) + #print("GSV_dict:{}:[{}]".format(gsv_tmp[i],gsv_tmp[i+3])) + if len(gsv_tmp)-i < 4: + break + + if(tmp_ok_count > self.GSV_sig_ok_count ): + self.GSV_sig_ok_count = tmp_ok_count + + + # if len(match_gga_data) > 8: + # #print(match_gga_data) + # if(match_gga_data[7] ): + # gga_count_tmp = int(match_gga_data[7]) #可用卫星 + # if(gga_count_tmp > self.GGA_count): + # self.GGA_count = gga_count_tmp + print("GGA_count:{} GSV_sig_ok_coun:{} ".format(self.GGA_count,self.GSV_sig_ok_count)) + + match_rmc_data = self.match.GxRMC(gnss_r_data[1]).split(",") + + #print("match_rmc_data:\n{}".format(match_rmc_data)) + if len (match_rmc_data)>3: #有rmc数据 + if match_rmc_data[2] == 'A': + + if self.gps.__check_gps_valid(gnss_r_data[1].decode()): #数据齐全 : + + #print("hhhhhh:{}\n\n".format(self.gps.__gsv_data)) + match_vtg_data = self.gps.__vtg_data.split(",")#self.match.GxVTG(gnss_r_data[1]).split(",") + match_gga_data = self.gps.__gga_data.split(",")#self.match.GxGGA(gnss_r_data[1]).split(",") + #match_gga_data = self.match.GxGGA(gnss_r_data[1]).split(",") + + EventMesh.txt_log("GGA:{}".format(match_gga_data)) + # EventMesh.txt_log("VTG:{}".format(match_vtg_data)) + # EventMesh.txt_log("RMC:{}".format(match_rmc_data)) + # EventMesh.txt_log("timer:{} ok_count:{} count:{}\n".format(self.location_timer_count,self.GSV_sig_ok_count,self.GGA_count)) + print("LOCATION_ok :time:{}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n".format(self.location_timer_count)) + gps_date = "%s,%s"%(match_rmc_data[9],match_rmc_data[1][:6])#日期 + gps_data_tmp = self.gps.read_coordinates(gnss_r_data[1]) + latitude = "0,N" #纬度 + latitude_tmp = str(gps_data_tmp[1]).split(".") + if len(latitude_tmp) >= 2 and len(latitude_tmp[1])>=5: + latitude = "%s.%s"%(latitude_tmp[0],latitude_tmp[1][:6]) + latitude = "%s,%s"%(latitude,match_rmc_data[4] ) + + longitude = "0,E"#经度 + longitude_tmp = str(gps_data_tmp[0]).split(".") + if len(longitude_tmp) >= 2 and len(longitude_tmp[1])>=5: + longitude = "%s.%s"%(longitude_tmp[0],longitude_tmp[1][:6]) + longitude = "%s,%s"%(longitude,match_rmc_data[6] ) #match_rmc_data[6] + str(gnss_r_data[1]) + + high = "0"#高度 + high = str(gps_data_tmp[2]) + number = "0"#可用卫星 + precision = "5.8"#精度 + if len(match_gga_data)>5 : + if match_gga_data[7]: + number = match_gga_data[7] + if match_gga_data[8]: + precision = match_gga_data[8] + direction = "249.5" #方向 + speed = '0.00' #速度 + if(len(match_vtg_data)>5 ): + if match_vtg_data[1]: + direction = match_vtg_data[1] + if match_vtg_data[7]: + speed = match_vtg_data[7] + self.gps_data = { + "latitude": latitude, + "longitude": longitude, + "high": high, + "direction": direction, + "speed": speed, + "number": number, + "date": gps_date, + "precision": precision + } + else : + EventMesh.txt_log("gps数据不全") + else : + EventMesh.txt_log("gps 无数据") + + + + #检查wifi数据 + if self.wifi_data == [] or (self.wifi_data != [] and self.wifi_data[0] == 0):#and self.wifi_data[0] <= 0: + EventMesh.publish(constants.EVENT.WIFISCANOPEN) + + #检查基站数据 + if self.cell_data == []: + data_tmp = net.getCellInfo() + if(len(data_tmp)>=2): + for cell in data_tmp: + if cell and cell[0][0] == 0 and len(cell[0]) > 1: + self.cell_data = cell + break + + if self.location_type == 1: #测试模式 + self.location_timer_count = 0 + if len(gnss_r_data) >= 1: + if gnss_r_data[0] > 0: + EventMesh.publish("PUSH_LOCATION_DATA", [gnss_r_data,self.wifi_data,self.cell_data]) + if self.gps_data != {} : #发送数据 EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 + self.location_queue.put(constants.PROTOCOL.UD_SEND) + self.Location_send([self.gps_data,self.wifi_data,self.cell_data]) + + + elif self.location_type == 0: #正常模式 + if self.gps_data != {} or self.location_timer_count > 100: #or( self.wifi_data != [] and self.cell_data != []): + if self.location_queue.empty() == False:#有定位队列 + EventMesh.txt_log("LOCATION:timer:{} ok_count:{} ".format(self.location_timer_count,self.GSV_sig_ok_count)) + upload_time = EventMesh.publish("get_upload_data") + + + self.Location_send([self.gps_data,self.wifi_data,self.cell_data]) + #if upload_time > 200 : + EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 + # else: #定位间隔小于3分钟不关闭gps,不影响无信号判断 + # self.location_timer_count = 0 + # self.GSV_sig_ok_count = 0 + + + # if (self.GGA_count < 3 and self.GSV_sig_ok_count < 2) and self.wifi_data and self.cell_data and self.location_timer_count > 30 and self.location_timer_count < 40: #超过20秒且有效卫星个数少于3 + # EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 + # EventMesh.txt_log("GGA_count<3:timer:{} ok_count:{} count:{}".format(self.location_timer_count,self.GSV_sig_ok_count,self.GGA_count)) + # self.Location_send([self.gps_data,self.wifi_data,self.cell_data]) + + if self.GSV_sig_ok_count <= 1 and self.wifi_data != [] and self.cell_data != [] and self.location_timer_count > 20: #超过40秒且信号大于30的不足3个 + EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 + EventMesh.txt_log("GSV_sig_ok_count<3:timer:{} ok_count:{} count:{}".format(self.location_timer_count,self.GSV_sig_ok_count,self.GGA_count)) + self.Location_send([self.gps_data,self.wifi_data,self.cell_data]) #break - #EventMesh.txt_log("GSV_sig_ok_count :{}".format(GSV_sig_ok_count)) - if self.location_type == 1: #测试模式 - if len(gnss_r_data) >= 1: - if gnss_r_data[0] > 0: - EventMesh.publish("PUSH_LOCATION_DATA", [gnss_r_data,self.wifi_data,self.cell_data]) - elif self.location_type == 0: #正常模式 - if self.gps_data != [] or self.location_timer_count > 180: #or( self.wifi_data != [] and self.cell_data != []): - self.Location_send([self.gps_data,self.wifi_data,self.cell_data]) - EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 - EventMesh.txt_log("CLOSE_LOCATION:location_timer_count:{}".format(self.location_timer_count)) - #break - - if len(GSV_dict) < 2 and GSV_sig_ok_count < 1 and self.wifi_data != [] and self.cell_data != [] and self.location_timer_count > 20: #超过20秒且卫星个数少于3 - self.Location_send([self.gps_data,self.wifi_data,self.cell_data]) - EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 - EventMesh.txt_log("len(GSV_dict) < 2") - if GSV_sig_ok_count < 3 and self.wifi_data != [] and self.cell_data != [] and self.location_timer_count > 40: #超过40秒且信号大于30的不足3个 - self.Location_send([self.gps_data,self.wifi_data,self.cell_data]) - EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 - EventMesh.txt_log("GSV_sig_ok_count < 3") - #break - utime.sleep_ms(1000) - #print("location_timer_count:{}".format(self.location_timer_count)) - else : - utime.sleep_ms(2000) + # if self.location_type != 1 and self.location_timer_count >= 60*4 : #4分钟关闭 + # EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 + #break + #EventMesh.txt_log("self.GSV_sig_ok_count :{}".format(self.GSV_sig_ok_count)) + #EventMesh.publish("set_old_step_value",self.location_timer_count) + + #print("location_timer_count:{}".format(self.location_timer_count)) + except Exception as e: usys.print_exception(e) - utime.sleep_ms(1000) - print("location_thread:ERROR:{}\r\n{}".format(e,Exception)) + EventMesh.txt_log("location_thread:ERROR:".format(e)) + #print("location_thread:ERROR:{}".format(usys.print_exception(e))) print("self.gps_data{},self.wifi_data{},self.cell_data{}".format(self.gps_data,self.wifi_data,self.cell_data)) - self.Location_send([self.gps_data,self.wifi_data,self.cell_data]) + #self.Location_send([self.gps_data,self.wifi_data,self.cell_data]) EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位 + utime.sleep_ms(500) + self.timer_read_GPS_info.stop() + self.gps.power_switch(0) + wifiScan.control(0) + # if EventMesh.publish("get_lcd_state" ) == 0:#休眠的时候,恢复休眠 + # pm.autosleep(1) + # pm.sclkEx_set(1, 1, 5) + if self.lpm_fd != None: + pm.wakelock_unlock(self.lpm_fd) + #pm.delete_wakelock(lpm_fd) + print("CLOSE_LOCATION") + #EventMesh.txt_log("CLOSE_LOCATION") 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 6d1b339f..149d17a1 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 @@ -23,7 +23,7 @@ import usys def server_init(server_type = None): - #服务器选择1,防走丢,2大锤,3三基同创,4童信 + #服务器选择1,防走丢,2大锤,3三基同创,4童信,5云米,6荣为 if server_type == None: server_type = 1 #print("server_init:server_type:{}".format(server_type)) @@ -56,6 +56,11 @@ def server_init(server_type = None): d_server_port = 8505 d_md5_key = "" d_PID = "3G" + elif server_type == 6: + d_server_addr = "120.26.104.21" + d_server_port = 9968 + d_md5_key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP" + d_PID = "SZKW" return [d_server_addr,d_server_port,d_md5_key,d_PID] from queue import Queue def unicode_to_utf8(src): @@ -157,7 +162,7 @@ class SockManager(Abstract): def connect(self): print("connect1{}:{}".format(self.server_addr, self.server_port)) - if EventMesh.publish("network_state") == 0: #没注网 + if EventMesh.publish("get_sim_Status") != 1: #没sim return try: if(self.sock != None) : @@ -203,7 +208,7 @@ class SockManager(Abstract): data = self.socket_send_queue.get() print("TCP:send data1 len:{}".format(len(data))) - # print("ui_queue_thread:data = {}".format(data)) + #print("ui_queue_thread:data = {}".format(data)) socketsta = self.sock.getsocketsta() if(socketsta == -1): #给释放了或者出错了 continue @@ -215,8 +220,8 @@ class SockManager(Abstract): except Exception as e: self.reconnect() self.socket_send_queue.put(data)#重新把数据加回队列 - print("socket_send_queue_thread1:ERROR:") - usys.print_exception(e) + #print("socket_send_queue_thread1:ERROR:") + #usys.print_exception(e) elif socketsta < 4:#正在连接,等待连接成功重新发送 count = 0 while True: @@ -230,8 +235,8 @@ class SockManager(Abstract): except Exception as e: self.reconnect() self.socket_send_queue.put(data)#重新把数据加回队列 - print("socket_send_queue_thread2:ERROR:") - usys.print_exception(e) + #print("socket_send_queue_thread2:ERROR:") + #usys.print_exception(e) break else :#连接错误 print("socket_send_queue_thread:ERROR:reconnect") @@ -240,7 +245,7 @@ class SockManager(Abstract): def send(self, topic, msg): # print("TCP:send data:{}".format(msg)) - if EventMesh.publish("network_state") == 0: #没注网,则不发送 + if EventMesh.publish("get_sim_Status") != 1: #没sim,则不发送 EventMesh.publish(constants.EVENT.SET_CONNECT, 0)#标记断网 print("dataCall not connect") return @@ -266,7 +271,7 @@ class SockManager(Abstract): data = data + r print("TCP recv: data:len:{}".format(len(data))) - # print("TCP recv: data:{}".format(data)) + print("TCP recv: data:{}".format(data)) if data[-1] != 0x5d and len(data)<20*1024: #']': continue self.connect_tmp = 1 #有数据,就认为是连接状态 @@ -282,8 +287,8 @@ class SockManager(Abstract): data = b'' except Exception as e: - print("TCP:ERROR:recv:") - usys.print_exception(e) + #print("TCP:ERROR:recv:") + #usys.print_exception(e) self.run_flag = False self.reconnect() @@ -547,7 +552,7 @@ class UD_ProtoCol(ProtoCol): MD5_SIGN = self.pack_MD5_head(MD5_head_data) data = "[%s%s]"%(str(MD5_SIGN),send_data) - print("UD:data:{}".format(data)) + #EventMesh.txt_log("{}".format(data)) # wt_data = EventMesh.publish("get_weather_data") # # #如果没有天气数据,则获取天气数据 # if wt_data != None or wt_data[0] == None : diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/ui.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/ui.py index f6395b34..0f3463a3 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/ui.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/ui.py @@ -1,6 +1,5 @@ import utime import osTimer -import lvgl as lv import EventMesh from machine import Timer import voiceCall @@ -31,5904 +30,12 @@ def audio_cb(event): CALL_LOG_MAX = 50 aud = audio.Audio(0) aud.setCallback(audio_cb) -# -----------------------------------------style create-------------------------------------- -style_screen = lv.style_t() -style_screen.init() -style_screen.set_radius(0) -style_screen.set_bg_color(lv.color_make(0x00, 0x00, 0x00)) -style_screen.set_bg_opa(255) -style_screen.set_border_width(0) -style_screen.set_pad_left(0) -style_screen.set_pad_right(0) -style_screen.set_pad_top(0) -style_screen.set_pad_bottom(0) -style_bar = lv.style_t() -style_bar.init() -style_bar.set_radius(10) -style_bar.set_bg_color(lv.color_make(0xA0, 0xA0, 0xA0)) -style_bar.set_bg_grad_color(lv.color_make(0xA0, 0xA0, 0xA0)) -style_bar.set_bg_grad_dir(lv.GRAD_DIR.VER) -style_bar.set_bg_opa(60) -style_bar.set_pad_left(0) -style_bar.set_pad_right(0) -style_bar.set_pad_top(0) -style_bar.set_pad_bottom(0) +import audio +from machine import Pin -style_bar_indic = lv.style_t() -style_bar_indic.init() -style_bar_indic.set_radius(10) -style_bar_indic.set_bg_color(lv.color_make(0xff, 0x61, 0x3a)) -style_bar_indic.set_bg_grad_color(lv.color_make(0xff, 0x61, 0x3a)) -style_bar_indic.set_bg_grad_dir(lv.GRAD_DIR.VER) -style_bar_indic.set_bg_opa(255) -# 默认白色 - -style_font_youyuan_20 = lv.style_t() -style_font_youyuan_20.init() -style_font_youyuan_20.set_text_color(lv.color_make(0xff, 0xff, 0xff)) -style_font_youyuan_20.set_text_font_v2("font_28.bin",28,0) - -style_font_youyuan_40 = lv.style_t() -style_font_youyuan_40.init() -style_font_youyuan_40.set_text_color(lv.color_make(0xff, 0xff, 0xff)) -style_font_youyuan_40.set_text_font_v2("font_40.bin",40,0) -#黑色 -style_font_youyuan_20_black = lv.style_t() -style_font_youyuan_20_black.init() -style_font_youyuan_20_black.set_text_color(lv.color_make(0x00, 0x00, 0x00)) -style_font_youyuan_20_black.set_text_font_v2("font_28.bin",28,0) - - -style_font_youyuan_20_red = lv.style_t() -style_font_youyuan_20_red.init() -style_font_youyuan_20_red.set_text_color(lv.color_make(0xff, 0x00, 0x00)) -style_font_youyuan_20_red.set_text_font_v2("font_28.bin",28,0) - -style_img = lv.style_t() -style_img.init() -style_img.set_img_opa(255) - -style_line = lv.style_t() -style_line.init() -style_line.set_line_width(2) -style_line.set_line_color(lv.color_make(0xff, 0xff, 0xff)) - - -style_list = lv.style_t() -style_list.init() -style_list.set_bg_color(lv.color_make(0x00, 0x00, 0x00)) -style_list.set_radius(0) -style_list.set_bg_opa(255) -style_list.set_border_width(0) -style_list.set_pad_left(0) -style_list.set_pad_right(0) -style_list.set_pad_top(0) - -style_list_scro = lv.style_t() -style_list_scro.init() -style_list_scro.set_bg_opa(0) - -# create style style_btn -style_btn = lv.style_t() -style_btn.init() -style_btn.set_bg_opa(0) -style_btn.set_shadow_opa(0) -style_btn.set_border_width(0) - -style_wechat_btn = lv.style_t() -style_wechat_btn.init() -style_wechat_btn.set_bg_color(lv.color_make(0x1E, 0x26, 0xff)) -style_wechat_btn.set_border_width(0) -style_wechat_btn.set_shadow_opa(0) - -style_contact_btn = lv.style_t() -style_contact_btn.init() -style_contact_btn.set_bg_color(lv.color_make(0xff, 0xff, 0xff)) -style_contact_btn.set_border_width(0) -style_contact_btn.set_shadow_opa(0) - -style_common_bg_rect_btn_pressed = lv.style_t() -style_common_bg_rect_btn_pressed.init() -style_common_bg_rect_btn_pressed.set_bg_color(lv.color_make(0x1E, 0x26, 0xff)) -style_common_bg_rect_btn_pressed.set_bg_opa(100) -style_common_bg_rect_btn_pressed.set_border_width(0) -style_common_bg_rect_btn_pressed.set_shadow_opa(0) - -style_contact_btn_pressed = lv.style_t() -style_contact_btn_pressed.init() -style_contact_btn_pressed.set_radius(5) -style_contact_btn_pressed.set_bg_color(lv.color_make(0xff,0xff,0xff)) -style_contact_btn_pressed.set_bg_grad_color(lv.color_make(0x21,0x95,0xf6)) -style_contact_btn_pressed.set_bg_grad_dir(lv.GRAD_DIR.HOR) -style_contact_btn_pressed.set_bg_opa(217) -style_contact_btn_pressed.set_border_color(lv.color_make(0x21,0x95,0xf6)) -style_contact_btn_pressed.set_border_width(0) -style_contact_btn_pressed.set_border_opa(255) -style_contact_btn_pressed.set_text_color(lv.color_make(0x00,0x00,0x00)) - - -style_alipay_btn = lv.style_t() -style_alipay_btn.init() -style_alipay_btn.set_bg_color(lv.color_make(0xFF, 0xFF, 0xff)) -style_alipay_btn.set_bg_opa(20) -style_alipay_btn.set_border_width(0) -style_alipay_btn.set_shadow_opa(0) - - - -style_circle = lv.style_t() -style_circle.init() -style_circle.set_bg_color(lv.color_make(0xff, 0xff, 0xff)) -style_circle.set_radius(0x7FFF) - - - -from common import Abstract - -class Screen(Abstract): - meta_type = "UI" - def __init__(self): - self.meta = None - self.meta_info = None - - # self.bg_img = None - - # def set_bg_img(self, _fp): - # print("bg _fp = {} NAME = {} bg_img = {}".format(_fp, self.NAME, self.bg_img)) - # if self.bg_img: - # self.bg_img.set_src(_fp) - - def load_screen(self, e, msg): - print("msg = {}".format(msg)) - EventMesh.publish("load_screen", msg) - - - - def load(self): - pass - - def get_meta(self): - return self.meta - - def Close(self): - pass - def lcd_on(self): - pass - def lcd_off(self): - pass - def done_left_to_right(self): - pass - - def done_right_to_left(self): - pass - - def done_bottom_to_top(self): - pass - - def done_top_to_bottom(self): - pass - - def done_return(self): - pass - - def done_click(self): - pass - - def done_error(self): - pass - def handle_message_event(self,data): - pass - def publish_message_event(self,data): - EventMesh.publish("publish_message_event_ui", data) - -PHONE_CALL_MAX_DATA = 22 - -phone_line_points = [{"x":0,"y":0},{"x":0,"y":40}] -phone_screen = None -phone_line = None -phone_label = None -phone_one = None -phone_two = None -phone_three = None -phone_four = None -phone_five = None -phone_six = None -phone_seven = None -phone_eight = None -phone_nine = None -phone_start = None -phone_zero = None -phone_hash = None -phone_call = None -phone_call_btn = None -phone_contact = None -phone_contact_btn = None -phone_delete = None -phone_delete_btn = None - -class PhoneScreen(Screen): - NAME = "Phone" - - def __init__(self): - - super().__init__() - self.meta = None - self.phone_num = '' - self.phone_list = [] - self.button = 0 - self.timer = osTimer() - self.timer_cb = 0 - self.count = 0 - - - - def initialization(self): - self.phone_num='' - self.phone_list = [] - global phone_screen ,phone_line,phone_label,phone_one,phone_two,phone_three,phone_four,phone_five,phone_six,phone_seven,phone_eight,phone_nine,phone_start,\ - phone_zero,phone_hash,phone_call,phone_call_btn,phone_contact,phone_contact_btn,phone_delete,phone_delete_btn - - - if phone_screen == None: - phone_screen = lv.obj() - print("phone_screen") - phone_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - phone_line = lv.line(phone_screen) - phone_line.set_points(phone_line_points,2) - phone_line.set_pos(235,8) - phone_line.set_size(2,40) - phone_line.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - phone_line.add_style(style_line,0) - - phone_label = lv.label(phone_screen) - phone_label.set_pos(0, 14) - phone_label.set_size(0, 48) - phone_label.set_text(" ") - phone_label.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_label.set_long_mode(lv.label.LONG.CLIP) - phone_label.set_style_text_align(lv.TEXT_ALIGN.RIGHT, 0) - - phone_one = lv.img(phone_screen) - phone_one.set_src("U:/static/IMAGE_NUMBER_KEY1_ICON.png") - phone_one.add_flag(lv.obj.FLAG.CLICKABLE) - phone_one.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_one.set_pos(3, 60) - phone_one.set_size(76, 50) - - phone_two = lv.img(phone_screen) - phone_two.set_size(76, 50) - phone_two.set_src("U:/static/IMAGE_NUMBER_KEY2_ICON.png") - phone_two.add_flag(lv.obj.FLAG.CLICKABLE) - phone_two.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_two.set_pos(82, 60) - - phone_three = lv.img(phone_screen) - phone_three.set_size(76, 50) - phone_three.set_src("U:/static/IMAGE_NUMBER_KEY3_ICON.png") - phone_three.add_flag(lv.obj.FLAG.CLICKABLE) - phone_three.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_three.set_pos(161, 60) - - phone_four = lv.img(phone_screen) - phone_four.set_size(76, 50) - phone_four.set_src("U:/static/IMAGE_NUMBER_KEY4_ICON.png") - phone_four.add_flag(lv.obj.FLAG.CLICKABLE) - phone_four.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_four.set_pos(3, 112) - - phone_five = lv.img(phone_screen) - phone_five.set_size(76, 50) - phone_five.set_src("U:/static/IMAGE_NUMBER_KEY5_ICON.png") - phone_five.add_flag(lv.obj.FLAG.CLICKABLE) - phone_five.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_five.set_pos(82, 112) - - phone_six = lv.img(phone_screen) - phone_six.set_size(76, 50) - phone_six.set_src("U:/static/IMAGE_NUMBER_KEY6_ICON.png") - phone_six.add_flag(lv.obj.FLAG.CLICKABLE) - phone_six.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_six.set_pos(161, 112) - - phone_seven = lv.img(phone_screen) - phone_seven.set_size(76, 50) - phone_seven.set_src("U:/static/IMAGE_NUMBER_KEY7_ICON.png") - phone_seven.add_flag(lv.obj.FLAG.CLICKABLE) - phone_seven.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_seven.set_pos(3, 164) - - phone_eight = lv.img(phone_screen) - phone_eight.set_size(76, 50) - phone_eight.set_src("U:/static/IMAGE_NUMBER_KEY8_ICON.png") - phone_eight.add_flag(lv.obj.FLAG.CLICKABLE) - phone_eight.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_eight.set_pos(82, 164) - - phone_nine = lv.img(phone_screen) - phone_nine.set_size(76, 50) - phone_nine.set_src("U:/static/IMAGE_NUMBER_KEY9_ICON.png") - phone_nine.add_flag(lv.obj.FLAG.CLICKABLE) - phone_nine.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_nine.set_pos(161, 164) - - phone_start = lv.img(phone_screen) - phone_start.set_size(76, 50) - phone_start.set_src("U:/static/IMAGE_NUMBER_KEYSTAR_ICON.png") - phone_start.add_flag(lv.obj.FLAG.CLICKABLE) - phone_start.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_start.set_pos(3, 216) - - phone_zero = lv.img(phone_screen) - phone_zero.set_size(76, 50) - phone_zero.set_src("U:/static/IMAGE_NUMBER_KEY0_ICON.png") - phone_zero.add_flag(lv.obj.FLAG.CLICKABLE) - phone_zero.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_zero.set_pos(82, 216) - - phone_hash = lv.img(phone_screen) - phone_hash.set_size(76, 50) - phone_hash.set_src("U:/static/IMAGE_NUMBER_KEYHASH_ICON.png") - phone_hash.add_flag(lv.obj.FLAG.CLICKABLE) - phone_hash.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_hash.set_pos(161, 216) - - phone_call = lv.img(phone_screen) - phone_call.set_size(76, 50) - phone_call.set_src("U:/static/IMAGE_BUTTON_DIAL.png") - phone_call.add_flag(lv.obj.FLAG.CLICKABLE) - phone_call.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_call.set_pos(3, 270) - - phone_call_btn = lv.img(phone_screen) - phone_call_btn.set_size(76, 52) - phone_call_btn.add_flag(lv.obj.FLAG.CLICKABLE) - phone_call_btn.set_pos(3, 268) - - phone_contact = lv.img(phone_screen) - phone_contact.set_size(64, 50) - phone_contact.set_src("U:/static/IMAGE_BUTTON_DIAL_CONTACT.png") - phone_contact.add_flag(lv.obj.FLAG.CLICKABLE) - phone_contact.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_contact.set_pos(87, 270) - - phone_contact_btn = lv.img(phone_screen) - phone_contact_btn.set_size(76, 52) - phone_contact_btn.add_flag(lv.obj.FLAG.CLICKABLE) - phone_contact_btn.set_pos(87, 268) - - phone_delete = lv.img(phone_screen) - phone_delete.set_size(76, 50) - phone_delete.set_src("U:/static/IMAGE_BUTTON_DELKEY.png") - phone_delete.add_flag(lv.obj.FLAG.CLICKABLE) - phone_delete.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - phone_delete.set_pos(161, 270) - - phone_delete_btn = lv.img(phone_screen) - phone_delete_btn.set_size(76, 52) - phone_delete_btn.add_flag(lv.obj.FLAG.CLICKABLE) - phone_delete_btn.set_pos(161, 268) - - self.meta = phone_screen - - phone_one.add_event_cb(lambda e: EventMesh.callback_wrapper(self.one(e)), - lv.EVENT.CLICKED, None) - phone_two.add_event_cb(lambda e: EventMesh.callback_wrapper(self.two(e)), - lv.EVENT.CLICKED, None) - phone_three.add_event_cb(lambda e: EventMesh.callback_wrapper(self.three(e)), - lv.EVENT.CLICKED, None) - phone_four.add_event_cb(lambda e: EventMesh.callback_wrapper(self.four(e)), - lv.EVENT.CLICKED, None) - phone_five.add_event_cb(lambda e: EventMesh.callback_wrapper(self.five(e)), - lv.EVENT.CLICKED, None) - phone_six.add_event_cb(lambda e: EventMesh.callback_wrapper(self.six(e)), - lv.EVENT.CLICKED, None) - phone_seven.add_event_cb(lambda e: EventMesh.callback_wrapper(self.seven(e)), - lv.EVENT.CLICKED, None) - phone_eight.add_event_cb(lambda e: EventMesh.callback_wrapper(self.eight(e)), - lv.EVENT.CLICKED, None) - phone_nine.add_event_cb(lambda e: EventMesh.callback_wrapper(self.nine(e)), - lv.EVENT.CLICKED, None) - phone_zero.add_event_cb(lambda e: EventMesh.callback_wrapper(self.zero(e)), - lv.EVENT.CLICKED, None) - - phone_call_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.call(e)), - lv.EVENT.CLICKED, None) - phone_contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.contact(e)), - lv.EVENT.CLICKED, None) - phone_delete_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.delete(e)), - lv.EVENT.CLICKED, None) - - phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)), - lv.EVENT.CLICKED, None)#短按显示* - - phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.pressed_start(e)), - lv.EVENT.LONG_PRESSED, None)#长按显示+ - - phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.endpressed_start(e)), - lv.EVENT.RELEASED, None)#释放按键 - - - phone_hash.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hash(e)), - lv.EVENT.CLICKED, None) - - - self.phone_num='' - self.phone_list = [] - self.count = 0 - if phone_label != None: - phone_label.set_pos(0, 14) - phone_label.set_size(0, 0) - phone_label.set_text(" ") - #phone_label.set_text(" ") - # print("self.phone_list :{} self.phone_num:{}".format(self.phone_list,self.phone_num)) - if self.timer_cb == 0: - self.timer_cb = 1 - self.timer.start(1000,1,self.refresh_line) - - - def refresh_line(self,e): - if self.count > 2 : - self.count = 1 - if self.count%2 == 0: - phone_line.clear_flag(lv.obj.FLAG.HIDDEN) - else: - phone_line.add_flag(lv.obj.FLAG.HIDDEN) - self.count+=1 - def one(self,e): - if len(self.phone_list) >= PHONE_CALL_MAX_DATA: - #self.phone_list.pop(0) - return - self.phone_list.append("1") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def two(self,e): - if len(self.phone_list) >= PHONE_CALL_MAX_DATA: - #self.phone_list.pop(0) - return - self.phone_list.append("2") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def three(self,e): - if len(self.phone_list) >= PHONE_CALL_MAX_DATA: - #self.phone_list.pop(0) - return - self.phone_list.append("3") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def four(self,e): - if len(self.phone_list) >= PHONE_CALL_MAX_DATA: - #self.phone_list.pop(0) - return - self.phone_list.append("4") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def five(self,e): - if len(self.phone_list) >= PHONE_CALL_MAX_DATA: - #self.phone_list.pop(0) - return - self.phone_list.append("5") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def six(self,e): - if len(self.phone_list) >= PHONE_CALL_MAX_DATA: - #self.phone_list.pop(0) - return - self.phone_list.append("6") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def seven(self,e): - if len(self.phone_list) >= PHONE_CALL_MAX_DATA: - #self.phone_list.pop(0) - return - self.phone_list.append("7") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def eight(self,e): - if len(self.phone_list) >= PHONE_CALL_MAX_DATA: - #self.phone_list.pop(0) - return - self.phone_list.append("8") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def nine(self,e): - if len(self.phone_list) >= PHONE_CALL_MAX_DATA: - #self.phone_list.pop(0) - return - self.phone_list.append("9") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def zero(self,e): - if len(self.phone_list) >= PHONE_CALL_MAX_DATA:#限制拨号数量20个数字 - #self.phone_list.pop(0) - return - self.phone_list.append("0") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def start(self,e): - self.button = 0 - - def pressed_start(self,e): - self.button = 1 - def Close(self): - self.timer_cb = 0 - self.timer.stop() - - def endpressed_start(self,e): - if len(self.phone_list) >= PHONE_CALL_MAX_DATA:#限制拨号数量20个数字 - #self.phone_list.pop(0) - return - - if self.button == 1:#长按 - self.phone_list.append("+") - else:#短按 - self.phone_list.append("*") - - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def hash(self,e): - if len(self.phone_list) >= PHONE_CALL_MAX_DATA:#限制拨号数量20个数字 - #self.phone_list.pop(0) - return - self.phone_list.append("#") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - - def delete(self,e): - if len(self.phone_list) != 0: - self.phone_list.pop() - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def contact(self,e): - EventMesh.publish("load_screen", {"screen": "contacts"}) - - def call(self,e): - if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1: - self.name = None - self.phonebook = {} - self.number_tmp = {} - if len(self.phone_list) != 0: - data = EventMesh.publish("get_phonebook_list") - if data != None: - check = data[0] - self.phonebook = data[1] - # print("check :{}".format(check)) - if check == 1:#检查通讯录 - phonebook_keys = sorted(self.phonebook.keys()) - b = str(self.phone_num) in self.phonebook.values()#查找key中是否包含content电话号码 True 包含在里面 False不包含在里面 - j = 0 - if b == True: - for i in range(len(self.phonebook)): #字典 key value - #'001:张三':15521469561 - name = self.phonebook[phonebook_keys[j]] - name_value = phonebook_keys[j] - number_tmp = str(self.phone_num) - # print("name :{} number_tmp:{}".format(name,number_tmp)) - if name.find(number_tmp) != -1:#查找电话号码是否在通讯录里面 - number_f= name_value - name_s = number_f.split(':') - name_s = name_s[1] - self.name = name_s - break - j+=1 - else: - self.name = self.phone_num - else: - self.name = self.phone_num - - EventMesh.publish("save_phonenum",self.phone_num) - EventMesh.publish("save_phonename",self.name)# - EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"}) - else: - EventMesh.publish("load_screen", {"screen": "no_valied_num_screen"}) - else:#未插卡 - EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"}) - - - def show_num(self): - #print("self.phone_num ",self.phone_num,self.phone_list) - len_t = len(self.phone_list)*40 - if len_t > 230: - len_t = 230 - phone_label.set_size(len_t,48) - phone_label.set_pos(230-len_t,14) - phone_label.set_text(self.phone_num) - - def lcd_on(self): - if self.timer_cb != 0: - self.timer_cb = 0 - self.timer.start(1000,1,self.refresh_line) - - def lcd_off(self): - self.timer_cb = 1 - self.timer.stop() - - - def done_return(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn8_press(self): - EventMesh.publish("watch_top_show") - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - -call_log_screen = None -contacts_cont_list = None -call_log_title = None -none_call_log_title = None -call_log_cont_list_screen = None -CALLLOG_FLAG = 0 -class CallLogScreen(Screen): - NAME = "call_log" - - def __init__(self): - super().__init__() - self.CALL_LOG_MAX = CALL_LOG_MAX - self.meta = None - self.log_list = [] - self.read_call_log = {} - self.check_json = 0 - self.call_log_detail_list = None - self.call_log_detail_list_dict = [] - self.timer = osTimer() - EventMesh.subscribe("call_log_update_show_list", self.call_log_update_show_list) - - def post_processor_before_initialization(self): - read_call_log = EventMesh.publish("get_call_log_list") - if read_call_log != None: - self.check_json = read_call_log[0] - self.read_call_log = read_call_log[1] - - - - def call_log_update_show_list(self, event, msg): - read_call_log = EventMesh.publish("get_call_log_list") - if read_call_log != None: - # print("read_call_log:{}".format(read_call_log)) - self.check_json = read_call_log[0] #文件是否存在 - self.read_call_log = read_call_log[1]#通话记录数据 - self.timer.start(500,0,self.reciving) - - def reciving(self,e): - self.btn_create() - - def initialization(self): - global call_log_screen,contacts_cont_list ,call_log_title ,none_call_log_title ,call_log_cont_list_screen - if call_log_screen == None: - call_log_screen = lv.obj() - print("call_log_screen") - call_log_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - call_log_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - call_log_cont_list_screen = lv.obj(call_log_screen) - call_log_cont_list_screen.set_pos(0, 50) - call_log_cont_list_screen.set_size(240, 270) - call_log_cont_list_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - call_log_cont_list_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - - call_log_title = lv.label(call_log_screen) - call_log_title.set_pos(0, 10) - call_log_title.set_size(240, 40) - call_log_title.set_long_mode(lv.label.LONG.WRAP) - call_log_title.set_text("通话记录") - call_log_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - call_log_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - none_call_log_title = lv.label(call_log_cont_list_screen) - none_call_log_title.set_pos(0, 120) - none_call_log_title.set_size(240, 40) - none_call_log_title.set_long_mode(lv.label.LONG.WRAP) - none_call_log_title.set_text(" ") - none_call_log_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - none_call_log_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - #self.call_log_detail_list = lv.obj(call_log_screen) - self.call_log_detail_list = lv.obj(call_log_cont_list_screen) - self.call_log_detail_list.set_pos(0, 0) - self.call_log_detail_list.set_size(240, 271) - self.call_log_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - self.call_log_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - for i in range(self.CALL_LOG_MAX): - _btn = lv.btn(self.call_log_detail_list) - _btn.add_flag(lv.obj.FLAG.CLICKABLE) - _btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling(e)), - lv.EVENT.CLICKED, None) - _btn.add_flag(lv.obj.FLAG.HIDDEN) - _btn_label2 = lv.label(_btn) - _btn_label3 = lv.label(_btn) - _btn_label4 = lv.label(_btn) - _btn_label5 = lv.label(_btn) - _btn_label6 = lv.label(_btn) - self.call_log_detail_list_dict.append({"_btn":_btn,"_btn_label2":_btn_label2,"_btn_label3":_btn_label3, - "_btn_label4":_btn_label4,"_btn_label5":_btn_label5,"_btn_label6":_btn_label6}) - self.meta = call_log_screen - - - read_call_log = EventMesh.publish("get_call_log_list") - # print("read_call_log:{}".format(read_call_log)) - if read_call_log != None: - self.check_json = read_call_log[0] #文件是否存在 - self.read_call_log = read_call_log[1]#通话记录数据 - if self.check_json == True and self.read_call_log != {}: - none_call_log_title.set_text(" ") - else: - none_call_log_title.set_text("暂无记录") - self.btn_create() - - def btn_create(self): - EventMesh.publish("publish_message_event_ui",{"func":self.btn_create_screen,"data":0}) - - def btn_create_screen(self,data): - global call_log_screen,contacts_cont_list ,call_log_title ,none_call_log_title ,call_log_cont_list_screen - h = 0 - if call_log_screen != None: - if self.check_json == True and len(self.read_call_log) != 0: - - none_call_log_title.set_text(" ") - - # self.call_log_detail_list.delete()#先删除一次控件 - # self.call_log_detail_list = lv.obj(call_log_cont_list_screen) - # self.call_log_detail_list.set_pos(0, 0) - # self.call_log_detail_list.set_size(240, 271) - # self.call_log_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - # self.call_log_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - sort_tmp = self.read_call_log.values() - sort_new = sorted(sort_tmp, key = lambda i: i['timesec'],reverse = True)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条 - # print("self.call_log :{} \r\n sort_new:{}\r\n".format(self.read_call_log,sort_new)) - - for sort_new_tmp in sort_new: #字典 key value - num_count = sort_new_tmp["count"]#获取通话次数 - num_name = sort_new_tmp["name"]#获取名称 - num_phonnum = sort_new_tmp["number"]#获取电话号码 - num_time = sort_new_tmp["time"]#获取电话号码 - - # print("num_count :{} num_name:{} num_time:{}".format(num_count,num_name,num_time)) - #_btn = lv.btn(self.call_log_detail_list) - self.call_log_detail_list_dict[h]["_btn"].set_size(240,80) - self.call_log_detail_list_dict[h]["_btn"].set_pos(0,82*h) - self.call_log_detail_list_dict[h]["_btn"].add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT) - self.call_log_detail_list_dict[h]["_btn"].add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling(e)), - lv.EVENT.CLICKED, None) - - - #_btn_label2 = lv.label(_btn) - self.call_log_detail_list_dict[h]["_btn_label2"].set_pos(0, 5) - self.call_log_detail_list_dict[h]["_btn_label2"].set_size(0, 25) - self.call_log_detail_list_dict[h]["_btn_label2"].set_text(num_phonnum) - #_btn_label2.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - # - #_btn_label3 = lv.label(_btn) - self.call_log_detail_list_dict[h]["_btn_label3"].set_pos(0, 0) - self.call_log_detail_list_dict[h]["_btn_label3"].set_size(0, 0) - self.call_log_detail_list_dict[h]["_btn_label3"].set_text("(" + str(num_count) + ")") - # _btn_label3.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - - #_btn_label4 = lv.label(_btn) - self.call_log_detail_list_dict[h]["_btn_label4"].set_pos(0, 38) - self.call_log_detail_list_dict[h]["_btn_label4"].set_size(230, 30) - self.call_log_detail_list_dict[h]["_btn_label4"].set_text(num_phonnum) - self.call_log_detail_list_dict[h]["_btn_label4"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - - #_btn_label5 = lv.label(_btn) - self.call_log_detail_list_dict[h]["_btn_label5"].set_pos(0, 5) - self.call_log_detail_list_dict[h]["_btn_label5"].set_size(0, 0) - self.call_log_detail_list_dict[h]["_btn_label5"].set_text(num_name) - # _btn_label5.set_long_mode(lv.obj.LONG.DOT) - # _btn_label5.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - - #_btn_label6 = lv.label(_btn) - self.call_log_detail_list_dict[h]["_btn_label6"].set_pos(0, 5) - self.call_log_detail_list_dict[h]["_btn_label6"].set_size(230, 28) - self.call_log_detail_list_dict[h]["_btn_label6"].set_text(num_name) - self.call_log_detail_list_dict[h]["_btn_label6"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - - self.call_log_detail_list_dict[h]["_btn"].clear_flag(lv.obj.FLAG.HIDDEN) - #self.call_log_detail_list_dict[h]["_btn"].scroll_to_view(lv.ANIM.OFF) - h = h + 1 - for i in range(self.CALL_LOG_MAX): - if i >= h : - self.call_log_detail_list_dict[i]["_btn"].add_flag(lv.obj.FLAG.HIDDEN)#隐藏多余 - else: - if call_log_cont_list_screen != None: - none_call_log_title.set_text("暂无记录") - self.call_log_detail_list.add_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本 - - def calling(self,e): - code = e.get_code() - if code == lv.EVENT.CLICKED: - global call_log_screen,contacts_cont_list ,call_log_title ,none_call_log_title - # print("e.get_text():{} {}".format(e.get_target().get_child(0).get_text(),e.get_target().get_child(3).get_text())) - phonnum = str(e.get_target().get_child(0).get_text()) - phnoname = e.get_target().get_child(3).get_text() - # print("phonnum :{} _msg:{}".format(phonnum,phnoname)) - - - self.name = None - self.phonebook = {} - - self.call_log = {} - self.call_log_value = {} - self.read_call_log = {} - self.number_tmp = {} - - data = EventMesh.publish("get_phonebook_list") - if data != None: - check = data[0] - self.phonebook = data[1] - # print("check :{}".format(check)) - if check == 1:#检查通讯录 - phonebook_keys = sorted(self.phonebook.keys()) - b = str(phonnum) in self.phonebook.values()#查找key中是否包含content电话号码 True 包含在里面 False不包含在里面 - j = 0 - if b == True: - for i in range(len(self.phonebook)): #字典 key value - #'001:':15521469561 - name = self.phonebook[phonebook_keys[j]] - name_value = phonebook_keys[j] - number_tmp = str(phonnum) - # print("name :{} number_tmp:{}".format(name,number_tmp)) - if name.find(number_tmp) != -1:#查找电话号码是否在通讯录里面 - number_f= name_value - name_s = number_f.split(':') - name_s = name_s[1] - self.name = name_s - break - j+=1 - else: - self.name = phnoname - else: - self.name = phnoname - - if self.name == None: - self.name = phnoname - if len(phonnum) > 0: - EventMesh.publish("save_phonename",self.name)# - EventMesh.publish("save_phonenum",phonnum)#保存电话号码用于界面显示获取 - #voiceCall.callStart(str(phonnum)) - EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"}) - else: - EventMesh.publish("load_screen", {"screen": "no_valied_num_screen"})#无效的号码 请重新输入 - - - def done_return(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn8_press(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - -# ------------------------------拨打电话-------------dialing screen---------------------------------------------------------- - -dialing_screen = None -dialing_img = None -dialing_name = None -dialing_call_label = None -hangup_imgbtn = None -class DialingScreen(Screen): - NAME = "dialing" - - def __init__(self): - super().__init__() - self.meta = None - - self.call_log = {} - self.call_log_value = {} - self.read_call_log = {} - self.number_tmp = {} - self.CALL_LOG_MAX = CALL_LOG_MAX - def initialization(self): - EventMesh.publish("set_UI_high_priority", 1) - global dialing_screen,dialing_img,dialing_name ,hangup_imgbtn - if dialing_screen == None: - dialing_screen = lv.obj() - print("dialing_screen") - dialing_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - dialing_img = lv.img(dialing_screen) - dialing_img.set_pos(80, 20) - dialing_img.set_size(64, 64) - dialing_img.set_src("U:/static/IMAGE_NOTICE_CALL.png") - dialing_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - dialing_name = lv.label(dialing_screen) - dialing_name.set_pos(0, 120) - dialing_name.set_size(240, 50) - dialing_name.set_text(" ") - dialing_name.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - dialing_name.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - dialing_call_label = lv.label(dialing_screen) - dialing_call_label.set_pos(0, 174) - dialing_call_label.set_size(240, 50) - dialing_call_label.set_text("正在等待对方接\n听电话") - dialing_call_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - dialing_call_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - hangup_imgbtn = lv.img(dialing_screen) - hangup_imgbtn.set_size(64, 64) - hangup_imgbtn.set_src("U:/static/hang_up.png") - hangup_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE) - hangup_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - hangup_imgbtn.set_pos(80, 250) - hangup_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)), - lv.EVENT.CLICKED, None) - self.meta = dialing_screen - if dialing_name != None: - name = EventMesh.publish("get_phonename")#获取拨打电话名称 - dialing_name.set_text(name)#名称 - def post_processor_after_initialization(self): - # print("创建通话记录 post_processor_before_initialization\n") - utime.sleep_ms(200)#不加延时会切屏 - #获取字符串 - name = EventMesh.publish("get_phonename")#获取拨打电话名称 - content = EventMesh.publish("get_phonenum")#获取电话号码 - time = EventMesh.publish("screen_get_time")#获取系统时间 - - # ["15692025051","2","12:59","哥gdh符合双方和开发商开发好看的思考"], - # 格式:{"电话号码":{"timesec":'时间戳',"number":'电话号码',"name":'名字',"time":'时间',"count":'通话次数'}} - # dialing_content.set_text(content)#电话号码 - num = 0 - - date_tmp = utime.localtime() - time_tmp = utime.mktime(date_tmp) - # print("time_tmp:{}".format(time_tmp)) - read_call_log = EventMesh.publish("get_call_log_list") - check_json = read_call_log[0] - - if check_json == True: - self.read_call_log = read_call_log[1] - b = content in self.read_call_log.keys()#查找key中是否包含content电话号码 True 包含在里面 False不包含在里面 - if b == True:#查找是否有相同的电话号码 有就直接读出来的次数上加一 没有则从1开始加起 - number_tmp = {} - number_tmp = self.read_call_log[content] #通话次数加一 - num_tmp_t = number_tmp["count"] - # print("number_tmp:{} self.read_call_log.value:{}".format(number_tmp,self.read_call_log.values())) - else : - num_tmp_t = 0 - num = num_tmp_t - else: - num = 0 #通话次数 - - sort_tmp = {} - sort_tmp = self.read_call_log.values() - sort_new = {} - sort_new = sorted(sort_tmp, key = lambda i: i['timesec'],reverse = True)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条 - - i = 0 - # 49 50 - if len(self.read_call_log) >= self.CALL_LOG_MAX: - for sort_new_tmp in sort_new: #字典 key value - i+=1 # 1 - if i >= self.CALL_LOG_MAX:#大于50条把最后一条删除掉只保留前面50调最新的数据 - key_tmp = sort_new_tmp["number"] - del self.read_call_log[key_tmp] - tmp = {} - tmp["count"]= num+1 #通话次数 - tmp["time"]= "{}:{}".format("%02d"%(time[0][0]),"%02d"%(time[0][1]))#通湖时间 - tmp["name"]= name #名称 - tmp["timesec"]= time_tmp #时间戳 - tmp["number"] = content - - self.read_call_log[content] = tmp - with open("/usr/static/storage_file/Call_log.json","w",encoding="utf-8") as fd: - ujson.dump(self.read_call_log,fd) - print("创建通话记录") - EventMesh.publish("set_call_log_list", [1,self.read_call_log]) - EventMesh.publish("call_log_update_show_list") - - def hangup(self,e): - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("set_hangup_mode", 1) - voiceCall.callEnd() - - def done_return(self): - pass - #EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn1_release(self): - pass - #EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn8_press(self): - flag = EventMesh.publish("get_lcd_state") - if flag == 1: - EventMesh.publish(constants.EVENT.SYSTEM_SLEEP) - else: - EventMesh.publish(constants.EVENT.SYSTEM_UP) - - - -no_sim_popup_screen = None -no_sim_popup_screen_title1 = None -no_sim_popup_screen_title2 = None -#未插卡 -class NoSimScreen(Screen):# - NAME = "no_sim_popup_screen" - def __init__(self): - super().__init__() - self.meta = None - self.meta_type = "popup" - - def initialization(self): - global no_sim_popup_screen,no_sim_popup_screen_title1,no_sim_popup_screen_title2 - if no_sim_popup_screen == None : - no_sim_popup_screen = lv.obj() - print("no_sim_popup_screen") - no_sim_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_sim_popup_screen_title1 = lv.label(no_sim_popup_screen) - no_sim_popup_screen_title1.set_pos(0, 140) - no_sim_popup_screen_title1.set_size(240, 40) - no_sim_popup_screen_title1.set_text("无SIM卡或") - no_sim_popup_screen_title1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - no_sim_popup_screen_title1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_sim_popup_screen_title2 = lv.label(no_sim_popup_screen) - no_sim_popup_screen_title2.set_pos(0, 190) - no_sim_popup_screen_title2.set_size(240, 40) - no_sim_popup_screen_title2.set_text("无网络") - no_sim_popup_screen_title2.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - no_sim_popup_screen_title2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - self.meta = no_sim_popup_screen - - 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("return_prev_screen") - - def btn1_release(self): - EventMesh.publish("return_prev_screen") - - def btn8_press(self): - EventMesh.publish("return_prev_screen") - - -no_valied_num_screen = None -no_valied_num_screen_title1 = None -no_valied_num_screen_title2 = None -#=无效的号码 请重新输入 -class NovaliedNumScreen(Screen):# - NAME = "no_valied_num_screen" - def __init__(self): - super().__init__() - self.meta = None - self.meta_type = "popup" - self.timer_count = 0 - self.timer=osTimer() - - def initialization(self): - global no_valied_num_screen,no_valied_num_screen_title1,no_valied_num_screen_title2 - if no_valied_num_screen == None : - no_valied_num_screen = lv.obj() - print("no_valied_num_screen") - no_valied_num_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_valied_num_screen_title1 = lv.label(no_valied_num_screen) - no_valied_num_screen_title1.set_pos(0, 140) - no_valied_num_screen_title1.set_size(240, 40) - no_valied_num_screen_title1.set_text("无效的号码,") - no_valied_num_screen_title1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - no_valied_num_screen_title1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - - no_valied_num_screen_title2 = lv.label(no_valied_num_screen) - no_valied_num_screen_title2.set_pos(0, 190) - no_valied_num_screen_title2.set_size(240, 40) - no_valied_num_screen_title2.set_text("请重新输入") - no_valied_num_screen_title2.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - no_valied_num_screen_title2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - self.meta = no_valied_num_screen - def post_processor_after_initialization(self): - self.timer_count = 0 - self.timer.start(5000,1,self.timeout_exit) - - def timeout_exit(self,e): - self.timer_count+=1 - if self.timer_count >= 2: - self.timer_count = 0 - EventMesh.publish("return_prev_screen") - - 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("return_prev_screen") - - def btn1_release(self): - EventMesh.publish("return_prev_screen") - - def btn8_press(self): - EventMesh.publish("return_prev_screen") - - - -no_sim_power_screen = None -no_sim_power_screen_title = None -no_sim_power_screen_label =None -no_sim_power_screen_comfirm =None -no_sim_power_screen_cancel = None -no_sim_power_screen_img = None - -#未插卡,长按关机 -class NoSimPowerScreen(Screen):# - NAME = "no_sim_power_screen" - def __init__(self): - super().__init__() - self.meta = None - self.meta_type = "popup" - - def initialization(self): - global no_sim_power_screen,no_sim_power_screen_img,no_sim_power_screen_title,no_sim_power_screen_comfirm,no_sim_power_screen_cancel,no_sim_power_screen_label - if no_sim_power_screen == None : - no_sim_power_screen = lv.obj() - print("no_sim_power_screen") - no_sim_power_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_sim_power_screen_title = lv.label(no_sim_power_screen) - no_sim_power_screen_title.set_pos(0, 20) - no_sim_power_screen_title.set_size(240, 40) - no_sim_power_screen_title.set_text("无SIM卡,无法拨打") - no_sim_power_screen_title.set_long_mode(lv.label.LONG.WRAP) - no_sim_power_screen_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - no_sim_power_screen_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_sim_power_screen_img = lv.img(no_sim_power_screen) - no_sim_power_screen_img.set_pos(100, 70) - no_sim_power_screen_img.set_size(61, 61) - no_sim_power_screen_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - no_sim_power_screen_img.set_src("U:/static/poweroff_icon.png") - - - no_sim_power_screen_label = lv.label(no_sim_power_screen) - no_sim_power_screen_label.set_pos(0, 150) - no_sim_power_screen_label.set_size(240, 40) - no_sim_power_screen_label.set_text("是否关机?") - no_sim_power_screen_label.set_long_mode(lv.label.LONG.WRAP) - no_sim_power_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - no_sim_power_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - - no_sim_power_screen_comfirm = lv.img(no_sim_power_screen) - no_sim_power_screen_comfirm.set_size(176, 46) - no_sim_power_screen_comfirm.set_pos(32, 190) - no_sim_power_screen_comfirm.set_src("U:/static/off_icon.png") - no_sim_power_screen_comfirm.add_flag(lv.obj.FLAG.CLICKABLE) - no_sim_power_screen_comfirm.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - poweroff_confirm_label = lv.label(no_sim_power_screen_comfirm) - poweroff_confirm_label.set_text("确定") - poweroff_confirm_label.align(lv.ALIGN.CENTER, 0, 5) - poweroff_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - 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, 250) - no_sim_power_screen_cancel.set_src("U:/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) - poweroff_return_label = lv.label(no_sim_power_screen_cancel) - poweroff_return_label.set_text("取消") - poweroff_return_label.align(lv.ALIGN.CENTER, 0, 5) - poweroff_return_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - no_sim_power_screen_cancel.set_ext_click_area(20) - - self.meta = no_sim_power_screen - no_sim_power_screen_comfirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)), - lv.EVENT.CLICKED, None) - - no_sim_power_screen_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.cancel(e)), - lv.EVENT.CLICKED, None) - - def confirm(self,e): - EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"}) - - def cancel(self,e): - EventMesh.publish("return_prev_screen") - - 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): - pass - #EventMesh.publish("return_prev_screen") - - def btn1_release(self): - #EventMesh.publish("return_prev_screen") - pass - - def btn8_press(self): - EventMesh.publish("return_prev_screen") - -dialing_popup_screen = None -dialing_popup_img = None -dialing_popup_name = None -dialing_popup_hangup_imgbtn = None -class DialingNoPlayPopupScreen(Screen):#正在拨号中...未打出 - NAME = "dialing_noplay_popup" - - def __init__(self): - super().__init__() - self.meta = None - self.meta_type = "popup" - self.timer1 = osTimer() - self.time_count = 0 - self.timer2 = osTimer() - - def initialization(self): - EventMesh.publish("set_UI_high_priority", 1) - global dialing_popup_screen,dialing_popup_img,dialing_popup_name ,dialing_popup_call,dialing_popup_hangup_imgbtn - if dialing_popup_screen == None: - dialing_popup_screen = lv.obj() - print("dialing_popup_screen") - dialing_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - dialing_popup_img = lv.img(dialing_popup_screen) - dialing_popup_img.set_pos(80, 20) - dialing_popup_img.set_size(64, 64) - dialing_popup_img.set_src("U:/static/IMAGE_NOTICE_CALL.png") - dialing_popup_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - dialing_popup_name = lv.label(dialing_popup_screen) - dialing_popup_name.set_pos(0, 120) - dialing_popup_name.set_size(240, 50) - dialing_popup_name.set_text(" ") - dialing_popup_name.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - dialing_popup_name.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - dialing_popup_call = lv.label(dialing_popup_screen) - dialing_popup_call.set_pos(0, 180) - dialing_popup_call.set_size(240, 50) - dialing_popup_call.set_text("正在拨号中") - dialing_popup_call.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - dialing_popup_call.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - dialing_popup_hangup_imgbtn = lv.img(dialing_popup_screen) - dialing_popup_hangup_imgbtn.set_size(64, 64) - dialing_popup_hangup_imgbtn.set_src("U:/static/hang_up.png") - dialing_popup_hangup_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE) - dialing_popup_hangup_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - dialing_popup_hangup_imgbtn.set_pos(80, 250) - dialing_popup_hangup_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)), - lv.EVENT.CLICKED, None) - self.meta = dialing_popup_screen - if dialing_popup_name != None: - name = EventMesh.publish("get_phonename")#获取拨打电话名称 - dialing_popup_name.set_text(name)#名称 - - def post_processor_after_initialization(self): - self.time_count = 0 - self.timer1.start(1000, 1, self.timeout_hangup) - self.timer2.start(2000, 0, self.timeout_call) - - def timeout_call(self,e): - phone_num = EventMesh.publish("get_phonenum") - EventMesh.publish("set_call_state", 1)# - voiceCall.callStart(phone_num) - - def timeout_hangup(self,e): - EventMesh.publish("system_sleep_rest")#防止黑屏 - self.time_count+=1 - if self.time_count >= 5:#5s内没有打通则不在继续拨打关闭 - self.time_count = 0 - EventMesh.publish("set_UI_high_priority", 0) - sos_flag = EventMesh.publish("get_sos_flag") - if sos_flag == 1: - EventMesh.publish("set_sos_flag",0) - EventMesh.publish("set_sos_num",0) - EventMesh.publish("set_hangup_mode",0) - - EventMesh.publish("load_screen", {"screen": "dial_no_connect_popup"}) - - def hangup(self,e): - EventMesh.publish("set_UI_high_priority", 0) - voiceCall.callEnd() - sos_flag = EventMesh.publish("get_sos_flag") - if sos_flag == 1: - EventMesh.publish("set_sos_flag",0) - EventMesh.publish("set_sos_num",0) - EventMesh.publish("set_hangup_mode",0) - EventMesh.publish("return_prev_screen") #返回上一级 - - def Close(self): - self.timer1.stop() - self.timer2.stop() - - def done_return(self): - pass - #EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn1_release(self): - pass - #EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn8_press(self): - flag = EventMesh.publish("get_lcd_state") - if flag == 1: - EventMesh.publish(constants.EVENT.SYSTEM_SLEEP) - else: - EventMesh.publish(constants.EVENT.SYSTEM_UP) - -dial_no_connect_popup = None -dialing_connect_call = None -class DialNoconnectPopupScreen(Screen):#你所拨打的电话暂时无法接通 - NAME = "dial_no_connect_popup" - - def __init__(self): - super().__init__() - self.meta = None - self.meta_type = "popup" - self.timer = osTimer() - self.time_count = 0 - - def initialization(self): - global dial_no_connect_popup,dialing_connect_call - if dial_no_connect_popup == None: - dial_no_connect_popup = lv.obj() - print("dial_no_connect_popup") - dial_no_connect_popup.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - dialing_connect_call = lv.label(dial_no_connect_popup) - dialing_connect_call.set_pos(0, 110) - dialing_connect_call.set_size(240, 150) - dialing_connect_call.set_text("你好,你所拨打的\n电话暂时无法接\n通,请稍后再拨") - dialing_connect_call.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - dialing_connect_call.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - self.meta = dial_no_connect_popup - - def post_processor_after_initialization(self): - self.time_count = 0 - self.timer.start(1000, 1, self.timeout_hangup) - - def timeout_hangup(self,e): - EventMesh.publish("system_sleep_rest")#防止黑屏 - self.time_count+=1 - if self.time_count >= 10: - self.time_count = 0 - EventMesh.publish("return_prev_screen") - - 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("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 -#信息弹窗 -class NewMessageScreen(Screen): - NAME = "message_popup" - def __init__(self): - super().__init__() - self.meta = None - self.meta_type = "popup" - - def initialization(self): - global message_popup_screen,message_popup_title - if message_popup_screen == None : - message_popup_screen = lv.obj() - print("message_popup_screen") - message_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - message_popup_title = lv.label(message_popup_screen) - message_popup_title.set_pos(0, 150) - message_popup_title.set_size(240, 40) - message_popup_title.set_text("你有新的消息") - 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 = message_popup_screen - EventMesh.publish("set_sms_clear_all_data",10) - - 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 -message_full_cancel = None -#信息弹窗 -class MessageFullScreen(Screen): - NAME = "message_full" - def __init__(self): - super().__init__() - self.meta = None - self.meta_type = "popup" - def initialization(self): - global message_full_screen,message_full_label,message_full_confirm,message_full_cancel - if message_full_screen == None : - message_full_screen = lv.obj() - print("message_full_screen") - message_full_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - message_full_label = lv.label(message_full_screen) - message_full_label.set_pos(0, 100) - message_full_label.set_size(240, 40) - message_full_label.set_text("信息已满,是否清除所有?") - message_full_label.set_long_mode(lv.label.LONG.WRAP) - message_full_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - message_full_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - message_full_confirm = lv.label(message_full_screen) - message_full_confirm.set_text("确认") - message_full_confirm.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - message_full_confirm.set_size(120, 60) - message_full_confirm.set_pos(0,180) - message_full_confirm.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - message_full_confirm.add_flag(lv.obj.FLAG.CLICKABLE) - message_full_confirm.set_ext_click_area(20) - - message_full_cancel = lv.label(message_full_screen) - message_full_cancel.set_text("取消") - message_full_cancel.set_size(120, 60) - message_full_cancel.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - message_full_cancel.set_pos(120,180) - message_full_cancel.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - message_full_cancel.add_flag(lv.obj.FLAG.CLICKABLE) - message_full_cancel.set_ext_click_area(20) - self.meta = message_full_screen - - 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 confirm(self, e): - # self.timer.start(2*1000,0,self.clear_data) - sms.deleteMsg(1,4) - EventMesh.publish("load_screen", {"screen": "popup"}) - - def concel(self, e): - EventMesh.publish("return_prev_screen") - - 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"}) -############短信############################### -MSG_FLAG = 0 -MSG_MAX = 5 #最大显示短信内容条数 -def msg_cb(args): - index = args[1] - storage = args[2] - print("index:{}".format(index)) - sms_data = sms.getSaveLoc() - sms_max = sms_data[0][2] - if index != -1: - tmp = sms.searchTextMsg(index) - detail = tmp[1]#内容 - print("msg_cb:detail {}".format,detail) - if detail.find("SETIP:") != -1:#寻找是否有这个字符串 - tmp_test = detail.split("SETIP:")[1] - if tmp_test.find(":") != -1: - new_ip = tmp_test.split(':')[0] - # print("tmp_test:{} new_ip:{}".format(tmp_test,new_ip)) - new_com = tmp_test.split(':')[1] - # new_md5 = detail.split(':')[3] - if len(new_ip) > 0 and len(new_com) > 0: - EventMesh.publish("set_new_ip", [new_ip,new_com,tmp[0]])#设置关机时间 - # EventMesh.publish("set_new_ip", [new_ip,new_com,new_md5])#设置关机时间 - - if index >= sms_max-1: - EventMesh.publish("load_screen", {"screen": "message_full"}) - else: - EventMesh.publish("load_screen", {"screen": "message_popup"}) - -sms.setCallback(msg_cb) -style_sms_bg_btn = lv.style_t() -style_sms_bg_btn.init() -style_sms_bg_btn.set_radius(5) -style_sms_bg_btn.set_bg_color(lv.color_make(0xff, 0xff, 0xff)) -style_sms_bg_btn.set_bg_grad_color(lv.color_make(0xff, 0xff, 0xff)) -style_sms_bg_btn.set_bg_opa(255) -style_sms_bg_btn.set_border_color(lv.color_make(0xff, 0xff, 0xff)) -style_sms_bg_btn.set_border_opa(255) - - -msg_list_screen = None -msg_top_title = None -msg_cont_detail = None -msg_list_t = None -msg_list_t_done_img = None -no_msg_text = None -msg_cont_list_screen = None - -class PopupScreen(Screen): - NAME = "popup" - - def __init__(self): - super().__init__() - # -------------------------------------------popup_menu screen---------------------------------------------------------- - self.meta = None - self.msg_detail = {} - self.msg_nums = 0 - self.sms_detail_list = None - self.sms_detail_list_dict = [] - - def post_processor_before_initialization(self): - self.msg_nums = sms.getMsgNums() #获取短信条数 - - def initialization(self): - global msg_list_screen,msg_top_title,msg_cont_detail,msg_list_t,msg_list_t_done_img,no_msg_text,msg_cont_list_screen - print("PopupScreen:initialization1") - if msg_list_screen == None : - msg_list_screen = lv.obj() - print("msg_list_screen") - msg_list_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - msg_list_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - - - msg_top_title = lv.label(msg_list_screen) - msg_top_title.set_pos(0, 10) - msg_top_title.set_size(240, 40) - msg_top_title.set_text("信息") - msg_top_title.set_long_mode(lv.label.LONG.WRAP) - msg_top_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - msg_top_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - - msg_cont_list_screen = lv.obj(msg_list_screen) - msg_cont_list_screen.set_pos(0, 50) - msg_cont_list_screen.set_size(240, 270) - msg_cont_list_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - msg_cont_list_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - - msg_list_t_done_img = lv.img(msg_cont_list_screen) - msg_list_t_done_img.set_pos(53, 20) - msg_list_t_done_img.set_size(134, 117) - msg_list_t_done_img.set_src("U:/static/IMAGE_NOTICE_NONE.png") - msg_list_t_done_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_msg_text = lv.label(msg_cont_list_screen) - no_msg_text.set_pos(0, 210) - no_msg_text.set_size(240, 40) - no_msg_text.set_text("暂无信息") - no_msg_text.set_long_mode(lv.label.LONG.WRAP) - no_msg_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - no_msg_text.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - self.sms_detail_list = lv.obj(msg_cont_list_screen) - self.sms_detail_list.set_pos(0, 0) - self.sms_detail_list.set_size(230, 271) - self.sms_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - self.sms_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - for i in range(MSG_MAX): - msg_btn = lv.btn(self.sms_detail_list) - msg_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.sms_cb(e)), - lv.EVENT.CLICKED, None) - msg_btn.add_flag(lv.obj.FLAG.HIDDEN) - _btn_label2 = lv.label(msg_btn) - _btn_label3 = lv.label(msg_btn) - _btn_label4 = lv.label(msg_btn) - _btn_label5 = lv.label(msg_btn) - self.sms_detail_list_dict.append({"msg_btn":msg_btn,"_btn_label2":_btn_label2,"_btn_label3":_btn_label3, - "_btn_label4":_btn_label4,"_btn_label5":_btn_label5}) - self.meta = msg_list_screen - - - self.msg_nums = sms.getMsgNums() - # print("self.msg_nums:{} type:{}".format(self.msg_nums,type(sms.getMsgNums()))) - self.btn_create(1) - print("PopupScreen:initialization2") - def sms_create_list(self,event,msg): - self.msg_nums = sms.getMsgNums() - self.btn_create(1) - - - def btn_create(self,msg): - EventMesh.publish("publish_message_event_ui",{"func":self.btn_create_screen,"data":msg}) - - def btn_create_screen(self,msg): - global msg_list_screen,msg_top_title,msg_cont_detail,msg_list_t,msg_list_t_done_img,no_msg_text,msg_cont_list_screen - count = 0 - j = 0 - print("self.msg_nums:{}".format(self.msg_nums)) - if self.msg_nums > 0 : - - msg_list_t_done_img.add_flag(lv.obj.FLAG.HIDDEN) - no_msg_text.add_flag(lv.obj.FLAG.HIDDEN) - self.sms_detail_list.clear_flag(lv.obj.FLAG.HIDDEN) - # self.sms_detail_list.delete()#先删除一次控件 - # self.sms_detail_list = lv.obj(msg_cont_list_screen) - # self.sms_detail_list.set_pos(0, 0) - # self.sms_detail_list.set_size(230, 271) - # self.sms_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - # self.sms_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - if self.msg_nums > MSG_MAX: - j = self.msg_nums-MSG_MAX - for i in range(MSG_MAX): - # if count > (MSG_MAX-1):#j = 12 -5 7 6 5 4 3 2 1 - # break - if i >= self.msg_nums : - self.sms_detail_list_dict[i]["msg_btn"].add_flag(lv.obj.FLAG.HIDDEN) - continue - tmp = sms.searchTextMsg(j) - if tmp != -1: - #msg_btn = lv.btn(self.sms_detail_list) - self.sms_detail_list_dict[i]["msg_btn"].set_size(230,65) - self.sms_detail_list_dict[i]["msg_btn"].set_pos(0,67*count) - self.sms_detail_list_dict[i]["msg_btn"].add_style(style_sms_bg_btn, lv.PART.MAIN | lv.STATE.DEFAULT) - # self.sms_detail_list_dict[i]["msg_btn"].add_event_cb(lambda e: EventMesh.callback_wrapper(self.sms_cb(e)), - # lv.EVENT.CLICKED, None) - - title = tmp[0] - # print("title:{}".format(title)) - #_btn_label2 = lv.label(msg_btn) - self.sms_detail_list_dict[i]["_btn_label2"].set_pos(0, 0) - self.sms_detail_list_dict[i]["_btn_label2"].set_size(0, 0) - self.sms_detail_list_dict[i]["_btn_label2"].set_text(title) - # _btn_label2.set_long_mode(lv.label.LONG.DOT) - # _btn_label2.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - # - detail = tmp[1] - #_btn_label3 = lv.label(msg_btn) - self.sms_detail_list_dict[i]["_btn_label3"].set_pos(0, 0) - self.sms_detail_list_dict[i]["_btn_label3"].set_size(0, 0) - self.sms_detail_list_dict[i]["_btn_label3"].set_text(detail) - # _btn_label3.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - - detail1 = tmp[1] - #_btn_label4 = lv.label(msg_btn) - self.sms_detail_list_dict[i]["_btn_label4"].set_pos(0, 34) - self.sms_detail_list_dict[i]["_btn_label4"].set_size(180, 28) - self.sms_detail_list_dict[i]["_btn_label4"].set_text(detail1) - self.sms_detail_list_dict[i]["_btn_label4"].set_long_mode(lv.label.LONG.DOT) - self.sms_detail_list_dict[i]["_btn_label4"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - - title1 = tmp[0] - #_btn_label5 = lv.label(msg_btn) - self.sms_detail_list_dict[i]["_btn_label5"].set_pos(0, 5) - self.sms_detail_list_dict[i]["_btn_label5"].set_size(180, 25) - self.sms_detail_list_dict[i]["_btn_label5"].set_text(title1) - self.sms_detail_list_dict[i]["_btn_label5"].set_long_mode(lv.label.LONG.DOT) - self.sms_detail_list_dict[i]["_btn_label5"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - - self.sms_detail_list_dict[i]["msg_btn"].clear_flag(lv.obj.FLAG.HIDDEN) - #if msg == 1: - self.sms_detail_list_dict[i]["msg_btn"].scroll_to_view(lv.ANIM.OFF) - - count = count + 1 - else : - self.sms_detail_list_dict[i]["msg_btn"].add_flag(lv.obj.FLAG.HIDDEN) - j = j + 1 - - - else: - if msg_cont_list_screen != None: - msg_list_t_done_img.clear_flag(lv.obj.FLAG.HIDDEN) - no_msg_text.clear_flag(lv.obj.FLAG.HIDDEN) - no_msg_text.set_text("暂无信息") - self.sms_detail_list.add_flag(lv.obj.FLAG.HIDDEN) - - - def sms_cb(self,e): - code = e.get_code() - if code == lv.EVENT.CLICKED: - print("tp test!!!!!!!!!!!!!!") - #上传标题和内容 - _name = e.get_target().get_child(0).get_text() - EventMesh.publish("save_msg_name", _name) - content = e.get_target().get_child(1).get_text() - EventMesh.publish("save_msg_content", content) - - #显示详细页面 - EventMesh.publish("load_screen", {"screen": "msg_detail"}) - - def done_return(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - def btn8_press(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - - -msg_detail_screen = None -msg_detail_title = None -msg_detail_cont = None -class MsgDetailScreen(Screen): - NAME = "msg_detail" - - def __init__(self): - super().__init__() - self.meta = None - - self.name = "" - self.contetn = "" - - - def initialization(self): - global msg_detail_screen,msg_detail_title,msg_detail_cont - if msg_detail_screen == None: - msg_detail_screen = lv.obj() - print("msg_detail_screen") - msg_detail_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - msg_detail_title = lv.label(msg_detail_screen) - msg_detail_title.set_pos(0, 10) - msg_detail_title.set_size(240, 40) - msg_detail_title.set_long_mode(lv.label.LONG.WRAP) - msg_detail_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - msg_detail_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - msg_detail_cont = lv.label(msg_detail_screen) - msg_detail_cont.set_pos(0, 50) - msg_detail_cont.set_size(240, 270) - msg_detail_cont.set_long_mode(lv.label.LONG.WRAP) - msg_detail_cont.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) - msg_detail_cont.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - self.meta = msg_detail_screen - #获取字符串 - self.name = EventMesh.publish("get_msg_name") - self.content = EventMesh.publish("get_msg_content") - msg_detail_title.set_text(self.name) - msg_detail_cont.set_text(self.content) - - def done_return(self): - EventMesh.publish("load_screen", {"screen": "popup"}) - - def hangup(self,e): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - def btn8_press(self): - EventMesh.publish("load_screen", {"screen": "popup"}) - - - -# -------------------------------------------heartrate screen---------------------------------------------------------- -heartrate_screen = None -heartrate_label = None -heartrate_done_img = None -heartrate_start_label = None -heartrate_bpm_label = None -heartrate_done_label = None -heartrate_line_bg_img = None -hr_line1 = None -hr_line2 = None -hr_line3 = None -hr_line4 = None -hr_line5 = None -hr_line6 = None -hr_line7 = None -heartrate_reset_btn_img = None - -style_line_red = lv.style_t() -style_line_red.init() -style_line_red.set_line_width(10) -style_line_red.set_line_color(lv.color_make(0xff, 0x00, 0x00)) - -hr_line_points = [{"x":0,"y":0},{"x":0,"y":0}] - -class HeartrateScreen(Screen): - NAME = "heartrate" - - - def __init__(self): - super().__init__() - self.meta = None - self.timer = osTimer() - self.point = 0 - self.heart_value = 0 - - def initialization(self): - global heartrate_screen,heartrate_label,heartrate_reset_btn_img,hr_line1,hr_line2,hr_line3,hr_line4,hr_line5,hr_line6,hr_line7,heartrate_line_bg_img,heartrate_done_img ,heartrate_start_label,heartrate_bpm_label ,heartrate_done_label - if heartrate_screen == None: - heartrate_screen = lv.obj() - print("heartrate_screen") - heartrate_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - heartrate_label = lv.label(heartrate_screen) - heartrate_label.set_pos(0, 20) - heartrate_label.set_size(240, 40) - heartrate_label.set_text("心率") - heartrate_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0) - heartrate_label.set_long_mode(lv.label.LONG.WRAP) - heartrate_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - heartrate_line_bg_img = lv.img(heartrate_screen) - heartrate_line_bg_img.set_pos(5, 60) - heartrate_line_bg_img.set_size(230, 120) - heartrate_line_bg_img.set_src("U:/static/hr_line_bg.png") - - - heartrate_done_img = lv.img(heartrate_screen) - heartrate_done_img.set_pos(20, 249) - heartrate_done_img.set_src("U:/static/hr_gif_03.png") - - heartrate_reset_btn_img = lv.img(heartrate_screen) - heartrate_reset_btn_img.set_pos(0, 192) - heartrate_reset_btn_img.set_src("U:/static/reset_hr_btn.png") - heartrate_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN) - heartrate_reset_btn_img.add_flag(lv.obj.FLAG.CLICKABLE) - - heartrate_start_label = lv.label(heartrate_screen) - heartrate_start_label.set_size(240,40) - heartrate_start_label.set_pos(0,200) - heartrate_start_label.set_text(" ") - heartrate_start_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0) - heartrate_start_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - heartrate_start_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT) - - - hr_line1 = lv.line(heartrate_screen) - hr_line1.set_points(hr_line_points,2) - hr_line1.set_pos(25,60) - hr_line1.set_size(10,0) - hr_line1.add_style(style_line_red,0) - - hr_line2 = lv.line(heartrate_screen) - hr_line2.set_points(hr_line_points,2) - hr_line2.set_pos(53,60) - hr_line2.set_size(10,0) - hr_line2.add_style(style_line_red,0) - - hr_line3 = lv.line(heartrate_screen) - hr_line3.set_points(hr_line_points,2) - hr_line3.set_pos(80,60) - hr_line3.set_size(10,0) - hr_line3.add_style(style_line_red,0) - - hr_line4 = lv.line(heartrate_screen) - hr_line4.set_points(hr_line_points,2) - hr_line4.set_pos(109,60) - hr_line4.set_size(10,0) - hr_line4.add_style(style_line_red,0) - - hr_line5 = lv.line(heartrate_screen) - hr_line5.set_points(hr_line_points,2) - hr_line5.set_pos(136,60) - hr_line5.set_size(10,0) - hr_line5.add_style(style_line_red,0) - - hr_line6 = lv.line(heartrate_screen) - hr_line6.set_points(hr_line_points,2) - hr_line6.set_pos(164,60) - hr_line6.set_size(10,0) - hr_line6.add_style(style_line_red,0) - - hr_line7 = lv.line(heartrate_screen) - hr_line7.set_points(hr_line_points,2) - hr_line7.set_pos(192,60) - hr_line7.set_size(10,0) - hr_line7.add_style(style_line_red,0) - - heartrate_bpm_label = lv.label(heartrate_screen) - heartrate_bpm_label.set_size(120, 40) - heartrate_bpm_label.set_pos(120, 270) - heartrate_bpm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - heartrate_bpm_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT) - - heartrate_done_label = lv.label(heartrate_screen) - heartrate_done_label.set_size(240, 40) - heartrate_done_label.set_pos(0, 270) - heartrate_done_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - heartrate_done_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - heartrate_done_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT) - - self.meta = heartrate_screen - heartrate_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)), - lv.EVENT.CLICKED, None) - heartrate_done_label.set_text(" ") - heartrate_bpm_label.set_text("-- bpm") - heartrate_start_label.set_text("正在测量中.") - EventMesh.publish("set_hr_state",1)#1代表手动进入测试界面 - - EventMesh.publish(constants.EVENT.START_HEART) - - def post_processor_after_initialization(self): - self.point = 0 - self.heart_value = 0 - self.show_history_data() - self.restart_up(0) - - def restart_up(self,e): - global heartrate_done_label,heartrate_bpm_label,heartrate_start_label,heartrate_reset_btn_img - self.timer.start(1*500, 1, self.start_measure) - heartrate_bpm_label.set_text("-- bpm") - if heartrate_reset_btn_img != None: - heartrate_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN) - self.point = 0 - self.heart_value = 0 - - heartrate_done_label.set_text(" ") - heartrate_bpm_label.set_text("-- bpm") - heartrate_start_label.set_text("正在测量中.") - EventMesh.publish("set_hr_state",1)#1代表手动进入测试界面 - - EventMesh.publish(constants.EVENT.START_HEART) - - def show_history_data(self): - global hr_line1,hr_line2,hr_line3,hr_line4,hr_line5,hr_line6,hr_line7 - read_data = {} - read_data = EventMesh.publish("get_history_hr_value") - print("hr history read_data",read_data) - if read_data != None: - count = len(read_data) - if count != 0: - if count >= 7: - for i in range(count): - value = read_data["0{}".format(i+1)] - if value < 30: - value = 30 - if value >= 210: - value = 210 - line_value = value - 30 #180-80 = 100 160-100 = 60 - line_value = int(line_value*0.58)+1 - if line_value >= 100: - line_value = 100 - #print("hr hist",line_value) - hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}] - if i == 0: - hr_line1.set_points(hr_line_points,2) - hr_line1.set_pos(25,160-line_value) - hr_line1.set_size(10,line_value) - if i == 1: - hr_line2.set_points(hr_line_points,2) - hr_line2.set_pos(53,160-line_value) - hr_line2.set_size(10,line_value) - - if i == 2: - hr_line3.set_points(hr_line_points,2) - hr_line3.set_pos(80,160-line_value) - hr_line3.set_size(10,line_value) - - if i == 3: - hr_line4.set_points(hr_line_points,2) - hr_line4.set_pos(109,160-line_value) - hr_line4.set_size(10,line_value) - - if i == 4: - hr_line5.set_points(hr_line_points,2) - hr_line5.set_pos(136,160-line_value) - hr_line5.set_size(10,line_value) - - if i == 5: - hr_line6.set_points(hr_line_points,2) - hr_line6.set_pos(164,160-line_value) - hr_line6.set_size(10,line_value) - - if i == 6: - hr_line7.set_points(hr_line_points,2) - hr_line7.set_pos(192,160-line_value) - hr_line7.set_size(10,line_value) - else: - value = read_data["0{}".format(count)] - if value < 30: - value = 30 - if value >= 180: - value = 180 - line_value = value - 30 #180-80 = 100 160-100 = 60 - line_value = int(line_value*0.58)+1 - # - hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}] - if count == 1: - hr_line1.set_points(hr_line_points,2) - hr_line1.set_pos(25,160-line_value) - hr_line1.set_size(10,line_value) - if count == 2: - hr_line2.set_points(hr_line_points,2) - hr_line2.set_pos(53,160-line_value) - hr_line2.set_size(10,line_value) - - if count == 3: - hr_line3.set_points(hr_line_points,2) - hr_line3.set_pos(80,160-line_value) - hr_line3.set_size(10,line_value) - - if count == 4: - hr_line4.set_points(hr_line_points,2) - hr_line4.set_pos(109,160-line_value) - hr_line4.set_size(10,line_value) - - if count == 5: - hr_line5.set_points(hr_line_points,2) - hr_line5.set_pos(136,160-line_value) - hr_line5.set_size(10,line_value) - - if count == 6: - hr_line6.set_points(hr_line_points,2) - hr_line6.set_pos(164,160-line_value) - hr_line6.set_size(10,line_value) - - if count == 7: - hr_line7.set_points(hr_line_points,2) - hr_line7.set_pos(192,160-line_value) - hr_line7.set_size(10,line_value) - - - def start_measure(self,*args): - global heartrate_screen,heartrate_label,heartrate_done_img ,heartrate_reset_btn_img,heartrate_start_label,heartrate_bpm_label ,heartrate_done_label - self.point = self.point + 1 - EventMesh.publish("system_sleep_rest")#防止黑屏 - self.heart_value = EventMesh.publish(constants.EVENT.GET_HEART) - print("self.heart_value:{}".format(self.heart_value)) - if self.point >= 2: - if self.heart_value < 40: - self.heart_value = 0 - if self.heart_value != 0: - heartrate_bpm_label.set_text("{} bpm".format(self.heart_value)) - else: - heartrate_bpm_label.set_text("-- bpm") - - if self.point%4 == 0 : - heartrate_start_label.set_text("正在测量中..") - heartrate_done_img.set_src("U:/static/hr_gif_02.png") - if self.point%4 == 1 : - heartrate_start_label.set_text("正在测量中...") - heartrate_done_img.set_src("U:/static/hr_gif_01.png") - if self.point%4 == 2 : - heartrate_start_label.set_text("正在测量中.") - heartrate_done_img.set_src("U:/static/hr_gif_02.png") - - if self.point%4 == 3 : - heartrate_start_label.set_text("正在测量中.") - heartrate_done_img.set_src("U:/static/hr_gif_03.png") - - - - if self.point > 120: #测20s - heartrate_done_img.set_src("U:/static/hr_gif_03.png") - self.heart_value = EventMesh.publish(constants.EVENT.GET_HEART) - EventMesh.publish("set_old_hr_data",self.heart_value) - if self.heart_value > 50: - - EventMesh.publish("set_history_hr_value",self.heart_value) - EventMesh.publish(constants.PROTOCOL.HEART_SEND,self.heart_value) - heartrate_reset_btn_img.clear_flag(lv.obj.FLAG.HIDDEN) - - heartrate_start_label.set_text("测量结束,点击重测") - if self.heart_value != 0: - heartrate_bpm_label.set_text("{} bpm".format(self.heart_value)) - # heartrate_done_label.set_text("测量完成") - else: - heartrate_bpm_label.set_text("-- bpm") - - self.show_history_data() - - self.timer.stop() - self.point = 0 - EventMesh.publish("set_hr_state",0)#0代表关闭测试 - print("stop debug9") - EventMesh.publish(constants.EVENT.STOP_HEART) - - def Close(self): - self.timer.stop() - get_hr_state = EventMesh.publish("get_hr_state") - get_spo2_state = EventMesh.publish("get_spo2_state") - if get_hr_state == 1 or get_spo2_state == 1: - EventMesh.publish("set_hr_state",0)#0代表关闭测试 - print("stop debug10") - EventMesh.publish(constants.EVENT.STOP_HEART) - - def done_return(self): - EventMesh.publish("load_screen", {"screen": "health"}) - - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "health"}) - - def btn8_press(self): - EventMesh.publish("watch_top_show") - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - -# -------------------------------------------toolbox screen---------------------------------------------------------- - -toolbox_screen = None -toolbox_text_img = None -toolbox_cont = None -toolbox_step_img = None -toolbox_weather_img = None -toolbox_alarm_img = None -# toolbox_sms_img = None -toolbox_countdown_img = None -toolbox_stopwatch_img = None - -toolbox_cont_style = lv.style_t() -toolbox_cont_style.init() -toolbox_cont_style.set_radius(0) -toolbox_cont_style.set_bg_color(lv.color_make(0x00, 0x00, 0x00)) -toolbox_cont_style.set_bg_grad_color(lv.color_make(0x00, 0x00, 0x00)) -toolbox_cont_style.set_bg_grad_dir(lv.GRAD_DIR.VER) -toolbox_cont_style.set_bg_opa(255) -toolbox_cont_style.set_border_width(0) -toolbox_cont_style.set_pad_left(0) -toolbox_cont_style.set_pad_right(0) -toolbox_cont_style.set_pad_top(0) -toolbox_cont_style.set_pad_bottom(0) - -class ToolboxScreen(Screen): - NAME = "toolbox" - - def __init__(self): - super().__init__() - self.meta = None - - def initialization(self): - global toolbox_screen,toolbox_text_img,toolbox_cont,toolbox_step_img,toolbox_weather_img ,toolbox_alarm_img ,\ - toolbox_countdown_img,toolbox_stopwatch_img - if toolbox_screen == None: - tool_set_y = 0 - toolbox_screen = lv.obj() - print("toolbox_screen") - toolbox_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - toolbox_screen.set_scrollbar_mode(0) - - toolbox_text_img = lv.img(toolbox_screen) - toolbox_text_img.set_pos(75, 10) - toolbox_text_img.set_size(90, 30) - toolbox_text_img.set_src("U:/static/tool/tool_text.png") - toolbox_text_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - toolbox_cont = lv.obj(toolbox_screen) - toolbox_cont.set_pos(0, 50) - toolbox_cont.set_size(240, 270) - toolbox_cont.add_style(toolbox_cont_style,lv.PART.MAIN | lv.STATE.DEFAULT) - - - toolbox_step_img = lv.img(toolbox_cont) - toolbox_step_img.set_pos(4, tool_set_y) - toolbox_step_img.set_size(232, 80) - toolbox_step_img.add_flag(lv.obj.FLAG.CLICKABLE) - toolbox_step_img.set_src("U:/static/tool/IMAGE_SECMENU_STEP.png") - toolbox_step_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - tool_set_y+=90 - - toolbox_weather_img = lv.img(toolbox_cont) - toolbox_weather_img.set_pos(4, tool_set_y) - toolbox_weather_img.set_size(232, 80) - toolbox_weather_img.add_flag(lv.obj.FLAG.CLICKABLE) - toolbox_weather_img.set_src("U:/static/tool/IMAGE_SECMENU_WEATHER.png") - toolbox_weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - tool_set_y+=90 - toolbox_alarm_img = lv.img(toolbox_cont) - toolbox_alarm_img.set_pos(4, tool_set_y) - toolbox_alarm_img.set_size(232, 80) - toolbox_alarm_img.add_flag(lv.obj.FLAG.CLICKABLE) - toolbox_alarm_img.set_src("U:/static/tool/IMAGE_SECMENU_ALARM.png") - toolbox_alarm_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - - # tool_set_y+=90 - # toolbox_sms_img = lv.img(toolbox_cont) - # toolbox_sms_img.set_pos(4, tool_set_y) - # toolbox_sms_img.set_size(232, 80) - # toolbox_sms_img.add_flag(lv.obj.FLAG.CLICKABLE) - # toolbox_sms_img.set_src("U:/static/tool/sms_setting.png") - # toolbox_sms_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - tool_set_y+=90 - toolbox_countdown_img = lv.img(toolbox_cont) - toolbox_countdown_img.set_pos(4, tool_set_y) - toolbox_countdown_img.set_size(232, 80) - toolbox_countdown_img.add_flag(lv.obj.FLAG.CLICKABLE) - toolbox_countdown_img.set_src("U:/static/tool/IMAGE_SECMENU_COUNTDOWN.png") - toolbox_countdown_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - tool_set_y+=90 - toolbox_stopwatch_img = lv.img(toolbox_cont) - toolbox_stopwatch_img.set_pos(4, tool_set_y) - toolbox_stopwatch_img.set_size(232, 80) - toolbox_stopwatch_img.add_flag(lv.obj.FLAG.CLICKABLE) - toolbox_stopwatch_img.set_src("U:/static/tool/IMAGE_SECMENU_STOPWATCH.png") - toolbox_stopwatch_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - toolbox_step_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "step"})), lv.EVENT.CLICKED, None) - toolbox_weather_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "weather"})), lv.EVENT.CLICKED, None) - toolbox_alarm_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "clk_list"})), lv.EVENT.CLICKED, None) - # toolbox_sms_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "popup"})), lv.EVENT.CLICKED, None) - toolbox_countdown_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "countdown"})), lv.EVENT.CLICKED, None) - toolbox_stopwatch_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "stopwatch"})), lv.EVENT.CLICKED, None) - self.meta = toolbox_screen - - def done_return(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn8_press(self): - EventMesh.publish("watch_top_show") - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - -incoming_call_screen = None -incoming_call_img = None -incoming_call_name_label = None -incoming_call_answer = None -incoming_call_hangup = None -# CALL_LOG_MAX = 50 -class IncomingCallScreen(Screen): - NAME = "incoming_call" - - def __init__(self): - super().__init__() - self.CALL_LOG_MAX = CALL_LOG_MAX - self.read_data = {} - self.volum_size = 8 - check_volum = ql_fs.path_exists("/usr/static/storage_file/config.json") - if check_volum == True : - with open("/usr/static/storage_file/config.json","r") as fd:#音频文件编号 - self.read_data = ujson.load(fd) - if self.read_data != {}: - b = str("volum") in self.read_data.keys() - if b == True: - self.volum_size = self.read_data["volum"] - else: - self.volum_size = 8 - else: - self.volum_size = 8 - else: - self.volum_size = 8 - self.aud = audio.Audio(0) - self.aud.set_pa(Pin.GPIO29) - self.aud.setVolume(11) - self.call_timer = osTimer() - self.name = None - self.phonebook = {} - self.pro_state = 0 - self.meta = None - - - self.call_log = {} - self.call_log_value = {} - self.read_call_log = {} - self.number_tmp = {} - - def initialization(self): - global incoming_call_screen,incoming_call_img,incoming_call_name_label,incoming_call_answer ,incoming_call_hangup - if incoming_call_screen == None : - # -------------------------------------------incoming_call screen---------------------------------------------------------- - incoming_call_screen = lv.obj() - print("incoming_call_screen") - incoming_call_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - incoming_call_img = lv.img(incoming_call_screen) - incoming_call_img.set_pos(80, 20) - incoming_call_img.set_size(64, 64) - incoming_call_img.set_src("U:/static/IMAGE_NOTICE_CALL.png") - incoming_call_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - incoming_call_name_label = lv.label(incoming_call_screen) - incoming_call_name_label.set_pos(0, 140) - incoming_call_name_label.set_text(" ") - incoming_call_name_label.set_size(240, 50) - incoming_call_name_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - incoming_call_name_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - incoming_call_answer = lv.img(incoming_call_screen) - incoming_call_answer.set_size(64, 64) - incoming_call_answer.add_flag(lv.obj.FLAG.CLICKABLE) - incoming_call_answer.set_pos(30, 220) - incoming_call_answer.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - incoming_call_answer.set_src("U:/static/answer.png") - - incoming_call_hangup = lv.img(incoming_call_screen) - incoming_call_hangup.set_size(64, 64) - incoming_call_hangup.add_flag(lv.obj.FLAG.CLICKABLE) - incoming_call_hangup.set_pos(150, 220) - incoming_call_hangup.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - incoming_call_hangup.set_src("U:/static/hang_up.png") - incoming_call_answer.add_event_cb(lambda e: EventMesh.callback_wrapper(self.answer(e)), - lv.EVENT.CLICKED, None) - incoming_call_hangup.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)), - lv.EVENT.CLICKED, None) - self.meta = incoming_call_screen - EventMesh.publish("set_UI_high_priority", 1) - - - def post_processor_after_initialization(self): - global incoming_call_screen,incoming_call_img,incoming_call_name_label,incoming_call_answer ,incoming_call_hangup - utime.sleep_ms(200)#不加延时会切屏 - data = EventMesh.publish("get_phonebook_list") - if data != None: - check = data[0] - self.phonebook = data[1] - if check == 1:#先检查通讯录 - phonebook_keys = sorted(self.phonebook.keys()) - b = self.meta_info in self.phonebook.values()#查找key中是否包含content电话号码 True 包含在里面 False不包含在里面 - j = 0 - if b == True: - for i in range(len(self.phonebook)): #字典 key value - #'001:邓雪英':15521469561 - name = self.phonebook[phonebook_keys[j]] - name_value = phonebook_keys[j] - number_tmp = str(self.meta_info) - # print("name :{} number_tmp:{}".format(name,number_tmp)) - if name.find(number_tmp) != -1:#查找电话号码是否在通讯录里面 - number_f= name_value - name_s = number_f.split(':') - name_s = name_s[1] - self.name = name_s - self.pro_state = 1 - break - j+=1 - else: - self.name = str(self.meta_info) - self.pro_state = 0 - else: - self.name = str(self.meta_info) - self.pro_state = 0 - - read_call_log = EventMesh.publish("get_call_log_list") - check_call_log_json = read_call_log[0] - self.read_call_log = read_call_log[1] - if self.pro_state == 0 and check_call_log_json == 1:#电话本没有就在通话记录查找电话号码并且文件存在是查找 - - sort_tmp = self.read_call_log.values() - for sort_new_tmp in sort_tmp: #字典 key value - number = sort_new_tmp["number"] - find_ok = self.meta_info in number - # print("find_ok:{} sort_tmp :{} self.meta_info:{}\r\n".format(find_ok,number,self.meta_info)) - if find_ok == True: - name_value = sort_new_tmp["name"]#查找到相同的电话号码就退出break - self.name = name_value - break - - if self.name == None: - self.name = str(self.meta_info) - - # incoming_call_label.set_text(str(self.meta_info)) - incoming_call_name_label.set_text(self.name) - EventMesh.publish("save_phonename",self.name) - time = EventMesh.publish("screen_get_time")#获取系统时间 - - # ["15692025051","2","12:59","哥gdh符合双方和开发商开发好看的思考"], - # 格式:{"电话号码":{"timesec":'时间戳',"number":'电话号码',"name":'名字',"time":'时间',"count":'通话次数'}} - self.num = 0 - - date_tmp = utime.localtime() - time_tmp = utime.mktime(date_tmp) - # print("time_tmp:{}".format(time_tmp)) - read_call_log = EventMesh.publish("get_call_log_list") - check_json = read_call_log[0] - - if check_json == True: - self.read_call_log = read_call_log[1] - print("读取通话记录") - b = str(self.meta_info) in self.read_call_log.keys()#查找key中是否包含content电话号码 True 包含在里面 False不包含在里面 - - if b == True:#查找是否有相同的电话号码 有就直接读出来的次数上加一 没有则从1开始加起 - number_tmp = {} - number_tmp = self.read_call_log[str(self.meta_info)] #通话次数加一 - num_tmp_t = number_tmp["count"]#读取本地保存的通话次数 - else : - num_tmp_t = 0 - self.num = num_tmp_t - else: - self.num = 0 #通话次数 - - sort_tmp = {} - sort_tmp = self.read_call_log.values() - sort_new = {} - sort_new = sorted(sort_tmp, key = lambda i: i['timesec'],reverse = True)#按照时间戳进行排序 去掉最旧的一次数据如果满了五十条 - i = 0 - if len(self.read_call_log) >= self.CALL_LOG_MAX: - for sort_new_tmp in sort_new: #字典 key value - i+=1 # 1 - if i >= self.CALL_LOG_MAX:#大于50条把最后一条删除掉只保留前面50调最新的数据 - key_tmp = sort_new_tmp["number"] - del self.read_call_log[key_tmp] - - tmp = {} - self.num = self.num +1 - if self.num > 99: - self.num = 99 - tmp["count"]= self.num #通话次数 - tmp["time"]= "{}:{}".format("%02d"%(time[0][0]),"%02d"%(time[0][1]))#通话时间 - tmp["name"]= self.name #名称 - tmp["timesec"]= time_tmp #时间戳 - tmp["number"] = self.meta_info - - self.read_call_log[self.meta_info] = tmp - with open("/usr/static/storage_file/Call_log.json","w",encoding="utf-8") as fd: - ujson.dump(self.read_call_log,fd) - print("创建通话记录") - EventMesh.publish("set_call_log_list", [1,self.read_call_log]) - EventMesh.publish("call_log_update_show_list") - - self.call_timer.start(6000, 1, self.call_timer_cb) - self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3') #播放来电铃声 - - def call_timer_cb(self,e): - self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3') #播放来电铃声 - - def answer(self,e): - self.call_timer.stop() - self.aud.stop() - EventMesh.publish("set_UI_high_priority", 0) - voiceCall.callAnswer() - - def Close(self): - self.call_timer.stop() - self.aud.stop() - - def hangup(self,e): - EventMesh.publish("set_UI_high_priority", 0) - self.aud.stop() - self.call_timer.stop() - voiceCall.callEnd() - - - def btn1_release(self): - pass - - def btn8_press(self): - flag = EventMesh.publish("get_lcd_state") - if flag == 1: - EventMesh.publish(constants.EVENT.SYSTEM_SLEEP) - else: - EventMesh.publish(constants.EVENT.SYSTEM_UP) - pass - - def done_left_to_right(self): - pass - - def done_right_to_left(self): - pass - - def done_bottom_to_top(self): - pass - - def done_top_to_bottom(self): - pass - - def done_return(self): - pass - - -on_call_screen = None -on_call_obj =None -on_call_label_name = None -on_call_second_label = None -on_call_volum_label = None -on_call_tab_label = None -on_call_hangup = None -on_call_bar = None -on_call_volum_reduce = None -on_call_volum_add = None -on_call_phone_one = None -on_call_phone_two = None -on_call_phone_three = None -on_call_phone_four = None -on_call_phone_five = None -on_call_phone_six = None -on_call_phone_seven = None -on_call_phone_eight = None -on_call_phone_nine = None -on_call_phone_start = None -on_call_phone_zero = None -on_call_screen_tab = None -on_call_phone_hash = None -on_call_phone_return =None -on_call_screen_tab_label =None -on_call_phone_return_btn = None -ON_CALL_MAX_DATA = 9 -class OnCallScreen(Screen): - NAME = "on_call" - - def __init__(self): - super().__init__() - self.meta = None - self.count_sec = 0 - self.timer = osTimer() - self.aud = audio.Audio(0) - self.aud.set_pa(Pin.GPIO29) - self.read_data = {} - self.volum_size = 8 - self.open_volum = 0 - self.phone_num = '' - self.phone_list = [] - self.button = 0 - - def initialization(self): - EventMesh.publish("set_UI_high_priority", 1) - global on_call_screen,on_call_label_name,on_call_second_label ,on_call_hangup ,on_call_volum_label,on_call_tab_label,on_call_bar,on_call_obj,\ - on_call_volum_reduce,on_call_volum_add,on_call_phone_one ,on_call_phone_two ,on_call_phone_three,on_call_phone_four,on_call_phone_five,\ - on_call_phone_six,on_call_phone_seven,on_call_screen_tab_label ,on_call_phone_return,on_call_phone_eight ,on_call_phone_nine ,on_call_phone_start ,\ - on_call_phone_zero ,on_call_phone_hash,on_call_phone_return_btn,\ - on_call_screen_tab - if on_call_screen ==None : - on_call_screen = lv.obj() - on_call_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_obj = lv.obj(on_call_screen) - on_call_obj.set_size(240,320) - on_call_obj.set_pos(0,0) - on_call_obj.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - print("on_call_screen") - - on_call_label_name = lv.label(on_call_obj) - on_call_label_name.set_pos(0, 80) - on_call_label_name.set_size(240, 50) - on_call_label_name.set_text(" ") - on_call_label_name.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - on_call_label_name.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - on_call_second_label = lv.label(on_call_obj) - on_call_second_label.set_pos(0, 140) - on_call_second_label.set_size(240, 30) - on_call_second_label.set_text("00:00") - on_call_second_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - on_call_second_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - on_call_bar = lv.bar(on_call_obj) - on_call_bar.set_pos(49, 183) - on_call_bar.set_size(140, 25) - on_call_bar.set_style_anim_time(1000, lv.PART.INDICATOR | lv.STATE.DEFAULT) - on_call_bar.set_mode(lv.bar.MODE.NORMAL) - on_call_bar.set_value(50, lv.ANIM.OFF) - on_call_bar.add_style(style_bar, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_bar.add_style(style_bar_indic, lv.PART.INDICATOR | lv.STATE.DEFAULT) - - on_call_volum_reduce = lv.img(on_call_obj) - on_call_volum_reduce.set_size(36, 36) - on_call_volum_reduce.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_volum_reduce.set_pos(4, 178) - on_call_volum_reduce.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_volum_reduce.set_src("U:/static/REDUCE_VOLUM_ICON.png") - on_call_volum_reduce.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reduce_volum_size(e)), - lv.EVENT.CLICKED, None) - - on_call_volum_add = lv.img(on_call_obj) - on_call_volum_add.set_size(36, 36) - on_call_volum_add.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_volum_add.set_pos(194, 178) - on_call_volum_add.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_volum_add.set_src("U:/static/VOLUM_ADD_ICON.png") - on_call_volum_add.add_event_cb(lambda e: EventMesh.callback_wrapper(self.add_volum_size(e)), - lv.EVENT.CLICKED, None) - - - on_call_volum_label = lv.label(on_call_obj) - on_call_volum_label.set_pos(0, 270) - on_call_volum_label.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_volum_label.set_size(85, 50) - on_call_volum_label.set_text("静音") - on_call_volum_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0) - on_call_volum_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_volum_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.open_volum_show(e)), - lv.EVENT.CLICKED, None) - - on_call_hangup = lv.img(on_call_obj) - on_call_hangup.set_size(64, 64) - on_call_hangup.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_hangup.set_pos(85, 245) - on_call_hangup.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_hangup.set_src("U:/static/hang_up.png") - on_call_hangup.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)), - lv.EVENT.CLICKED, None) - - on_call_tab_label = lv.label(on_call_obj) - on_call_tab_label.set_pos(150, 270) - on_call_tab_label.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_tab_label.set_size(90, 50) - on_call_tab_label.set_text("键盘") - on_call_tab_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0) - on_call_tab_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_tab_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.on_call_tab_show(e)), - lv.EVENT.CLICKED, None) - - on_call_screen_tab = lv.obj(on_call_screen) - on_call_screen_tab.set_size(240,320) - on_call_screen_tab.set_pos(0,0) - on_call_screen_tab.add_flag(lv.obj.FLAG.HIDDEN) - on_call_screen_tab.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - on_call_screen_tab_label = lv.label(on_call_screen_tab) - on_call_screen_tab_label.set_pos(40, 34) - on_call_screen_tab_label.set_size(0, 30) - on_call_screen_tab_label.set_text(" ") - on_call_screen_tab_label.set_long_mode(lv.label.LONG.CLIP) - on_call_screen_tab_label.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_screen_tab_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - - on_call_phone_return = lv.img(on_call_screen_tab) - on_call_phone_return.set_src("U:/static/RED_RETURN_PNG.png") - on_call_phone_return.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_phone_return.set_pos(0, 30) - on_call_phone_return.set_size(36, 36) - - on_call_phone_return_btn = lv.img(on_call_screen_tab) - on_call_phone_return_btn.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_phone_return_btn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_phone_return_btn.set_pos(0, 0) - on_call_phone_return_btn.set_size(50, 100) - on_call_phone_return_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.on_return_show(e)), - lv.EVENT.CLICKED, None) - - - on_call_phone_one = lv.img(on_call_screen_tab) - on_call_phone_one.set_src("U:/static/IMAGE_NUMBER_KEY1_ICON.png") - on_call_phone_one.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_phone_one.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_phone_one.set_pos(3, 110) - on_call_phone_one.set_size(76, 50) - - on_call_phone_two = lv.img(on_call_screen_tab) - on_call_phone_two.set_size(76, 50) - on_call_phone_two.set_src("U:/static/IMAGE_NUMBER_KEY2_ICON.png") - on_call_phone_two.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_phone_two.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_phone_two.set_pos(82, 110) - - on_call_phone_three = lv.img(on_call_screen_tab) - on_call_phone_three.set_size(76, 50) - on_call_phone_three.set_src("U:/static/IMAGE_NUMBER_KEY3_ICON.png") - on_call_phone_three.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_phone_three.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_phone_three.set_pos(161, 110)#1 - - on_call_phone_four = lv.img(on_call_screen_tab) - on_call_phone_four.set_size(76, 50) - on_call_phone_four.set_src("U:/static/IMAGE_NUMBER_KEY4_ICON.png") - on_call_phone_four.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_phone_four.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_phone_four.set_pos(3, 162) - - on_call_phone_five = lv.img(on_call_screen_tab) - on_call_phone_five.set_size(76, 50) - on_call_phone_five.set_src("U:/static/IMAGE_NUMBER_KEY5_ICON.png") - on_call_phone_five.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_phone_five.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_phone_five.set_pos(82, 162) - - on_call_phone_six = lv.img(on_call_screen_tab) - on_call_phone_six.set_size(76, 50) - on_call_phone_six.set_src("U:/static/IMAGE_NUMBER_KEY6_ICON.png") - on_call_phone_six.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_phone_six.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_phone_six.set_pos(161, 162)#2 - - on_call_phone_seven = lv.img(on_call_screen_tab) - on_call_phone_seven.set_size(76, 50) - on_call_phone_seven.set_src("U:/static/IMAGE_NUMBER_KEY7_ICON.png") - on_call_phone_seven.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_phone_seven.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_phone_seven.set_pos(3, 214) - - on_call_phone_eight = lv.img(on_call_screen_tab) - on_call_phone_eight.set_size(76, 50) - on_call_phone_eight.set_src("U:/static/IMAGE_NUMBER_KEY8_ICON.png") - on_call_phone_eight.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_phone_eight.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_phone_eight.set_pos(82, 214) - - on_call_phone_nine = lv.img(on_call_screen_tab) - on_call_phone_nine.set_size(76, 50) - on_call_phone_nine.set_src("U:/static/IMAGE_NUMBER_KEY9_ICON.png") - on_call_phone_nine.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_phone_nine.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_phone_nine.set_pos(161, 214) - - on_call_phone_start = lv.img(on_call_screen_tab) - on_call_phone_start.set_size(76, 50) - on_call_phone_start.set_src("U:/static/IMAGE_NUMBER_KEYSTAR_ICON.png") - on_call_phone_start.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_phone_start.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_phone_start.set_pos(3, 266) - - on_call_phone_zero = lv.img(on_call_screen_tab) - on_call_phone_zero.set_size(76, 50) - on_call_phone_zero.set_src("U:/static/IMAGE_NUMBER_KEY0_ICON.png") - on_call_phone_zero.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_phone_zero.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_phone_zero.set_pos(82, 266) - - on_call_phone_hash = lv.img(on_call_screen_tab) - on_call_phone_hash.set_size(76, 50) - on_call_phone_hash.set_src("U:/static/IMAGE_NUMBER_KEYHASH_ICON.png") - on_call_phone_hash.add_flag(lv.obj.FLAG.CLICKABLE) - on_call_phone_hash.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - on_call_phone_hash.set_pos(161, 266) - - self.meta = on_call_screen - - - on_call_phone_one.add_event_cb(lambda e: EventMesh.callback_wrapper(self.one(e)), - lv.EVENT.CLICKED, None) - on_call_phone_two.add_event_cb(lambda e: EventMesh.callback_wrapper(self.two(e)), - lv.EVENT.CLICKED, None) - on_call_phone_three.add_event_cb(lambda e: EventMesh.callback_wrapper(self.three(e)), - lv.EVENT.CLICKED, None) - on_call_phone_four.add_event_cb(lambda e: EventMesh.callback_wrapper(self.four(e)), - lv.EVENT.CLICKED, None) - on_call_phone_five.add_event_cb(lambda e: EventMesh.callback_wrapper(self.five(e)), - lv.EVENT.CLICKED, None) - on_call_phone_six.add_event_cb(lambda e: EventMesh.callback_wrapper(self.six(e)), - lv.EVENT.CLICKED, None) - on_call_phone_seven.add_event_cb(lambda e: EventMesh.callback_wrapper(self.seven(e)), - lv.EVENT.CLICKED, None) - on_call_phone_eight.add_event_cb(lambda e: EventMesh.callback_wrapper(self.eight(e)), - lv.EVENT.CLICKED, None) - on_call_phone_nine.add_event_cb(lambda e: EventMesh.callback_wrapper(self.nine(e)), - lv.EVENT.CLICKED, None) - on_call_phone_zero.add_event_cb(lambda e: EventMesh.callback_wrapper(self.zero(e)), - lv.EVENT.CLICKED, None) - - on_call_phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)), - lv.EVENT.CLICKED, None)#短按显示* - - on_call_phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.pressed_start(e)), - lv.EVENT.LONG_PRESSED, None)#长按显示+ - - on_call_phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.endpressed_start(e)), - lv.EVENT.RELEASED, None)#释放按键 - - on_call_phone_hash.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hash(e)), - lv.EVENT.CLICKED, None) - name = EventMesh.publish("get_phonename") - on_call_label_name.set_text(name) - # on_call_label.set_text(str(self.meta_info)) - on_call_second_label.set_text("00:00") - self.phone_num = '' - self.phone_list = [] - self.button = 0 - - - def show_num(self): - global on_call_screen_tab_label - #print("phone self.phone_num ",self.phone_num,self.phone_list) - on_call_screen_tab_label.set_size(200, 30) - on_call_screen_tab_label.set_text(self.phone_num) - def one(self,e): - if len(self.phone_list) >= ON_CALL_MAX_DATA: - self.phone_list.pop(0) - #return - - voiceCall.startDtmf("1",100) - self.phone_list.append("1") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def two(self,e): - if len(self.phone_list) >= ON_CALL_MAX_DATA: - self.phone_list.pop(0) - #return - voiceCall.startDtmf("2",100) - self.phone_list.append("2") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def three(self,e): - if len(self.phone_list) >= ON_CALL_MAX_DATA: - self.phone_list.pop(0) - voiceCall.startDtmf("3",100) - self.phone_list.append("3") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def four(self,e): - if len(self.phone_list) >= ON_CALL_MAX_DATA: - self.phone_list.pop(0) - voiceCall.startDtmf("4",100) - self.phone_list.append("4") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def five(self,e): - if len(self.phone_list) >= ON_CALL_MAX_DATA: - self.phone_list.pop(0) - #return - voiceCall.startDtmf("5",100) - self.phone_list.append("5") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def six(self,e): - if len(self.phone_list) >= ON_CALL_MAX_DATA: - self.phone_list.pop(0) - #return - voiceCall.startDtmf("6",100) - self.phone_list.append("6") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def seven(self,e): - if len(self.phone_list) >= ON_CALL_MAX_DATA: - self.phone_list.pop(0) - #return - voiceCall.startDtmf("7",100) - self.phone_list.append("7") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def eight(self,e): - if len(self.phone_list) >= ON_CALL_MAX_DATA: - self.phone_list.pop(0) - #return - voiceCall.startDtmf("8",100) - self.phone_list.append("8") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def nine(self,e): - if len(self.phone_list) >= ON_CALL_MAX_DATA: - self.phone_list.pop(0) - #return - voiceCall.startDtmf("9",100) - self.phone_list.append("9") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def zero(self,e): - if len(self.phone_list) >= ON_CALL_MAX_DATA:#限制拨号数量20个数字 - self.phone_list.pop(0) - #return - voiceCall.startDtmf("0",100) - self.phone_list.append("0") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def start(self,e): - self.button = 0 - - def pressed_start(self,e): - self.button = 1 - def Close(self): - self.timer_cb = 0 - self.timer.stop() - - def endpressed_start(self,e): - if len(self.phone_list) >= ON_CALL_MAX_DATA:#限制拨号数量20个数字 - self.phone_list.pop(0) - #return - - # if self.button == 1:#长按 - # voiceCall.startDtmf("+",100) - # self.phone_list.append("+") - # else:#短按 - voiceCall.startDtmf("*",100) - self.phone_list.append("*") - - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def hash(self,e): - if len(self.phone_list) >= ON_CALL_MAX_DATA:#限制拨号数量20个数字 - self.phone_list.pop(0) - #return - voiceCall.startDtmf("#",100) - self.phone_list.append("#") - self.phone_num = ''.join(self.phone_list) - self.show_num() - - def add_show_hidden(self): - on_call_volum_add.add_flag(lv.obj.FLAG.HIDDEN) - on_call_volum_reduce.add_flag(lv.obj.FLAG.HIDDEN) - on_call_bar.add_flag(lv.obj.FLAG.HIDDEN) - - def clear_show_hidden(self): - on_call_volum_add.clear_flag(lv.obj.FLAG.HIDDEN) - on_call_volum_reduce.clear_flag(lv.obj.FLAG.HIDDEN) - on_call_bar.clear_flag(lv.obj.FLAG.HIDDEN) - - def open_volum_show(self, e): - global on_call_screen_tab,on_call_screen,on_call_obj - # self.aud.setVolume(0) - # if self.open_volum_state == 1: - # self.open_volum_state = 0 - # else: - # self.open_volum_state = 1 - # if self.open_volum_state == 1: - # self.add_show_hidden() - # else: - # self.clear_show_hidden() - - - def on_call_tab_show(self, e): - global on_call_screen_tab,on_call_screen,on_call_obj - if on_call_screen_tab != None: - self.phone_num = '' - self.phone_list = [] - self.show_num() - on_call_screen_tab.clear_flag(lv.obj.FLAG.HIDDEN) - on_call_obj.add_flag(lv.obj.FLAG.HIDDEN) - - - def on_return_show(self, e): - global on_call_screen_tab,on_call_screen,on_call_obj - if on_call_screen_tab != None: - on_call_screen_tab.add_flag(lv.obj.FLAG.HIDDEN) - on_call_obj.clear_flag(lv.obj.FLAG.HIDDEN) - - def add_volum_size(self, e): - self.volum_size+=2 - if self.volum_size >= 11: - self.volum_size = 11 - self.show_bar(1) - - def reduce_volum_size(self, e): - - self.volum_size -= 2 - if self.volum_size < 0: - self.volum_size = 0 - self.show_bar(1) - - def show_bar(self,msg): - on_call_bar.set_value((100 // 11) * self.volum_size, lv.ANIM.OFF) - if msg == 1: - self.read_data = EventMesh.publish("get_storage_data") - self.read_data["volum"] = self.volum_size - self.aud.setVolume(self.volum_size) - EventMesh.publish("set_storage_data", self.read_data) - EventMesh.publish("set_volum_size",self.volum_size) - # print("self.read_data:size :{}".format(self.read_data)) - with open("/usr/static/storage_file/config.json","w",encoding="utf-8") as fd: - ujson.dump(self.read_data,fd) - - def post_processor_after_initialization(self): - global on_call_screen_tab,on_call_obj - self.count_sec = 0 - self.timer.start(1000,1,self.refresh) - self.read_data = EventMesh.publish("get_storage_data") - # print("self.read_data:{}".format(self.read_data)) - num = EventMesh.publish("get_volum_size") - if num == None: - self.volum_size = 8 - else: - self.volum_size = num - self.aud.setVolume(self.volum_size) - self.show_bar(0) - self.open_volum = 0 - self.phone_num = '' - self.phone_list = [] - self.button = 0 - if on_call_obj != None: - on_call_obj.clear_flag(lv.obj.FLAG.HIDDEN) - if on_call_screen_tab != None: - on_call_screen_tab.add_flag(lv.obj.FLAG.HIDDEN) - self.show_num() - - - def refresh(self,e): - # print("call_in") - global on_call_screen,on_call_label_name,on_call_second_label ,on_call_hangup - min = self.count_sec/60 - sec = self.count_sec%60 - if min > 99: - total = "%03d:%02d"%(min,sec) - else: - total = "%02d:%02d"%(min,sec) - on_call_second_label.set_text(str(total)) - self.count_sec+=1 - - def hangup(self,e): - EventMesh.publish("set_UI_high_priority", 0) - self.timer.stop() - voiceCall.callEnd() - - def Close(self): - self.timer.stop() - - def btn1_release(self): - pass - #EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn8_press(self): - flag = EventMesh.publish("get_lcd_state") - if flag == 1: - EventMesh.publish(constants.EVENT.SYSTEM_SLEEP) - else: - EventMesh.publish(constants.EVENT.SYSTEM_UP) - #EventMesh.publish("load_screen", {"screen": "main_menu"}) -# -------------------------------------------step screen----------------------------------------------------------# - -step_screen = None -step_label = None -step_label_01 = None -step_img = None -class StepScreen(Screen): - NAME = "step" - - def __init__(self): - super().__init__() - self.meta = None - self.timer = osTimer() - - def initialization(self): - global step_screen,step_label ,step_label_01 ,step_img - if step_screen == None: - step_screen = lv.obj() - print("step_screen") - step_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - step_label = lv.label(step_screen) - step_label.set_pos(10, 30) - step_label.set_size(230, 50) - step_label.set_text("今日步数") - step_label.set_long_mode(lv.label.LONG.WRAP) - step_label.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) - step_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - step_label_01 = lv.label(step_screen) - step_label_01.set_pos(0, 100) - step_label_01.set_size(240, 50) - step_label_01.set_text("0æ­¥") - step_label_01.set_long_mode(lv.label.LONG.WRAP) - step_label_01.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - step_label_01.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - step_img = lv.img(step_screen) - step_img.set_pos(100, 150) - step_img.set_size(40, 65) - step_img.set_src("U:/static/IMAGE_STEP.png") - step_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - self.meta = step_screen - - step = EventMesh.publish("get_old_step_value") - step_label_01.set_text("{}æ­¥".format(step)) - self.timer.start(1000, 1, self.revcing) - - def revcing(self, *args, **kwargs): - global step_screen,step_label ,step_label_01 ,step_img - step = EventMesh.publish("get_old_step_value") - step_label_01.set_text("{}æ­¥".format(step)) - - def Close(self): - self.timer.stop() - - def done_return(self): - EventMesh.publish("load_screen", {"screen": "toolbox"}) - - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "toolbox"}) - - def btn8_press(self): - EventMesh.publish("watch_top_show") - EventMesh.publish("load_screen", {"screen": "main_menu"}) - -# -------------------------------------------weather screen---------------------------------------------------------- - -weather_screen = None -weather_img = None -no_weather_img = None -weather_tem_label = None -no_weather_degree = None -weather_detail_label = None -weather_location_label = None -no_connect_label = None -no_connect_label1 = None -class WeatherScreen(Screen): - NAME = "weather" - - def __init__(self): - super().__init__() - self.meta = None - self.weather_data = {} - EventMesh.subscribe("updata_weather_show", self.update_weather_data) - - def initialization(self): - global weather_screen,weather_img,no_weather_img,weather_tem_label,no_weather_degree,\ - weather_detail_label,weather_location_label,no_connect_label ,no_connect_label1 - if weather_screen == None : - weather_screen = lv.obj() - print("weather_screen") - weather_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - weather_img = lv.img(weather_screen) - weather_img.set_pos(10, 10) - weather_img.set_size(135, 120) - - weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_weather_img = lv.img(weather_screen) - no_weather_img.set_pos(10, 10) - no_weather_img.set_size(135, 120) - no_weather_img.set_src("U:/static/update.png") - no_weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - weather_tem_label = lv.label(weather_screen) - weather_tem_label.set_pos(155, 44) - weather_tem_label.set_size(60, 50) - weather_tem_label.set_text("_ _") - weather_tem_label.set_long_mode(lv.label.LONG.WRAP) - weather_tem_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - weather_tem_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_weather_degree = lv.img(weather_screen) - no_weather_degree.set_pos(200, 40) - no_weather_degree.set_size(22, 22) - no_weather_degree.set_src("U:/static/degree.png") - no_weather_degree.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - weather_detail_label = lv.label(weather_screen) - weather_detail_label.set_pos(155, 80) - weather_detail_label.set_size(85, 50) - weather_detail_label.set_text("-/-") - weather_detail_label.set_long_mode(lv.label.LONG.WRAP) - weather_detail_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - weather_detail_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - weather_location_label = lv.label(weather_screen) - weather_location_label.set_pos(0, 200) - weather_location_label.set_size(240, 50) - weather_location_label.set_text("--") - weather_location_label.set_long_mode(lv.label.LONG.WRAP) - weather_location_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - weather_location_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_connect_label = lv.label(weather_screen) - no_connect_label.set_pos(0, 200) - no_connect_label.set_size(240, 40) - no_connect_label.set_text("找不到服务器") - no_connect_label.set_long_mode(lv.label.LONG.WRAP) - no_connect_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - no_connect_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - no_connect_label1 = lv.label(weather_screen) - no_connect_label1.set_pos(0, 250) - no_connect_label1.set_size(240, 70) - no_connect_label1.set_text("请联网后重试") - no_connect_label1.set_long_mode(lv.label.LONG.WRAP) - no_connect_label1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - no_connect_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - self.meta = weather_screen - - def post_processor_after_initialization(self): - EventMesh.publish("updata_weather_show") - - - def update_weather_data(self, event, msg): - global weather_screen,weather_img,no_weather_img,weather_tem_label,no_weather_degree,\ - weather_detail_label,weather_location_label,no_connect_label ,no_connect_label1 - connect = EventMesh.publish(constants.EVENT.GET_CONNECT) #获取网络状态 - self.weather_data = EventMesh.publish("get_weather_data") - if weather_screen != None: - if connect != 0 and self.weather_data != None: - no_data = self.weather_data[8] - if no_data != 0 : - no_weather_img.add_flag(lv.obj.FLAG.HIDDEN) - weather_img.clear_flag(lv.obj.FLAG.HIDDEN) - no_connect_label.set_text(" ") - no_connect_label1.set_text(" ") - # print("self.weather_data:{}".format(self.weather_data)) - type = self.weather_data[3] - if type == None: - weather_img.set_src("U:/static/update.png")#天气类型 - else: - weather_img.set_src("U:/static/{}_weather.png".format(type))#天气类型 - - temp = self.weather_data[4] - if temp == None: - weather_tem_label.set_text("_ _") - else: - weather_tem_label.set_text("{}".format(temp)) - - date = self.weather_data[0] - if date != '{}': - date_month = date.split('-')[1] - date_day = date.split('-')[2] - weather_detail_label.set_text("{}/{}".format(date_month,date_day))#天气更新时间 - else: - weather_detail_label.set_text("-/-") - - city = self.weather_data[7] - if city != '{}': - weather_location_label.set_text("{}".format(city))#城市 - else: - weather_location_label.set_text("--") - else:#已联网未获取到天气数据 - weather_location_label.set_text(" ") - weather_detail_label.set_text("-/-") - weather_tem_label.set_text("_ _") - - no_connect_label.set_text("未获取网络数据") - no_connect_label1.set_text("请稍候重试") - - else: - weather_location_label.set_text(" ") - weather_detail_label.set_text("-/-") - weather_tem_label.set_text("_ _") - - no_weather_img.clear_flag(lv.obj.FLAG.HIDDEN) - weather_img.add_flag(lv.obj.FLAG.HIDDEN) - no_connect_label.set_text("找不到服务器") - no_connect_label1.set_text("请联网后重试") - - def done_return(self): - EventMesh.publish("load_screen", {"screen": "toolbox"}) - - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "toolbox"}) - - def btn8_press(self): - EventMesh.publish("watch_top_show") - EventMesh.publish("load_screen", {"screen": "main_menu"}) - -import audio -from machine import Pin - - - - -# -----------------------------联系人--------------contacts screen---------------------------------------------------------- - -CONTACT_FLAG = 0 -contacts_screen = None -contacts_cont = None -contacts_top_title = None -contact_none_label = None -contacts_screen_list_screen = None -class ContactsScreen(Screen): - NAME = "contacts" - - def __init__(self): - super().__init__() - # -------------------------------------------popup_menu screen---------------------------------------------------------- - self.meta = None - self.phonebook = {} - self.count = 0 - self.phone_num_count = 0 - self.phone_num = {} - self.name = [] - self.check_json = 0 - self.timer = osTimer() - self.contact_detail_list = None - EventMesh.subscribe("contact_updata_list_show", self.btn_create_list) - self.MXA_phone_num = 50 #最大显示号码个数 - self.contact_detail_listt_dict = [] - self.calling_btn = [] - - def post_processor_before_initialization(self): - data = EventMesh.publish("get_phonebook_list") - if data != None: - self.check_json = data[0] - self.phonebook = data[1] - self.count = 0 - - def initialization(self): - global contacts_screen,contacts_cont,contacts_top_title,contact_none_label,contacts_screen_list_screen - if contacts_screen == None: - contacts_screen = lv.obj() - print("contacts_screen") - contacts_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - contacts_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - contacts_screen_list_screen = lv.obj(contacts_screen) - contacts_screen_list_screen.set_pos(0, 50) - contacts_screen_list_screen.set_size(240, 270) - contacts_screen_list_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - contacts_screen_list_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - contacts_top_title = lv.label(contacts_screen) - contacts_top_title.set_pos(0, 10) - contacts_top_title.set_size(240, 40) - contacts_top_title.set_text("联系人") - contacts_top_title.set_long_mode(lv.label.LONG.WRAP) - contacts_top_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - contacts_top_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - - contact_none_label = lv.label(contacts_screen_list_screen) - contact_none_label.set_pos(0, 80) - 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) - - self.contact_detail_list = lv.obj(contacts_screen_list_screen) - self.contact_detail_list.set_pos(0, 0) - self.contact_detail_list.set_size(240, 271) - self.contact_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - self.contact_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - for i in range(self.MXA_phone_num): - contact_btn = lv.btn(self.contact_detail_list) - contact_btn.add_flag(lv.obj.FLAG.CLICKABLE) - contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)), - lv.EVENT.CLICKED, None) - contact_btn.add_flag(lv.obj.FLAG.HIDDEN) - - contact_btn_label_1 = lv.label(contact_btn) - contact_btn_label_2 = lv.label(contact_btn) - contact_btn_label_3 = lv.label(contact_btn) - self.contact_detail_listt_dict.append({"contact_btn":contact_btn,"contact_btn_label_1":contact_btn_label_1,"contact_btn_label_2":contact_btn_label_2,"contact_btn_label_3":contact_btn_label_3}) - self.meta = contacts_screen - self.count = 0 - self.btn_create_list_show(0) - - def btn_create_list(self,event,msg): - self.post_processor_before_initialization() - self.timer.start(1 * 1000, 0, self.OutTime_s) - - def OutTime_s(self,e): - self.btn_create_list_show(1) - - def btn_create_list_show(self,state): - EventMesh.publish("publish_message_event_ui",{"func":self.btn_create_list_show_screen,"data":state}) - - def btn_create_list_show_screen(self,state): - global contacts_screen,contacts_cont,contacts_top_title,contact_none_label,contacts_screen_list_screen - print("btn_create_list_show_screen!!!!!!!!!!!") - if contacts_screen == None: - return - #读取json文件中的键作为label文本; - if self.check_json == True and len(self.phonebook) != 0: - self.contact_detail_list.clear_flag(lv.obj.FLAG.HIDDEN) - contact_none_label.add_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本 - j =0 - print("self.phonebook sorted :{} len(self.phonebook) :{}".format(sorted(self.phonebook.keys()),len(self.phonebook))) - phonebook_keys = sorted(self.phonebook.keys()) - - # self.contact_detail_list.delete()#先删除一次控件 - # self.contact_detail_list = lv.obj(contacts_screen_list_screen) - # self.contact_detail_list.set_pos(0, 0) - # self.contact_detail_list.set_size(240, 271) - # self.contact_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - # self.contact_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - # print("self.phonebook sorted :{}".format(len(self.phonebook))) - if len(self.phonebook) > self.MXA_phone_num: - j = len(self.phonebook) - self.MXA_phone_num - for i in range(self.MXA_phone_num): #字典 key value - if(j >= len(self.phonebook)): - self.contact_detail_listt_dict[i]["contact_btn"].add_flag(lv.obj.FLAG.HIDDEN) - continue - name = self.phonebook[phonebook_keys[j]] - key_tmp = phonebook_keys[j] - - print("name :{} key_tmp:{}".format(name,key_tmp)) - - #contact_btn = lv.btn(self.contact_detail_list) - self.contact_detail_listt_dict[i]["contact_btn"].set_size(230,80) - self.contact_detail_listt_dict[i]["contact_btn"].set_pos(0,82*i ) - self.contact_detail_listt_dict[i]["contact_btn"].add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT) - # contact_btn.add_style(style_contact_btn_pressed, lv.PART.MAIN | lv.STATE.PRESSED) - # self.contact_detail_listt_dict[i]["contact_btn"].add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling(e)), - # lv.EVENT.CLICKED, None) - - #contact_btn_label_1 = lv.label(contact_btn) - self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_pos(0, 5) - self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_size(180, 25) - self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_text(key_tmp[4:]) - self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_long_mode(lv.label.LONG.DOT) - self.contact_detail_listt_dict[i]["contact_btn_label_1"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - - #contact_btn_label_2 = lv.label(contact_btn) - self.contact_detail_listt_dict[i]["contact_btn_label_2"].set_pos(0, 5) - self.contact_detail_listt_dict[i]["contact_btn_label_2"].set_size(0, 0) - self.contact_detail_listt_dict[i]["contact_btn_label_2"].set_text(key_tmp) - - - #contact_btn_label_3 = lv.label(contact_btn) - self.contact_detail_listt_dict[i]["contact_btn_label_3"].set_pos(0, 30) - self.contact_detail_listt_dict[i]["contact_btn_label_3"].set_size(220, 35) - self.contact_detail_listt_dict[i]["contact_btn_label_3"].set_text(name) - self.contact_detail_listt_dict[i]["contact_btn_label_3"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) - - - self.contact_detail_listt_dict[i]["contact_btn"].clear_flag(lv.obj.FLAG.HIDDEN) - #self.contact_detail_listt_dict[i]["contact_btn"].scroll_to_view(lv.ANIM.OFF) - j+=1 - - if state == 1: - self.contact_detail_listt_dict[i]["contact_btn"].scroll_to_view(lv.ANIM.OFF) - - else: - if contacts_screen_list_screen != None: - contact_none_label.clear_flag(lv.obj.FLAG.HIDDEN) #显示空文本 - if self.contact_detail_list != None: - self.contact_detail_list.add_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本 - - - def calling_cb(self,e): - code = e.get_code() - if code == lv.EVENT.CLICKED: - if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡时触发sos报警 无卡时自动关机 - msg_text = e.get_target().get_child(1).get_text() - EventMesh.publish("publish_message_event_ui",{"func":self.calling,"data":msg_text}) - else: - EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"}) - - def calling(self,msg_text): - _msg = msg_text - print("contacts:calling_cb1:{}".format(_msg)) - # print("_msg:{}".format(_msg)) - msg_tmp = _msg.split(':') - msg_tmp = msg_tmp[1] - EventMesh.publish("save_phonename", msg_tmp) - - phone_num = self.phonebook[_msg] - EventMesh.publish("save_phonenum", phone_num) - - # phone_num_tmp = int(phone_num) - - "dialing_noplay_popup" - EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"}) - - - def done_return(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn8_press(self): - EventMesh.publish("watch_top_show") - EventMesh.publish("load_screen", {"screen": "main_menu"}) -# -------------------------------------------temperature screen---------------------------------------------------------- - -temperature_screen = None -temperature_bg_img = None -temperature_body_label = None -temperature_degree_img = None -temperature_value_label = None -temperature_wrist_label = None -temperature_wrist_degree_img = None -temperature_wrist_value_label = None -temperature_measure_end_label = None -temperature_measure_countdown_label = None -temp_reset_btn_img = None -temp_line1 = None -temp_line2 = None -temp_line3 = None -temp_line4 = None -temp_line5 = None -temp_line6 = None -temp_line7 = None -temperature_label = None -temperature_line_bg_img = None -temperature_done_img = None -temperature_start_label=None -temperature_bpm_label = None -temperature_done_label = None -temperature_keep_label = None - -style_line_blue = lv.style_t() -style_line_blue.init() -style_line_blue.set_line_width(10) -style_line_blue.set_line_color(lv.color_make(35, 141, 255)) - -class TemperatureScreen(Screen): - NAME = "temperature" - - - def __init__(self): - super().__init__() - self.meta = None - self.timer = osTimer() - self.point = 0 - self.temp_value = 0 - - def initialization(self): - global temperature_screen,temperature_keep_label,temperature_label,temp_reset_btn_img,temp_line1,temp_line2,temp_line3,temp_line4,temp_line5,\ - temp_line6,temp_line7,temperature_line_bg_img,temperature_done_img ,temperature_start_label,temperature_bpm_label ,temperature_done_label - if temperature_screen == None: - temperature_screen = lv.obj() - print("temp_screen") - temperature_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - temperature_label = lv.label(temperature_screen) - temperature_label.set_pos(0, 10) - temperature_label.set_size(240, 40) - temperature_label.set_text("体温") - temperature_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0) - temperature_label.set_long_mode(lv.label.LONG.WRAP) - temperature_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - temperature_line_bg_img = lv.img(temperature_screen) - temperature_line_bg_img.set_pos(5, 50) - temperature_line_bg_img.set_size(230, 120) - temperature_line_bg_img.set_src("U:/static/temp_line_bg.png") - - - temperature_done_img = lv.img(temperature_screen) - temperature_done_img.set_pos(20, 226) - temperature_done_img.set_src("U:/static/temp_gif03.png") - - temp_reset_btn_img = lv.img(temperature_screen) - temp_reset_btn_img.set_pos(0, 182) - temp_reset_btn_img.set_src("U:/static/reset_hr_btn.png") - temp_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN) - temp_reset_btn_img.add_flag(lv.obj.FLAG.CLICKABLE) - - temperature_start_label = lv.label(temperature_screen) - temperature_start_label.set_size(240,40) - temperature_start_label.set_pos(0,190) - temperature_start_label.set_text(" ") - temperature_start_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0) - temperature_start_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - temperature_start_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT) - - # hr_line_points1 = [{"x":0,"y":0},{"x":0,"y":30}] - # hr_line_points2 = [{"x":0,"y":0},{"x":0,"y":47}] - # hr_line_points3 = [{"x":0,"y":0},{"x":0,"y":67}] - # hr_line_points4 = [{"x":0,"y":0},{"x":0,"y":85}] - # hr_line_points5 = [{"x":0,"y":0},{"x":0,"y":100}] - # hr_line_points6 = [{"x":0,"y":0},{"x":0,"y":100}] - # hr_line_points7 = [{"x":0,"y":0},{"x":0,"y":100}] - - temp_line1 = lv.line(temperature_screen) - temp_line1.set_points(hr_line_points,2) - temp_line1.set_pos(29,120) - temp_line1.set_size(10,0) - temp_line1.add_style(style_line_blue,0) - - temp_line2 = lv.line(temperature_screen) - temp_line2.set_points(hr_line_points,2) - temp_line2.set_pos(57,103) - temp_line2.set_size(10,0) - temp_line2.add_style(style_line_blue,0) - - temp_line3 = lv.line(temperature_screen) - temp_line3.set_points(hr_line_points,2) - temp_line3.set_pos(84,82) - temp_line3.set_size(10,0) - temp_line3.add_style(style_line_blue,0) - - temp_line4 = lv.line(temperature_screen) - temp_line4.set_points(hr_line_points,2) - temp_line4.set_pos(110,66) - temp_line4.set_size(10,0) - temp_line4.add_style(style_line_blue,0) - - temp_line5 = lv.line(temperature_screen) - temp_line5.set_points(hr_line_points,2) - temp_line5.set_pos(140,50) - temp_line5.set_size(10,0) - temp_line5.add_style(style_line_blue,0) - - temp_line6 = lv.line(temperature_screen) - temp_line6.set_points(hr_line_points,2) - temp_line6.set_pos(167,50) - temp_line6.set_size(10,0) - temp_line6.add_style(style_line_blue,0) - - temp_line7 = lv.line(temperature_screen) - temp_line7.set_points(hr_line_points,2) - temp_line7.set_pos(195,50) - temp_line7.set_size(10,0) - temp_line7.add_style(style_line_blue,0) - - temperature_bpm_label = lv.label(temperature_screen) - temperature_bpm_label.set_size(120, 40) - temperature_bpm_label.set_pos(100, 244) - temperature_bpm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - temperature_bpm_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT) - - temperature_keep_label = lv.label(temperature_screen) - temperature_keep_label.set_size(140, 40) - temperature_keep_label.set_pos(100, 280) - temperature_keep_label.set_text(" ") - temperature_keep_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT) - - - temperature_degree_img = lv.img(temperature_screen) - temperature_degree_img.set_pos(156, 242) - temperature_degree_img.set_size(22, 22) - temperature_degree_img.set_src("U:/static/degree.png") - temperature_degree_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - - self.meta = temperature_screen - temp_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)), - lv.EVENT.CLICKED, None) - - temperature_bpm_label.set_text("- -") - temperature_start_label.set_text("正在测量中.") - - - def post_processor_after_initialization(self): - self.restart_up(0) - - def restart_up(self,e): - global temperature_done_label,temperature_keep_label,temperature_bpm_label,temperature_start_label,temp_reset_btn_img - temperature_bpm_label.set_text("- -") - temperature_keep_label.set_text(" ") - temp_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN) - self.point = 0 - temperature_bpm_label.set_text("- -") - temperature_start_label.set_text("正在测量中.") - EventMesh.publish("set_temp_state",1) - EventMesh.publish(constants.EVENT.START_TEMP) - self.show_history_data() - self.timer.start(1*500, 1, self.start_measure) - - def show_history_data(self): - global temp_line1,temp_line2,temp_line3,temp_line4,temp_line5,temp_line6,temp_line7 - read_data = {} - read_data = EventMesh.publish("get_history_temp_value") - print("hr history read_data",read_data) - if read_data != None: - count = len(read_data) - if count != 0: - if count >= 7: - for i in range(count): - value = read_data["0{}".format(i+1)] - value_temp = int(value) - if value <= 30: - line_value = int(value_temp) - elif value <= 34: - line_value = int((value_temp-30)*4.25)+30 - elif value <= 38: - line_value = int((value_temp-34)*5)+47 - elif value <= 42: - line_value = int((value_temp-38)*4)+67 - elif value < 46: - line_value = int((value_temp-42)*3.75)+85 - else: - value = 46 - line_value = 100 - - - if line_value >= 100: - line_value = 100 - #print("hr hist",line_value) - hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}] - if i == 0: - temp_line1.set_points(hr_line_points,2) - temp_line1.set_pos(29,150-line_value) - temp_line1.set_size(10,line_value) - if value >= 37.3: - temp_line1.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) - else: - temp_line1.set_style_line_color(lv.color_make(35,141,255),0) - if i == 1: - temp_line2.set_points(hr_line_points,2) - temp_line2.set_pos(57,150-line_value) - temp_line2.set_size(10,line_value) - if value >= 37.3: - temp_line2.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) - else: - temp_line2.set_style_line_color(lv.color_make(35,141,255),0) - - if i == 2: - temp_line3.set_points(hr_line_points,2) - temp_line3.set_pos(84,150-line_value) - temp_line3.set_size(10,line_value) - if value >= 37.3: - temp_line3.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) - else: - temp_line3.set_style_line_color(lv.color_make(35,141,255),0) - if i == 3: - temp_line4.set_points(hr_line_points,2) - temp_line4.set_pos(112,150-line_value) - temp_line4.set_size(10,line_value) - if value >= 37.3: - temp_line4.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) - else: - temp_line4.set_style_line_color(lv.color_make(35,141,255),0) - if i == 4: - temp_line5.set_points(hr_line_points,2) - temp_line5.set_pos(140,150-line_value) - temp_line5.set_size(10,line_value) - if value >= 37.3: - temp_line5.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) - else: - temp_line5.set_style_line_color(lv.color_make(35,141,255),0) - - if i == 5: - temp_line6.set_points(hr_line_points,2) - temp_line6.set_pos(167,150-line_value) - temp_line6.set_size(10,line_value) - if value >= 37.3: - temp_line6.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) - else: - temp_line6.set_style_line_color(lv.color_make(35,141,255),0) - - if i == 6: - temp_line7.set_points(hr_line_points,2) - temp_line7.set_pos(195,150-line_value) - temp_line7.set_size(10,line_value) - if value >= 37.3: - temp_line7.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) - else: - temp_line7.set_style_line_color(lv.color_make(35,141,255),0) - else: - value = read_data["0{}".format(count)] - value_temp = int(value) - if value <= 30: - line_value = int(value_temp) - elif value <= 34: - line_value = int((value_temp-30)*4.25)+30 - elif value <= 38: - line_value = int((value_temp-34)*5)+47 - elif value <= 42: - line_value = int((value_temp-38)*4)+67 - elif value < 46: - line_value = int((value_temp-42)*3.75)+85 - else: - value = 46 - line_value = 100 - - - if line_value >= 100: - line_value = 100 - # - hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}] - if count == 1: - temp_line1.set_points(hr_line_points,2) - temp_line1.set_pos(29,150-line_value) - temp_line1.set_size(10,line_value) - if value >= 37.3: - temp_line1.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) - else: - temp_line1.set_style_line_color(lv.color_make(35,141,255),0) - - if count == 2: - temp_line2.set_points(hr_line_points,2) - temp_line2.set_pos(57,150-line_value) - temp_line2.set_size(10,line_value) - if value >= 37.3: - temp_line2.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) - else: - temp_line2.set_style_line_color(lv.color_make(35,141,255),0) - - if count == 3: - temp_line3.set_points(hr_line_points,2) - temp_line3.set_pos(84,150-line_value) - temp_line3.set_size(10,line_value) - if value >= 37.3: - temp_line3.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) - else: - temp_line3.set_style_line_color(lv.color_make(35,141,255),0) - - - if count == 4: - temp_line4.set_points(hr_line_points,2) - temp_line4.set_pos(112,150-line_value) - temp_line4.set_size(10,line_value) - if value >= 37.3: - temp_line4.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) - else: - temp_line4.set_style_line_color(lv.color_make(35,141,255),0) - - if count == 5: - temp_line5.set_points(hr_line_points,2) - temp_line5.set_pos(140,150-line_value) - temp_line5.set_size(10,line_value) - if value >= 37.3: - temp_line5.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) - else: - temp_line5.set_style_line_color(lv.color_make(35,141,255),0) - - if count == 6: - temp_line6.set_points(hr_line_points,2) - temp_line6.set_pos(167,150-line_value) - temp_line6.set_size(10,line_value) - if value >= 37.3: - temp_line6.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) - else: - temp_line6.set_style_line_color(lv.color_make(35,141,255),0) - - if count == 7: - temp_line7.set_points(hr_line_points,2) - temp_line7.set_pos(195,150-line_value) - temp_line7.set_size(10,line_value) - if value >= 37.3: - temp_line7.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) - else: - temp_line7.set_style_line_color(lv.color_make(35,141,255),0) - - def start_measure(self,*args): - global temperature_label,temperature_keep_label,temperature_done_img ,temp_reset_btn_img,temperature_start_label,temperature_bpm_label ,temperature_done_label - self.point = self.point + 1 - EventMesh.publish("system_sleep_rest")#防止黑屏 - - temp = EventMesh.publish(constants.EVENT.GET_TEMP) - tmp = str(temp).split('.')[0] + '.' + str(temp).split('.')[1][:1]#获取小数点后一位 舍去小数点最后一位 - print("self.temp:{}".format(temp)) - if self.point >= 2: - if temp != 0: - temperature_bpm_label.set_text("{}".format(tmp)) - else: - temperature_bpm_label.set_text("- -") - - if self.point%4 == 0 : - temperature_start_label.set_text("正在测量中..") - temperature_done_img.set_src("U:/static/temp_gif02.png") - if self.point%4 == 1 : - temperature_start_label.set_text("正在测量中...") - temperature_done_img.set_src("U:/static/temp_gif01.png") - if self.point%4 == 2 : - temperature_start_label.set_text("正在测量中.") - temperature_done_img.set_src("U:/static/temp_gif02.png") - - if self.point%4 == 3 : - temperature_start_label.set_text("正在测量中.") - temperature_done_img.set_src("U:/static/temp_gif03.png") - - 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 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 self.point > 120 : #测2min - - if temp >= 37.3: - temperature_done_img.set_src("U:/static/temp_high.png") - else: - temperature_done_img.set_src("U:/static/temp_gif03.png") - temp_reset_btn_img.clear_flag(lv.obj.FLAG.HIDDEN) - temperature_start_label.set_text("测量结束,点击重测") - - EventMesh.publish("set_history_temp_value",temp) - self.show_history_data() - self.timer.stop() - self.point = 0 - EventMesh.publish("set_temp_state",0) - EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp]) - EventMesh.publish(constants.EVENT.STOP_TEMP) - - - print("stop debug9") - - def Close(self): - self.timer.stop() - EventMesh.publish("set_temp_state",0) - EventMesh.publish(constants.EVENT.STOP_TEMP) - - def done_return(self): - EventMesh.publish("load_screen", {"screen": "health"}) - - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "health"}) - - def btn8_press(self): - EventMesh.publish("watch_top_show") - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - -# class TemperatureScreen(Screen): -# NAME = "temperature" - -# def __init__(self): -# super().__init__() -# self.meta = None -# self.temp_timer = osTimer() -# self.count = 0 -# def initialization(self): -# global temperature_screen,temperature_bg_img ,temperature_body_label ,temperature_degree_img ,temperature_value_label,\ -# temperature_wrist_label,temperature_wrist_degree_img ,temperature_wrist_value_label,temperature_measure_end_label,temperature_measure_countdown_label -# if temperature_screen == None: -# temperature_screen = lv.obj() -# print("temperature_screen") -# temperature_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - -# temperature_bg_img = lv.img(temperature_screen) -# temperature_bg_img.set_pos(30, 50) -# temperature_bg_img.set_size(31, 32) -# temperature_bg_img.set_src("U:/static/temp_hand.png") -# temperature_bg_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - -# temperature_body_label = lv.label(temperature_screen) -# temperature_body_label.set_pos(80, 40) -# temperature_body_label.set_size(160, 20) -# temperature_body_label.set_text("当前腕温") -# temperature_body_label.set_long_mode(lv.label.LONG.WRAP) -# temperature_body_label.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) -# temperature_body_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - -# temperature_degree_img = lv.img(temperature_screen) -# temperature_degree_img.set_pos(146, 70) -# temperature_degree_img.set_size(22, 22) -# temperature_degree_img.set_src("U:/static/degree.png") -# temperature_degree_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - -# temperature_value_label = lv.label(temperature_screen) -# temperature_value_label.set_pos(90,73) -# temperature_value_label.set_size(50, 30) -# temperature_value_label.set_text("--") -# temperature_value_label.set_long_mode(lv.label.LONG.WRAP) -# temperature_value_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -# temperature_value_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - -# # temperature_wrist_label = lv.label(temperature_screen) -# # temperature_wrist_label.set_pos(80,120) -# # temperature_wrist_label.set_size(100, 20) -# # temperature_wrist_label.set_text("当前腕温") -# # temperature_wrist_label.set_long_mode(lv.label.LONG.WRAP) -# # temperature_wrist_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -# # temperature_wrist_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - -# # temperature_wrist_degree_img = lv.img(temperature_screen) -# # temperature_wrist_degree_img.set_pos(150, 150) -# # temperature_wrist_degree_img.set_size(22, 22) -# # temperature_wrist_degree_img.set_src("U:/static/degree.png") -# # temperature_wrist_degree_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - -# # temperature_wrist_value_label = lv.label(temperature_screen) -# # temperature_wrist_value_label.set_pos(96,155) -# # temperature_wrist_value_label.set_size(50, 30) -# # temperature_wrist_value_label.set_text("--") -# # temperature_wrist_value_label.set_long_mode(lv.label.LONG.WRAP) -# # temperature_wrist_value_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -# # temperature_wrist_value_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - -# temperature_measure_countdown_label = lv.label(temperature_screen) -# temperature_measure_countdown_label.set_pos(0,160) -# temperature_measure_countdown_label.set_size(240, 30) -# temperature_measure_countdown_label.set_text("03:00") -# temperature_measure_countdown_label.set_long_mode(lv.label.LONG.WRAP) -# temperature_measure_countdown_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -# temperature_measure_countdown_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - -# temperature_measure_end_label = lv.label(temperature_screen) -# temperature_measure_end_label.set_pos(0,220) -# temperature_measure_end_label.set_size(240, 30) -# temperature_measure_end_label.set_text(" ") -# temperature_measure_end_label.set_long_mode(lv.label.LONG.WRAP) -# temperature_measure_end_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -# temperature_measure_end_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) -# self.meta = temperature_screen -# if temperature_value_label != None: -# temperature_value_label.set_text("--") -# if temperature_measure_end_label != None: -# temperature_measure_end_label.set_text(" ") -# if temperature_measure_countdown_label != None: -# temperature_measure_countdown_label.set_text("03:00") -# EventMesh.publish("set_temp_state",1) -# EventMesh.publish(constants.EVENT.START_TEMP) -# self.count = 0 -# self.countdown = 3*60 -# self.temp_timer.start(1*1000, 1, self.temp_timerout) -# def temp_timerout(self,*args): -# global temperature_value_label,temperature_measure_countdown_label,temperature_measure_end_label -# self.count += 1 -# EventMesh.publish("system_sleep_rest")#防止黑屏 -# temp = EventMesh.publish(constants.EVENT.GET_TEMP) -# tmp = str(temp).split('.')[0] + '.' + str(temp).split('.')[1][:1]#获取小数点后一位 舍去小数点最后一位 -# if temperature_measure_end_label != None: -# temperature_value_label.set_text("{}".format(tmp)) - -# 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 self.countdown > 0: -# self.countdown-=1 -# min = self.countdown / 60 -# sec = self.countdown % 60 -# if temperature_measure_countdown_label != None: -# temperature_measure_countdown_label.set_text("{}:{}".format("%02d"%(min),"%02d"%(sec))) - -# # print("temp:{} tmp_f:{} tmp_f_tmp:{} tmp_d:{} tmp_d_tmp:{} self.count:{}".format(temp,tmp_f,tmp_f_tmp,tmp_d,tmp_d_tmp,self.count)) -# if self.count >= 3*60: -# self.count = 0 -# EventMesh.publish("set_temp_state",0) -# if temperature_measure_end_label != None: -# temperature_measure_end_label.set_text("测量完成") -# self.temp_timer.stop() -# EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp]) -# EventMesh.publish(constants.EVENT.STOP_TEMP) -# def Close(self): -# self.count = 0 -# self.temp_timer.stop() -# EventMesh.publish("set_temp_state",0) -# EventMesh.publish(constants.EVENT.STOP_TEMP) - -# def done_return(self): -# EventMesh.publish("load_screen", {"screen": "health"}) - -# def btn1_release(self): -# EventMesh.publish("load_screen", {"screen": "health"}) - -# def btn8_press(self): -# EventMesh.publish("watch_top_show") -# EventMesh.publish("load_screen", {"screen": "main_menu"}) - - - -line_points = [{"x":0,"y":0},{"x":240,"y":0}] -spo2_screen = None -spo2_label_0 = None -spo2_done_img = None -spo2_label = None -spo2_label_1 = None -spo2_line = None -spo2_last_time = None -spo2_last_value = None -heartrate_screen = None -heartrate_label = None -heartrate_done_img = None -heartrate_start_label = None -heartrate_bpm_label = None -heartrate_done_label = None -heartrate_line_bg_img = None -spo2_line1 = None -spo2_line2 = None -spo2_line3 = None -spo2_line4 = None -spo2_line5 = None -spo2_line6 = None -spo2_line7 = None -spo2_reset_btn_img = None -spo2_label = None -spo2_line_bg_img = None -spo2_done_img = None -spo2_done_label = None -spo2_value_label = None -spo2_start_label = None - -style_line_red = lv.style_t() -style_line_red.init() -style_line_red.set_line_width(10) -style_line_red.set_line_color(lv.color_make(0xff, 0x00, 0x00)) - -spo2_line_points = [{"x":0,"y":0},{"x":0,"y":0}] - -class Spo2Screen(Screen): - NAME = "spo2" - - - def __init__(self): - super().__init__() - self.meta = None - self.timer = osTimer() - self.point = 0 - self.spo2_value = 0 - - def initialization(self): - global spo2_screen,spo2_label,spo2_value_label,spo2_reset_btn_img,spo2_done_img,spo2_line_bg_img,spo2_line1,spo2_line2,\ - spo2_line3,spo2_line4,spo2_line5,spo2_line6,spo2_line7,spo2_line_bg_img ,spo2_start_label ,spo2_done_label - if spo2_screen == None: - spo2_screen = lv.obj() - print("spo2_screen") - spo2_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - spo2_label = lv.label(spo2_screen) - spo2_label.set_pos(0, 20) - spo2_label.set_size(240, 40) - spo2_label.set_text("血氧") - spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0) - spo2_label.set_long_mode(lv.label.LONG.WRAP) - spo2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - spo2_line_bg_img = lv.img(spo2_screen) - spo2_line_bg_img.set_pos(5, 60) - spo2_line_bg_img.set_size(230, 120) - spo2_line_bg_img.set_src("U:/static/spo2_line_bg.png") - - - spo2_done_img = lv.img(spo2_screen) - spo2_done_img.set_pos(20, 240) - spo2_done_img.set_src("U:/static/spo2_gif04.png") - - spo2_reset_btn_img = lv.img(spo2_screen) - spo2_reset_btn_img.set_pos(0, 192) - spo2_reset_btn_img.set_src("U:/static/reset_hr_btn.png") - spo2_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN) - spo2_reset_btn_img.add_flag(lv.obj.FLAG.CLICKABLE) - - spo2_start_label = lv.label(spo2_screen) - spo2_start_label.set_size(240,40) - spo2_start_label.set_pos(0,200) - spo2_start_label.set_text(" ") - spo2_start_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0) - spo2_start_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - spo2_start_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT) - - - spo2_line1 = lv.line(spo2_screen) - spo2_line1.set_points(spo2_line_points,2) - spo2_line1.set_pos(25,60) - spo2_line1.set_size(10,0) - spo2_line1.add_style(style_line_red,0) - - spo2_line2 = lv.line(spo2_screen) - spo2_line2.set_points(spo2_line_points,2) - spo2_line2.set_pos(53,60) - spo2_line2.set_size(10,0) - spo2_line2.add_style(style_line_red,0) - - spo2_line3 = lv.line(spo2_screen) - spo2_line3.set_points(spo2_line_points,2) - spo2_line3.set_pos(80,60) - spo2_line3.set_size(10,0) - spo2_line3.add_style(style_line_red,0) - - spo2_line4 = lv.line(spo2_screen) - spo2_line4.set_points(spo2_line_points,2) - spo2_line4.set_pos(109,60) - spo2_line4.set_size(10,0) - spo2_line4.add_style(style_line_red,0) - - spo2_line5 = lv.line(spo2_screen) - spo2_line5.set_points(spo2_line_points,2) - spo2_line5.set_pos(136,60) - spo2_line5.set_size(10,0) - spo2_line5.add_style(style_line_red,0) - - spo2_line6 = lv.line(spo2_screen) - spo2_line6.set_points(spo2_line_points,2) - spo2_line6.set_pos(164,60) - spo2_line6.set_size(10,0) - spo2_line6.add_style(style_line_red,0) - - spo2_line7 = lv.line(spo2_screen) - spo2_line7.set_points(spo2_line_points,2) - spo2_line7.set_pos(192,60) - spo2_line7.set_size(10,0) - spo2_line7.add_style(style_line_red,0) - - spo2_value_label = lv.label(spo2_screen) - spo2_value_label.set_size(110, 40) - spo2_value_label.set_pos(130, 270) - spo2_value_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - spo2_value_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT) - - - self.meta = spo2_screen - spo2_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)), - lv.EVENT.CLICKED, None) - - def post_processor_after_initialization(self): - self.point = 0 - self.spo2_value = 0 - self.show_history_data() - self.restart_up(0) - - def restart_up(self,e): - global spo2_value_label,heartrate_bpm_label,spo2_start_label,spo2_reset_btn_img - self.timer.start(1*500, 1, self.start_measure) - if spo2_reset_btn_img != None: - spo2_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN) - self.point = 0 - - spo2_value_label.set_text("- -%") - spo2_start_label.set_text("正在测量中.") - EventMesh.publish("set_spo2_state",1)#2代表后台进入血氧测试 - EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN) - - def show_history_data(self): - global spo2_line1,spo2_line2,spo2_line3,spo2_line4,spo2_line5,spo2_line6,spo2_line7 - read_data = {} - read_data = EventMesh.publish("get_history_spo2_value") - print("hr get_history_spo2_value",read_data) - if read_data != None: - count = len(read_data) - if count != 0: - if count >= 7: - for i in range(count): - value = read_data["0{}".format(i+1)] - if value < 80: - value = 80 - if value >= 100: - value = 100 - if value <= 85: - value = value - 80 - line_value = int(value*6) - elif value <= 90: - value = value-85 - line_value = int((17/5)*value)+30 - elif value <= 95: - value = value-90 - line_value = int((21/5)*value)+47 - elif value <= 100: - value = value-95 - line_value = int((16/5)*value)+68 - - - if line_value >= 100: - line_value = 100 - #print("hr hist",line_value) - hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}] - if i == 0: - spo2_line1.set_points(hr_line_points,2) - spo2_line1.set_pos(25,160-line_value) - spo2_line1.set_size(10,line_value) - if i == 1: - spo2_line2.set_points(hr_line_points,2) - spo2_line2.set_pos(53,160-line_value) - spo2_line2.set_size(10,line_value) - - if i == 2: - spo2_line3.set_points(hr_line_points,2) - spo2_line3.set_pos(80,160-line_value) - spo2_line3.set_size(10,line_value) - - if i == 3: - spo2_line4.set_points(hr_line_points,2) - spo2_line4.set_pos(109,160-line_value) - spo2_line4.set_size(10,line_value) - - if i == 4: - spo2_line5.set_points(hr_line_points,2) - spo2_line5.set_pos(136,160-line_value) - spo2_line5.set_size(10,line_value) - - if i == 5: - spo2_line6.set_points(hr_line_points,2) - spo2_line6.set_pos(164,160-line_value) - spo2_line6.set_size(10,line_value) - - if i == 6: - spo2_line7.set_points(hr_line_points,2) - spo2_line7.set_pos(192,160-line_value) - spo2_line7.set_size(10,line_value) - else: - value = read_data["0{}".format(count)] - if value < 80: - value = 80 - if value >= 100: - value = 100 - - if value <= 85: - value = value - 80 - line_value = int(value*6) - elif value <= 90: - value = value-85 - line_value = int((17/5)*value)+30 - elif value <= 95: - value = value-90 - line_value = int((21/5)*value)+47 - elif value <= 100: - value = value-95 - line_value = int((16/5)*value)+68 - - - if line_value >= 100: - line_value = 100 - # - hr_line_points = [{"x":0,"y":0},{"x":0,"y":line_value}] - if count == 1: - spo2_line1.set_points(hr_line_points,2) - spo2_line1.set_pos(25,160-line_value) - spo2_line1.set_size(10,line_value) - if count == 2: - spo2_line2.set_points(hr_line_points,2) - spo2_line2.set_pos(53,160-line_value) - spo2_line2.set_size(10,line_value) - - if count == 3: - spo2_line3.set_points(hr_line_points,2) - spo2_line3.set_pos(80,160-line_value) - spo2_line3.set_size(10,line_value) - - if count == 4: - spo2_line4.set_points(hr_line_points,2) - spo2_line4.set_pos(109,160-line_value) - spo2_line4.set_size(10,line_value) - - if count == 5: - spo2_line5.set_points(hr_line_points,2) - spo2_line5.set_pos(136,160-line_value) - spo2_line5.set_size(10,line_value) - - if count == 6: - spo2_line6.set_points(hr_line_points,2) - spo2_line6.set_pos(164,160-line_value) - spo2_line6.set_size(10,line_value) - - if count == 7: - spo2_line7.set_points(hr_line_points,2) - spo2_line7.set_pos(192,160-line_value) - spo2_line7.set_size(10,line_value) - - - def start_measure(self,*args): - global spo2_screen,spo2_label,spo2_start_label,spo2_value_label,spo2_done_img ,spo2_reset_btn_img - self.point = self.point + 1 - EventMesh.publish("system_sleep_rest")#防止黑屏 - self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN) - if self.point >= 2: - if self.spo2_value != 0: - spo2_value_label.set_text("{}%".format(self.spo2_value)) - else: - spo2_value_label.set_text("- - %") - - if self.point%4 == 0 : - spo2_start_label.set_text("正在测量中..") - spo2_done_img.set_src("U:/static/spo2_gif03.png") - - if self.point%4 == 1 : - spo2_start_label.set_text("正在测量中...") - spo2_done_img.set_src("U:/static/spo2_gif02.png") - - if self.point%4 == 2 : - spo2_start_label.set_text("正在测量中.") - spo2_done_img.set_src("U:/static/spo2_gif01.png") - - if self.point%4 == 3 : - spo2_start_label.set_text("正在测量中.") - spo2_done_img.set_src("U:/static/spo2_gif04.png") - - - - if self.point > 120: #测20s - spo2_done_img.set_src("U:/static/spo2_gif04.png") - self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN) - if self.spo2_value >= 85: - EventMesh.publish("set_old_spo2_data",self.spo2_value) - EventMesh.publish("set_history_spo2_value",self.spo2_value) - EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,self.spo2_value) - spo2_reset_btn_img.clear_flag(lv.obj.FLAG.HIDDEN) - - - if self.spo2_value != 0: - spo2_start_label.set_text("测量结束,点击重测") - spo2_value_label.set_text("{}%".format(self.spo2_value)) - # heartrate_done_label.set_text("测量完成") - else: - spo2_value_label.set_text("- - %") - spo2_start_label.set_text("测量异常,点击重测") - - self.show_history_data() - - self.timer.stop() - self.point = 0 - EventMesh.publish("set_spo2_state",0)#0代表关闭测试 - print("stop debug9") - EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) - - def Close(self): - self.timer.stop() - get_hr_state = EventMesh.publish("get_hr_state") - get_spo2_state = EventMesh.publish("get_spo2_state") - if get_hr_state == 1 or get_spo2_state == 1: - EventMesh.publish("set_spo2_state",0)#0代表关闭测试 - EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) - - def done_return(self): - EventMesh.publish("load_screen", {"screen": "health"}) - - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "health"}) - - def btn8_press(self): - EventMesh.publish("watch_top_show") - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - - - -# class Spo2Screen(Screen): -# NAME = "spo2" - -# def __init__(self): -# super().__init__() -# self.meta = None -# self.timer = osTimer() -# self.point = 0 -# self.spo2_value = 0 -# self.last_spo2_value = 0 -# self.rtc = RTC() - -# def initialization(self): -# global spo2_screen ,spo2_label_0 ,spo2_done_img ,spo2_label ,spo2_label_1 ,spo2_line ,spo2_last_time,spo2_last_value -# if spo2_screen == None: -# spo2_screen = lv.obj() -# print("spo2_screen") -# spo2_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - -# spo2_label_0 = lv.label(spo2_screen) -# spo2_label_0.set_pos(0, 10) -# spo2_label_0.set_size(240, 40) -# spo2_label_0.set_text("血氧") -# spo2_label_0.set_long_mode(lv.label.LONG.WRAP) -# spo2_label_0.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -# spo2_label_0.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - -# spo2_done_img = lv.img(spo2_screen) -# spo2_done_img.set_pos(89, 50) -# spo2_done_img.set_size(62, 84) -# spo2_done_img.set_src("U:/static/IMAGE_SPO2_ONLY_TEST_DONE.png") - -# spo2_label = lv.label(spo2_screen) -# spo2_label.set_size(240,30) -# spo2_label.set_pos(0,160) -# spo2_label.set_text(" ") -# spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -# spo2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - -# spo2_label_1 = lv.label(spo2_screen) -# spo2_label_1.set_size(240,40) -# spo2_label_1.set_pos(0,200) -# spo2_label_1.set_text("测量中.") -# spo2_label_1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -# spo2_label_1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - -# spo2_line = lv.line(spo2_screen) -# spo2_line.set_points(line_points,2) -# spo2_line.set_pos(0,240) -# spo2_line.set_size(240,10) -# spo2_line.add_style(style_line,0) - -# spo2_last_time = lv.label(spo2_screen) -# spo2_last_time.set_size(240, 15) -# spo2_last_time.set_pos(0, 250) -# spo2_last_time.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) -# spo2_last_time.set_text(" ") -# spo2_last_time.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - -# spo2_last_value = lv.label(spo2_screen) -# spo2_last_value.set_size(240, 15) -# spo2_last_value.set_pos(0, 280) -# spo2_last_value.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) -# spo2_last_value.set_text(" ") -# spo2_last_value.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -# self.meta = spo2_screen - -# self.point = 0 -# self.spo2_value = 0 -# self.timer.start(1*1000, 1, self.start_measure) -# EventMesh.publish("set_spo2_state",1)#2代表后台进入血氧测试 -# EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN) -# self.last_spo2_value = EventMesh.publish("get_old_spo2_data") -# spo2_label.set_text("--%") -# if self.last_spo2_value == 0: -# spo2_last_value.set_text(" ") -# else: -# spo2_last_value.set_text("{}%".format(self.last_spo2_value)) - -# def start_measure(self,*args): -# global spo2_screen ,spo2_label_0 ,spo2_done_img ,spo2_label ,spo2_label_1 ,spo2_line ,spo2_last_time,spo2_last_value -# self.point = self.point + 1 -# EventMesh.publish("system_sleep_rest")#防止黑屏 -# self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN) -# if self.spo2_value == 0: -# spo2_label.set_text("--%") -# else: -# spo2_label.set_text("{} %".format(self.spo2_value)) -# if self.point%4 == 0 : -# spo2_label_1.set_text("测量中..") -# if self.point%4 == 1 : -# spo2_label_1.set_text("测量中...") -# if self.point%4 == 2 : -# spo2_label_1.set_text("测量中....") -# if self.point%4 == 3 : -# spo2_label_1.set_text("测量中.") - -# if self.point > 60: #测20s -# self.spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN) -# # print("ui self.spo2_value :{}".format(self.spo2_value)) -# if self.spo2_value > 85 and self.spo2_value != None: -# EventMesh.publish("set_old_spo2_data",self.spo2_value) -# EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,self.spo2_value) -# spo2_label.set_text("{} %".format(self.spo2_value)) -# if self.spo2_value == 0: -# spo2_label.set_text(" ") -# spo2_label_1.set_text("退出,请重新测量") -# self.last_spo2_value = EventMesh.publish("get_old_spo2_data") -# spo2_last_value.set_text(" ") -# else: -# self.last_spo2_value = self.spo2_value -# spo2_last_value.set_text("{}%".format(self.last_spo2_value)) -# spo2_label_1.set_text("测量完成") -# time = EventMesh.publish("screen_get_time") -# #print("time ",time) -# rtc_time = self.rtc.datetime() -# time_time =" {}:{}".format("%02d"%(time[0][0]),"%02d"%(time[0][1]))#测量时间 -# spo2_last_time.set_text(str(rtc_time[0])+'/'+str(rtc_time[1])+'/'+str(rtc_time[2])+str(time_time)) - - - -# self.timer.stop() -# self.point = 0 -# EventMesh.publish("set_spo2_state",0)#0代表关闭测试 -# EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) -# # spo2_last_time.set_text() - -# def Close(self): -# self.timer.stop() -# get_hr_state = EventMesh.publish("get_hr_state") -# get_spo2_state = EventMesh.publish("get_spo2_state") -# if get_hr_state == 1 or get_spo2_state == 1: -# EventMesh.publish("set_spo2_state",0)#0代表关闭测试 -# EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) - -# def done_return(self): -# EventMesh.publish("load_screen", {"screen": "health"}) - -# def btn1_release(self): -# EventMesh.publish("load_screen", {"screen": "health"}) - -# def btn8_press(self): -# EventMesh.publish("watch_top_show") -# EventMesh.publish("load_screen", {"screen": "main_menu"}) - - - - - - - -# -------------------------------------------countdown screen---------------------------------------------------------- -countdown_screen = None -countdown_title = None -countdown_hour = None -countdown_mao = None -countdown_mao = None -countdown_mao1 = None -countdown_sec = None -countdown_hour_up = None -countdown_hour_up_btn = None -countdown_hour_down = None -countdown_hour_down_btn = None -countdown_min_up = None -countdown_min_up_btn = None -countdown_min_down = None -countdown_min_down_btn = None -countdown_sec_up = None -countdown_sec_up_btn = None -countdown_sec_down = None -countdown_sec_down_btn = None -countdown_reset_img = None -countdown_reset_imgbtn = None -countdown_start_img = None -countdown_start_imgbtn = None -countdown_stop_img = None -countdown_min = None -class CountdownScreen(Screen): - NAME = "countdown" - - def __init__(self): - super().__init__() - self.meta = None - self.timer = osTimer() - self.sec = 0 - self.min = 0 - self.hour = 0 - self.total = 0 - self.flag = 1 - self.g_state = 0 - self.g_end = 0 - self.total = 0 - self.time_tmp = 0 - self.timer_cb = 0 - - def initialization(self): - global countdown_screen ,countdown_title,countdown_hour ,countdown_mao ,countdown_mao ,countdown_mao1 ,\ - countdown_sec ,countdown_hour_up ,countdown_hour_up_btn ,countdown_hour_down ,countdown_hour_down_btn ,\ - countdown_min_up,countdown_min_up_btn ,countdown_min_down,countdown_min_down_btn,countdown_sec_up ,\ - countdown_sec_up_btn,countdown_sec_down ,countdown_sec_down_btn ,countdown_reset_img ,countdown_reset_imgbtn ,\ - countdown_start_img,countdown_start_imgbtn,countdown_stop_img ,countdown_min - if countdown_screen == None : - countdown_screen = lv.obj() - print("countdown_screen") - countdown_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - countdown_title = lv.label(countdown_screen) - countdown_title.set_pos(0, 20) - countdown_title.set_size(240, 20) - countdown_title.set_text("倒计时") - countdown_title.set_long_mode(lv.label.LONG.WRAP) - countdown_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - countdown_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - countdown_hour = lv.label(countdown_screen) - countdown_hour.set_pos(30, 140) - countdown_hour.set_size(60, 30) - countdown_hour.set_text("00") - countdown_hour.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT) - countdown_hour.set_long_mode(lv.label.LONG.WRAP) - countdown_hour.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) - - countdown_mao = lv.label(countdown_screen) - countdown_mao.set_pos(82, 138) - countdown_mao.set_size(30, 30) - countdown_mao.set_text(":") - countdown_mao.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT) - countdown_mao.set_long_mode(lv.label.LONG.WRAP) - countdown_mao.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) - - - countdown_min = lv.label(countdown_screen) - countdown_min.set_pos(95, 140) - countdown_min.set_size(60, 30) - countdown_min.set_text("00") - countdown_min.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT) - countdown_min.set_long_mode(lv.label.LONG.WRAP) - countdown_min.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) - - countdown_mao1 = lv.label(countdown_screen) - countdown_mao1.set_pos(146, 138) - countdown_mao1.set_size(30, 30) - countdown_mao1.set_text(":") - countdown_mao1.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT) - countdown_mao1.set_long_mode(lv.label.LONG.WRAP) - countdown_mao1.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) - - - countdown_sec = lv.label(countdown_screen) - countdown_sec.set_pos(160, 140) - countdown_sec.set_size(60, 30) - countdown_sec.set_text("00") - countdown_sec.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT) - countdown_sec.set_long_mode(lv.label.LONG.WRAP) - countdown_sec.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) - - countdown_hour_up = lv.img(countdown_screen) - countdown_hour_up.set_size(34, 30) - countdown_hour_up.set_pos(36, 100) - countdown_hour_up.set_src("U:/static/time_up.png") - countdown_hour_up.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - countdown_hour_up_btn= lv.img(countdown_screen) - countdown_hour_up_btn.set_size(62, 70) - countdown_hour_up_btn.set_pos(20, 80) - countdown_hour_up_btn.add_flag(lv.obj.FLAG.CLICKABLE) - - - countdown_hour_down = lv.img(countdown_screen) - countdown_hour_down.set_size(34, 30) - countdown_hour_down.set_pos(36, 180) - countdown_hour_down.set_src("U:/static/time_down.png") - countdown_hour_down.add_flag(lv.obj.FLAG.CLICKABLE) - countdown_hour_down.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - countdown_hour_down_btn= lv.img(countdown_screen) - countdown_hour_down_btn.set_size(62, 80) - countdown_hour_down_btn.set_pos(20, 150) - countdown_hour_down_btn.add_flag(lv.obj.FLAG.CLICKABLE) - - - countdown_min_up = lv.img(countdown_screen) - countdown_min_up.set_size(34, 30) - countdown_min_up.set_pos(99, 100) - countdown_min_up.set_src("U:/static/time_up.png") - countdown_min_up.add_flag(lv.obj.FLAG.CLICKABLE) - countdown_min_up.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - countdown_min_up_btn= lv.img(countdown_screen) - countdown_min_up_btn.set_size(64, 70) - countdown_min_up_btn.set_pos(82, 80) - countdown_min_up_btn.add_flag(lv.obj.FLAG.CLICKABLE) - - - - countdown_min_down = lv.img(countdown_screen) - countdown_min_down.set_size(34, 30) - countdown_min_down.set_pos(99, 180) - countdown_min_down.set_src("U:/static/time_down.png") - countdown_min_down.add_flag(lv.obj.FLAG.CLICKABLE) - countdown_min_down.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - countdown_min_down_btn= lv.img(countdown_screen) - countdown_min_down_btn.set_size(64, 80) - countdown_min_down_btn.set_pos(82, 150) - countdown_min_down_btn.add_flag(lv.obj.FLAG.CLICKABLE) - - - countdown_sec_up = lv.img(countdown_screen) - countdown_sec_up.set_size(34, 30) - countdown_sec_up.set_pos(165, 100) - countdown_sec_up.set_src("U:/static/time_up.png") - countdown_sec_up.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - countdown_sec_up_btn = lv.img(countdown_screen) - countdown_sec_up_btn.set_size(64, 70) - countdown_sec_up_btn.set_pos(146, 80) - countdown_sec_up_btn.add_flag(lv.obj.FLAG.CLICKABLE) - - countdown_sec_down = lv.img(countdown_screen) - countdown_sec_down.set_size(34, 30) - countdown_sec_down.set_pos(165, 180) - countdown_sec_down.set_src("U:/static/time_down.png") - countdown_sec_down.add_flag(lv.obj.FLAG.CLICKABLE) - countdown_sec_down.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - countdown_sec_down_btn = lv.img(countdown_screen) - countdown_sec_down_btn.set_size(64, 80) - countdown_sec_down_btn.set_pos(146, 150) - countdown_sec_down_btn.add_flag(lv.obj.FLAG.CLICKABLE) - - countdown_reset_img = lv.img(countdown_screen) - countdown_reset_img.set_size(99, 36) - countdown_reset_img.set_src("U:/static/stopwatch_reset.png") - countdown_reset_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - countdown_reset_img.set_pos(10, 260) - - countdown_reset_imgbtn = lv.img(countdown_screen) - countdown_reset_imgbtn.set_size(99, 70) - countdown_reset_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE) - countdown_reset_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - countdown_reset_imgbtn.set_pos(10, 240) - - - - countdown_start_img = lv.img(countdown_screen) - countdown_start_img.set_size(99, 36) - countdown_start_img.set_src("U:/static/stopwatch_play.png") - countdown_start_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - countdown_start_img.set_pos(120, 260) - - countdown_start_imgbtn = lv.img(countdown_screen) - countdown_start_imgbtn.set_size(99, 70) - countdown_start_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE) - countdown_start_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - countdown_start_imgbtn.set_pos(120, 240) - - - - countdown_stop_img = lv.img(countdown_screen) - countdown_stop_img.set_size(99, 36) - countdown_stop_img.set_src("U:/static/stopwatch_stop.png") - countdown_stop_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - countdown_stop_img.set_pos(120, 260) - countdown_stop_img.add_flag(lv.obj.FLAG.HIDDEN) - countdown_start_img.clear_flag(lv.obj.FLAG.HIDDEN) - - countdown_stop_img.add_flag(lv.obj.FLAG.HIDDEN) - countdown_reset_img.clear_flag(lv.obj.FLAG.HIDDEN) - - self.meta = countdown_screen - - countdown_sec_up_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.sec_up(e)), - lv.EVENT.CLICKED, None) - countdown_sec_down_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.sec_down(e)), - lv.EVENT.CLICKED, None) - countdown_min_up_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.min_up(e)), - lv.EVENT.CLICKED, None) - countdown_min_down_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.min_down(e)), - lv.EVENT.CLICKED, None) - countdown_hour_up_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hour_up(e)), - lv.EVENT.CLICKED, None) - countdown_hour_down_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hour_down(e)), - lv.EVENT.CLICKED, None) - countdown_start_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)), - lv.EVENT.CLICKED, None) - countdown_reset_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reset(e)), - lv.EVENT.CLICKED, None) - # countdown_stop_imgbtn.add_event_cb(lambda e: self.stop(e), - # lv.EVENT.CLICKED, None) - date_tmp = utime.localtime() - self.time_tmp = utime.mktime(date_tmp) - if self.g_state == 0: - countdown_start_img.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_stop_img.add_flag(lv.obj.FLAG.HIDDEN) - countdown_reset_img.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_hour_up.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_hour_down.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_min_up.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_min_down.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_sec_up.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_sec_down.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_sec.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_min.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_hour.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_title.clear_flag(lv.obj.FLAG.HIDDEN) - self.g_end = 0 - self.total = 0 - self.hour = 0 - self.min = 0 - self.sec = 0 - self.show_value() - if self.g_state == 1: - if self.timer_cb == 1: - EventMesh.publish("set_countdown_off_state", [0,self.g_state]) - self.timer.start(1000,1,self.fun) - - def sec_up(self,e): - EventMesh.publish("add_countdown_sec") - self.sec = EventMesh.publish("get_countdown_sec") - print("sec_up:",self.sec) - self.show_value() - - def sec_down(self,e): - EventMesh.publish("reduce_countdown_sec") - self.sec = EventMesh.publish("get_countdown_sec") - print("sec_down:",self.sec) - self.show_value() - - def min_up(self,e): - EventMesh.publish("add_countdown_min") - self.min = EventMesh.publish("get_countdown_min") - print("min_up:",self.min) - self.show_value() - - def min_down(self,e): - EventMesh.publish("reduce_countdown_min") - self.min = EventMesh.publish("get_countdown_min") - print("min_down:",self.min) - self.show_value() - - def hour_up(self,e): - EventMesh.publish("add_countdown_hour") - self.hour = EventMesh.publish("get_countdown_hour") - - print("hour_up:",self.hour) - self.show_value() - - def hour_down(self,e): - EventMesh.publish("reduce_countdown_hour") - self.hour = EventMesh.publish("get_countdown_hour") - print("hour_down:",self.hour) - self.show_value() - - def start(self,e): - global countdown_screen ,countdown_title,countdown_hour ,countdown_mao ,countdown_mao ,countdown_mao1 ,\ - countdown_sec ,countdown_hour_up ,countdown_hour_up_btn ,countdown_hour_down ,countdown_hour_down_btn ,\ - countdown_min_up,countdown_min_up_btn ,countdown_min_down,countdown_min_down_btn,countdown_sec_up ,\ - countdown_sec_up_btn,countdown_sec_down ,countdown_sec_down_btn ,countdown_reset_img ,countdown_reset_imgbtn ,\ - countdown_start_img,countdown_start_imgbtn,countdown_stop_img ,countdown_min - self.total = self.hour*60*60 + self.min*60 + self.sec - print("--00:",self.total,self.hour,self.min,self.sec,self.g_state) - if self.g_state == 1: - self.g_state = 2 - self.stop() - elif self.g_state == 2: - self.g_state = 1 - if self.total > 0: - date_tmp = utime.localtime() - timeSecond = utime.mktime(date_tmp) - print("start self.timeSecond:{}".format(timeSecond)) - EventMesh.publish("set_countdown_all_time", [self.total,timeSecond]) - if self.g_state != 2: - self.g_state = 1 - self.g_end = 0 - date_tmp = utime.localtime() - self.timeSecond = utime.mktime(date_tmp) - self.show_value() - self.timer.start(1000,1,self.fun) - countdown_hour_up.add_flag(lv.obj.FLAG.HIDDEN) - countdown_hour_down.add_flag(lv.obj.FLAG.HIDDEN) - countdown_hour_up.add_flag(lv.obj.FLAG.HIDDEN) - countdown_hour_down.add_flag(lv.obj.FLAG.HIDDEN) - countdown_min_up.add_flag(lv.obj.FLAG.HIDDEN) - countdown_min_down.add_flag(lv.obj.FLAG.HIDDEN) - countdown_sec_up.add_flag(lv.obj.FLAG.HIDDEN) - countdown_sec_down.add_flag(lv.obj.FLAG.HIDDEN) - countdown_start_img.add_flag(lv.obj.FLAG.HIDDEN) - countdown_stop_img.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_reset_img.clear_flag(lv.obj.FLAG.HIDDEN) - EventMesh.publish("set_countdown_off_state", [0,self.g_state]) - - def stop(self): - global countdown_screen ,countdown_title,countdown_hour ,countdown_mao ,countdown_mao ,countdown_mao1 ,\ - countdown_sec ,countdown_hour_up ,countdown_hour_up_btn ,countdown_hour_down ,countdown_hour_down_btn ,\ - countdown_min_up,countdown_min_up_btn ,countdown_min_down,countdown_min_down_btn,countdown_sec_up ,\ - countdown_sec_up_btn,countdown_sec_down ,countdown_sec_down_btn ,countdown_reset_img ,countdown_reset_imgbtn ,\ - countdown_start_img,countdown_start_imgbtn,countdown_stop_img ,countdown_min - print("in stop") - countdown_hour_up.add_flag(lv.obj.FLAG.HIDDEN) - countdown_hour_down.add_flag(lv.obj.FLAG.HIDDEN) - countdown_hour_up.add_flag(lv.obj.FLAG.HIDDEN) - countdown_hour_down.add_flag(lv.obj.FLAG.HIDDEN) - countdown_min_up.add_flag(lv.obj.FLAG.HIDDEN) - countdown_min_down.add_flag(lv.obj.FLAG.HIDDEN) - countdown_sec_up.add_flag(lv.obj.FLAG.HIDDEN) - countdown_sec_down.add_flag(lv.obj.FLAG.HIDDEN) - countdown_start_img.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_stop_img.add_flag(lv.obj.FLAG.HIDDEN) - countdown_reset_img.clear_flag(lv.obj.FLAG.HIDDEN) - - self.g_end = 0 - self.timer.stop() - # self.show_value() - # 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 - - - # 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.sec = self.sec - 1 - # if self.sec < 0: - # self.sec = 59 - - def Close(self): - time = EventMesh.publish("get_countdown_all_time") - if time > 0 and self.g_state == 1: - self.timer_cb = 1 - date_tmp = utime.localtime() - self.timeSecond = utime.mktime(date_tmp) - EventMesh.publish("set_countdown_off_state", [1,self.g_state]) - # print("Close self.timeSecond:{}".format(self.timeSecond)) - EventMesh.publish("set_countdown_all_time", [self.total,self.timeSecond]) - self.timer.stop() - else: - msg_tmp = EventMesh.publish("get_countdown_off_state") - self.g_state = msg_tmp[1] - EventMesh.publish("set_countdown_off_state", [0,self.g_state]) - - def reset(self,e): - global countdown_screen ,countdown_title,countdown_hour ,countdown_mao ,countdown_mao ,countdown_mao1 ,\ - countdown_sec ,countdown_hour_up ,countdown_hour_up_btn ,countdown_hour_down ,countdown_hour_down_btn ,\ - countdown_min_up,countdown_min_up_btn ,countdown_min_down,countdown_min_down_btn,countdown_sec_up ,\ - countdown_sec_up_btn,countdown_sec_down ,countdown_sec_down_btn ,countdown_reset_img ,countdown_reset_imgbtn ,\ - countdown_start_img,countdown_start_imgbtn,countdown_stop_img ,countdown_min - # print("in reset") - self.timer.stop() - self.hour = 0 - self.min = 0 - self.sec = 0 - self.g_state = 0 - self.g_end = 0 - self.total = 0 - EventMesh.publish("set_countdown_off_state", [0,self.g_state]) - EventMesh.publish("reset_time_countdown") - countdown_start_img.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_stop_img.add_flag(lv.obj.FLAG.HIDDEN) - countdown_reset_img.clear_flag(lv.obj.FLAG.HIDDEN) - - countdown_hour_up.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_hour_down.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_min_up.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_min_down.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_sec_up.clear_flag(lv.obj.FLAG.HIDDEN) - countdown_sec_down.clear_flag(lv.obj.FLAG.HIDDEN) - self.show_value() - - - def show_value(self): - global countdown_screen ,countdown_title,countdown_hour ,countdown_mao ,countdown_mao ,countdown_mao1 ,\ - countdown_sec ,countdown_hour_up ,countdown_hour_up_btn ,countdown_hour_down ,countdown_hour_down_btn ,\ - countdown_min_up,countdown_min_up_btn ,countdown_min_down,countdown_min_down_btn,countdown_sec_up ,\ - countdown_sec_up_btn,countdown_sec_down ,countdown_sec_down_btn ,countdown_reset_img ,countdown_reset_imgbtn ,\ - countdown_start_img,countdown_start_imgbtn,countdown_stop_img ,countdown_min - - countdown_sec.set_text(str("%02d"%(self.sec))) - countdown_min.set_text(str("%02d"%(self.min))) - countdown_hour.set_text(str("%02d"%(self.hour))) - - def lcd_on(self): - print("lcd_on self.timer_cb:{}".format(self.timer_cb)) - time = EventMesh.publish("get_countdown_all_time") - - if time > 0 and self.g_state != 0: - if self.g_state == 1: - if self.timer_cb != 0: - self.timer_cb = 0 - EventMesh.publish("set_countdown_off_state", [0,self.g_state]) - date_tmp = utime.localtime() - time_tmp = utime.mktime(date_tmp) - total_sec = 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 - self.show_value() - self.timer.start(1000,1,self.fun) - else: - msg_tmp = EventMesh.publish("get_countdown_off_state") - self.g_state = msg_tmp[1] - EventMesh.publish("set_countdown_off_state", [0,self.g_state]) - - else: - self.reset(0) - msg_tmp = EventMesh.publish("get_countdown_off_state") - self.g_state = msg_tmp[1] - EventMesh.publish("set_countdown_off_state", [0,self.g_state]) - - def lcd_off(self): - time = EventMesh.publish("get_countdown_all_time") - if time > 0 and self.g_state == 1: - self.timer_cb = 1 - date_tmp = utime.localtime() - self.timeSecond = utime.mktime(date_tmp) - EventMesh.publish("set_countdown_off_state", [1,self.g_state]) - EventMesh.publish("set_countdown_all_time", [self.total,self.timeSecond]) - self.timer.stop() - else: - EventMesh.publish("set_countdown_off_state", [0,self.g_state]) - - def done_return(self): - if self.g_state == 0: - self.timer.stop() - if self.g_end == 1: - EventMesh.publish("load_screen", {"screen": "countdown"}) - else: - EventMesh.publish("load_screen", {"screen": "toolbox"}) - - def btn1_release(self): - if self.g_state == 0: - self.timer.stop() - EventMesh.publish("load_screen", {"screen": "toolbox"}) - - def btn8_press(self): - if self.g_state == 0: - self.timer.stop() - EventMesh.publish("watch_top_show") - EventMesh.publish("load_screen", {"screen": "main_menu"}) - -#结束倒计时显示图标 -countdown_end_screen = None -countdown_end_img = None -countdown_end_label = None -class CountdownEndScreen(Screen): - NAME = "countdown_end" - - def __init__(self): - super().__init__() - self.meta = None - self.FIND_timer=osTimer() - self.aud = audio.Audio(0) - self.FIND_timer_count = 0 - - def initialization(self): - global countdown_end_screen ,countdown_end_img ,countdown_end_label - if countdown_end_screen == None: - countdown_end_screen = lv.obj() - print("countdown_end_screen") - countdown_end_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - countdown_end_img = lv.img(countdown_end_screen) - countdown_end_img.set_size(140, 140) - countdown_end_img.set_pos(50, 60) - countdown_end_img.set_src("U:/static/time_finish.png") - countdown_end_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - countdown_end_label = lv.label(countdown_end_screen) - countdown_end_label.set_pos(0, 240) - countdown_end_label.set_size(240, 40) - countdown_end_label.set_text("时间到") - countdown_end_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - countdown_end_label.set_long_mode(lv.label.LONG.WRAP) - countdown_end_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - self.meta = countdown_end_screen - self.FIND_timer_count = 0 - self.FIND_timer.start(3000, 1, self.FIND_timer_cb) - self.aud.play(1, 1, 'U:/static/audio_audio_haixiu.mp3') #播放声音 - - def FIND_timer_cb(self, *args): - EventMesh.publish("system_sleep_rest")#防止黑屏 - self.FIND_timer_count += 1 - if self.FIND_timer_count >= 4: #120秒 - self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) - return - self.aud.play(1, 1, 'U:/static/audio_audio_haixiu.mp3') - - def stop_FIND(self) : - self.FIND_timer.stop() - self.aud.stopAll() - - def Close(self): - self.stop_FIND() - - def done_left_to_right(self): - self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) - - def done_right_to_left(self): - self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) - - def done_bottom_to_top(self): - self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) - - def done_top_to_bottom(self): - self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) - - def done_return(self): - self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) - - def done_click(self): - self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) - - def btn1_release(self): - self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) - - def btn8_press(self): - self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "main_menu"}) - -# -------------------------------------------stopwatch screen---------------------------------------------------------- - - -stopwatch_screen = None -stopwatch_title = None -stopwatch_label_min = None -stopwatch_mao = None -stopwatch_label_sec = None -stopwatch_mao1 = None -stopwatch_label_ms = None -stopwatch_reset_img = None -stopwatch_reset_imgbtn = None -stopwatch_start_img = None -stopwatch_start_imgbtn = None -stopwatch_stop_img = None -class StopwatchScreen(Screen): - NAME = "stopwatch" - - def __init__(self): - super().__init__() - self.meta = None - self.ms_value = 0 - self.sec_value = 0 - self.min_value = 0 - self.s_state = 0 - self.total_time = 0 - self.TimeSecond = 0 - self.timer = osTimer() - - def initialization(self): - global stopwatch_screen,stopwatch_title,stopwatch_label_min,stopwatch_mao,stopwatch_label_sec ,\ - stopwatch_mao1 ,stopwatch_label_ms,stopwatch_reset_img ,topwatch_reset_imgbtn ,stopwatch_start_img ,\ - stopwatch_start_imgbtn, stopwatch_stop_img - if stopwatch_screen == None : - stopwatch_screen = lv.obj() - print("stopwatch_screen") - stopwatch_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - stopwatch_title = lv.label(stopwatch_screen) - stopwatch_title.set_pos(0, 20) - stopwatch_title.set_size(240, 20) - stopwatch_title.set_text("秒表") - stopwatch_title.set_long_mode(lv.label.LONG.WRAP) - stopwatch_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - stopwatch_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - stopwatch_label_min = lv.label(stopwatch_screen) - stopwatch_label_min.set_pos(30, 140) - stopwatch_label_min.set_size(60, 30) - stopwatch_label_min.set_text("00") - stopwatch_label_min.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT) - stopwatch_label_min.set_long_mode(lv.label.LONG.WRAP) - stopwatch_label_min.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) - - stopwatch_mao = lv.label(stopwatch_screen) - stopwatch_mao.set_pos(82, 138) - stopwatch_mao.set_size(30, 30) - stopwatch_mao.set_text(":") - stopwatch_mao.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT) - stopwatch_mao.set_long_mode(lv.label.LONG.WRAP) - stopwatch_mao.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) - - - stopwatch_label_sec = lv.label(stopwatch_screen) - stopwatch_label_sec.set_pos(95, 140) - stopwatch_label_sec.set_size(60, 30) - stopwatch_label_sec.set_text("00") - stopwatch_label_sec.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT) - stopwatch_label_sec.set_long_mode(lv.label.LONG.WRAP) - stopwatch_label_sec.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) - - stopwatch_mao1 = lv.label(stopwatch_screen) - stopwatch_mao1.set_pos(146, 138) - stopwatch_mao1.set_size(30, 30) - stopwatch_mao1.set_text(".") - stopwatch_mao1.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT) - stopwatch_mao1.set_long_mode(lv.label.LONG.WRAP) - stopwatch_mao1.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) - - - stopwatch_label_ms = lv.label(stopwatch_screen) - stopwatch_label_ms.set_pos(160, 140) - stopwatch_label_ms.set_size(60, 30) - stopwatch_label_ms.set_text("0") - stopwatch_label_ms.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT) - stopwatch_label_ms.set_long_mode(lv.label.LONG.WRAP) - stopwatch_label_ms.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) - - - - - stopwatch_reset_img = lv.img(stopwatch_screen) - stopwatch_reset_img.set_size(99, 36) - stopwatch_reset_img.set_src("U:/static/stopwatch_reset.png") - stopwatch_reset_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - stopwatch_reset_img.set_pos(10, 210) - - stopwatch_reset_imgbtn = lv.img(stopwatch_screen) - stopwatch_reset_imgbtn.set_size(99, 76) - stopwatch_reset_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE) - stopwatch_reset_imgbtn.set_pos(10, 190) - - - stopwatch_start_img = lv.img(stopwatch_screen) - stopwatch_start_img.set_size(99, 36) - stopwatch_start_img.set_src("U:/static/stopwatch_play.png") - stopwatch_start_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - stopwatch_start_img.set_pos(115, 210) - - - stopwatch_start_imgbtn = lv.img(stopwatch_screen) - stopwatch_start_imgbtn.set_size(99, 76) - stopwatch_start_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE) - stopwatch_start_imgbtn.set_pos(115, 190) - - - stopwatch_stop_img = lv.img(stopwatch_screen) - stopwatch_stop_img.set_size(99, 36) - stopwatch_stop_img.set_src("U:/static/stopwatch_stop.png") - stopwatch_stop_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - stopwatch_stop_img.set_pos(115, 210) - stopwatch_stop_img.add_flag(lv.obj.FLAG.HIDDEN) - stopwatch_start_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)), - lv.EVENT.CLICKED, None) - - stopwatch_reset_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reset(e)), - lv.EVENT.CLICKED, None) - self.meta = stopwatch_screen - - if self.s_state == 0: - self.reset(0) - if self.s_state == 1: - date_tmp = utime.localtime() - timeSecond = utime.mktime(date_tmp) - reduce = timeSecond - self.TimeSecond - self.total_time = self.total_time+reduce - if self.total_time >= 99*60: - self.total_time = 99*60 - self.ms_value = 0 - stopwatch_start_img.clear_flag(lv.obj.FLAG.HIDDEN) - stopwatch_stop_img.add_flag(lv.obj.FLAG.HIDDEN) - self.show_value() - else: - self.timer.start(100,1,self._fun) - - - def start(self, e): - global stopwatch_screen,stopwatch_title,stopwatch_label_min,stopwatch_mao,stopwatch_label_sec ,\ - stopwatch_mao1 ,stopwatch_label_ms,stopwatch_reset_img ,topwatch_reset_imgbtn ,stopwatch_start_img ,\ - stopwatch_start_imgbtn, stopwatch_stop_img - print("stopwatch start:{}".format(self.s_state)) - #self.timer.start(100, 1, self._fun) - - if self.s_state == 1: - self.s_state = 2 - self.paused() - elif self.s_state == 2: - self.s_state = 1 - if self.s_state != 2: - self.s_state = 1 - if self.total_time >= 99*60: - self.ms_value = 0 - self.sec_value = 0 - self.min_value = 0 - self.total_time = 0 - self.show_value() - self.timer.start(100,1,self._fun) - stopwatch_stop_img.clear_flag(lv.obj.FLAG.HIDDEN) - stopwatch_start_img.add_flag(lv.obj.FLAG.HIDDEN) - # print("ms_value start:{} {} {}".format(self.ms_value,self.sec_value,self.min_value)) - - - - def paused(self): - global stopwatch_screen,stopwatch_title,stopwatch_label_min,stopwatch_mao,stopwatch_label_sec ,\ - stopwatch_mao1 ,stopwatch_label_ms,stopwatch_reset_img ,topwatch_reset_imgbtn ,stopwatch_start_img ,\ - stopwatch_start_imgbtn, stopwatch_stop_img - print("stopwatch pause") - stopwatch_start_img.clear_flag(lv.obj.FLAG.HIDDEN) - stopwatch_stop_img.add_flag(lv.obj.FLAG.HIDDEN) - self.timer.stop() - self.show_value() - - def reset(self,e): - global stopwatch_screen,stopwatch_title,stopwatch_label_min,stopwatch_mao,stopwatch_label_sec ,\ - stopwatch_mao1 ,stopwatch_label_ms,stopwatch_reset_img ,topwatch_reset_imgbtn ,stopwatch_start_img ,\ - stopwatch_start_imgbtn, stopwatch_stop_img - print("stopwatch reset") - - self.sec_value = 0 - self.min_value = 0 - self.ms_value = 0 - self.s_state = 0 - self.total_time = 0 - stopwatch_start_img.clear_flag(lv.obj.FLAG.HIDDEN) - stopwatch_stop_img.add_flag(lv.obj.FLAG.HIDDEN) - self.timer.stop() - self.show_value() - - def _fun(self,e): - self.ms_value += 1 - if self.ms_value > 9: - self.ms_value = 0 - self.sec_value += 1 - self.total_time+=1 - if self.sec_value > 59: - self.sec_value = 0 - if self.total_time > 99*60: - self.total_time = 99*60 - self.timer.stop() - stopwatch_start_img.clear_flag(lv.obj.FLAG.HIDDEN) - stopwatch_stop_img.add_flag(lv.obj.FLAG.HIDDEN) - - self.show_value() - - def show_value(self): - global stopwatch_screen,stopwatch_title,stopwatch_label_min,stopwatch_mao,stopwatch_label_sec ,\ - stopwatch_mao1 ,stopwatch_label_ms,stopwatch_reset_img ,topwatch_reset_imgbtn ,stopwatch_start_img ,\ - stopwatch_start_imgbtn, stopwatch_stop_img - if self.total_time >= 99*60: - self.total_time = 99*60 - test_s = self.total_time % 60 - test_m = self.total_time//60 - # print("test_s:{} test_m:{} self.total_time:{}".format(test_s,test_m,self.total_time)) - - stopwatch_label_ms.set_text(str("%d"%(self.ms_value))) - stopwatch_label_sec.set_text(str("%02d"%(test_s))) - stopwatch_label_min.set_text(str("%02d"%(test_m))) - - def Close(self): - if self.s_state == 1: - self.timer.stop() - date_tmp = utime.localtime() - self.TimeSecond = utime.mktime(date_tmp) - - def lcd_on(self): - if self.s_state == 1: - date_tmp = utime.localtime() - timeSecond = utime.mktime(date_tmp) - reduce = timeSecond - self.TimeSecond - self.total_time = self.total_time+reduce - total = self.total_time // 60 - if total >= 99: - self.total_time = 99*60 - self.timer.stop() - self.s_state = 0 - self.ms_value = 0 - stopwatch_start_img.clear_flag(lv.obj.FLAG.HIDDEN) - stopwatch_stop_img.add_flag(lv.obj.FLAG.HIDDEN) - self.show_value() - else: - - print("stopwatch reset start:{}".format(self.s_state)) - #self.timer.start(100, 1, self._fun) - self.show_value() - self.timer.start(100,1,self._fun) - stopwatch_stop_img.clear_flag(lv.obj.FLAG.HIDDEN) - stopwatch_start_img.add_flag(lv.obj.FLAG.HIDDEN) - # print("ms_value start:{} {} {}".format(self.ms_value,self.sec_value,self.min_value)) - - pass - - def lcd_off(self): - if self.s_state == 1: - date_tmp = utime.localtime() - timeSecond = utime.mktime(date_tmp) - self.TimeSecond = timeSecond - self.timer.stop() - pass - - def done_return(self): - if self.s_state == 0: - self.timer.stop() - EventMesh.publish("load_screen", {"screen": "toolbox"}) - - def btn1_release(self): - if self.s_state == 0: - self.timer.stop() - EventMesh.publish("load_screen", {"screen": "toolbox"}) - - def btn8_press(self): - if self.s_state == 0: - self.timer.stop() - EventMesh.publish("watch_top_show") - EventMesh.publish("load_screen", {"screen": "main_menu"}) - -FIND_screen = None -watchface_mpsignal_img = None -class UIFINDScreen(Screen): - NAME = "FIND" - def __init__(self): - super().__init__() - self.read_data = {} - self.volum_size = 8 - check_volum = ql_fs.path_exists("/usr/static/storage_file/config.json") - if check_volum == True : - with open("/usr/static/storage_file/config.json","r") as fd:#音频文件编号 - self.read_data = ujson.load(fd) - if self.read_data != {}: - b = str("volum") in self.read_data.keys() - if b == True: - self.volum_size = self.read_data["volum"] - else: - self.volum_size = 8 - else: - self.volum_size = 8 - else: - self.volum_size = 8 - self.aud = audio.Audio(0) - self.aud.set_pa(Pin.GPIO29) - self.aud.setVolume(self.volum_size) - self.FIND_timer = osTimer() - self.FIND_timer_count = 0 - - self.meta = None - - def initialization(self): - self.meta = FIND_screen - - def post_processor_after_initialization(self): - self.FIND_timer_count = 0 - print("self.FIND_timer_count:{}".format(self.FIND_timer_count)) - self.FIND_timer.start(3000, 1, self.FIND_timer_cb) - self.aud.play(1, 1, 'U:/static/audio_audio_haixiu.mp3') #播放声音 - - def FIND_timer_cb(self, *args): - self.aud.play(1, 1, 'U:/static/audio_audio_haixiu.mp3') - self.FIND_timer_count += 1 - if self.FIND_timer_count > 20: #120秒 - self.stop_FIND() - - def stop_FIND(self) : - self.FIND_timer.stop() - self.aud.stop() #播放声音 - - - def Close(self): - print("self.FIND_timer_Close") - self.FIND_timer.stop() - self.aud.stop() #播放声音 - - def done_left_to_right(self): - self.stop_FIND() - - def done_right_to_left(self): - self.stop_FIND() - def done_bottom_to_top(self): - self.stop_FIND() - - def done_top_to_bottom(self): - self.stop_FIND() - - def done_return(self): - self.stop_FIND() - - def done_click(self): - self.stop_FIND() - - - def btn1_release(self): - self.stop_FIND() - - - def btn8_press(self): - self.stop_FIND() - -Lowpower_screen = None -Lowpower_screen_img = None -class LowPowerScreen(Screen): - NAME = "LOW_POWER" - def __init__(self): - super().__init__() - self.meta = None - - def initialization(self): - global Lowpower_screen ,Lowpower_screen_img - if Lowpower_screen == None : - Lowpower_screen = lv.obj() - print("Lowpower_screen") - Lowpower_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - # add style for watchface - Lowpower_screen.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT) - #进入图片 - Lowpower_screen_img = lv.img(Lowpower_screen) - Lowpower_screen_img.set_pos(int(40),int(45)) - Lowpower_screen_img.set_size(160,230) - Lowpower_screen_img.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - Lowpower_screen_img.add_flag(lv.obj.FLAG.CLICKABLE) - Lowpower_screen_img.set_src("U:/static/low_power.png") - Lowpower_screen_img.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT) - self.meta = Lowpower_screen - - def done_left_to_right(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - def done_right_to_left(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - def done_bottom_to_top(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - def done_top_to_bottom(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - def done_return(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - def done_click(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) - - def btn8_press(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) -sos_screen = None -sos_screen_label = None -sos_screen_label_p = None - -#sos求组提示界面 -class sosScreen(Screen): - NAME = "SOS_POPUP" - def __init__(self): - super().__init__() - self.meta = None - self.timer = osTimer() - self.meta_type = "popup" - self.count = 0 - - def initialization(self): - global sos_screen ,sos_screen_label - if sos_screen == None : - sos_screen = lv.obj() - print("SOS_POPUP") - sos_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - # add style for watchface - sos_screen.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT) - #进入图片 - - sos_screen_label = lv.label(sos_screen) - sos_screen_label.set_pos(0, 20) - sos_screen_label.set_size(240, 30) - sos_screen_label.set_text("SOS") - sos_screen_label.add_style(style_font_youyuan_20_red, lv.PART.MAIN | lv.STATE.DEFAULT) - sos_screen_label.set_long_mode(lv.label.LONG.WRAP) - sos_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - - - sos_screen_label = lv.label(sos_screen) - sos_screen_label.set_text("是否拨打紧急\n求助电话?") - sos_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - sos_screen_label.set_size(240, 50) - sos_screen_label.set_pos(0,65) - sos_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - sos_screen_label = lv.label(sos_screen) - sos_screen_label.set_text("无操作10s后\n自动拨打") - sos_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - sos_screen_label.set_size(240, 50) - sos_screen_label.set_pos(0,140) - sos_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - - sos_screen_confirm_img = lv.img(sos_screen) - sos_screen_confirm_img.set_size(176, 46) - sos_screen_confirm_img.set_pos(32, 210) - sos_screen_confirm_img.set_src("U:/static/off_icon.png") - sos_screen_confirm_img.add_flag(lv.obj.FLAG.CLICKABLE) - sos_screen_confirm_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - sos_screen_confirm_label = lv.label(sos_screen_confirm_img) - sos_screen_confirm_label.set_text("确定") - sos_screen_confirm_label.align(lv.ALIGN.CENTER, 0, 5) - sos_screen_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - sos_screen_return = lv.img(sos_screen) - sos_screen_return.set_size(176, 46) - sos_screen_return.set_pos(32, 270) - sos_screen_return.set_src("U:/static/cancel_icon.png") - sos_screen_return.add_flag(lv.obj.FLAG.CLICKABLE) - sos_screen_return.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - sos_screen_return_label = lv.label(sos_screen_return) - sos_screen_return_label.set_text("取消") - sos_screen_return_label.align(lv.ALIGN.CENTER, 0, 5) - sos_screen_return_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - sos_screen_return_label.set_ext_click_area(20) - - self.meta = sos_screen - sos_screen_confirm_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.timer_comfirm_cb(e)), - lv.EVENT.CLICKED, None) - - sos_screen_return.add_event_cb(lambda e: EventMesh.callback_wrapper(self.timer_cancel_cb(e)), - lv.EVENT.CLICKED, None) - - def timer_comfirm_cb(self,e): - EventMesh.publish("set_sos_flag", 1) - - def timer_cancel_cb(self,e): - EventMesh.publish("return_prev_screen") - - def post_processor_before_initialization(self): - self.count = 0 - self.timer.start(5000,1,self.timer_cb_onescond) - - def timer_cb_onescond(self,e): - EventMesh.publish("system_sleep_rest")#防止黑屏 - self.count+=1 - if self.count >= 2: - self.count = 0 - EventMesh.publish("set_sos_flag", 1) - - def Close(self): - self.timer.stop() - - def done_left_to_right(self): - EventMesh.publish("return_prev_screen") - pass - def done_right_to_left(self): - EventMesh.publish("return_prev_screen") - pass - def done_bottom_to_top(self): - EventMesh.publish("return_prev_screen") - pass - def done_top_to_bottom(self): - EventMesh.publish("return_prev_screen") - pass - def done_return(self): - EventMesh.publish("return_prev_screen") - pass - def done_click(self): - #EventMesh.publish("return_prev_screen") - pass - - def btn8_press(self): - - pass - def btn1_press(self): - EventMesh.publish("return_prev_screen") - pass - def btn1_release(self): - EventMesh.publish("return_prev_screen") - pass - - -no_sos_screen = None -no_sos_screen_label = None - -#没有设置紧急联系人的号码 -class noSosDataScreen(Screen): - NAME = "NO_SOS_POPUP" - def __init__(self): - super().__init__() - self.meta = None - self.meta_type = "popup" - self.count = 0 - self.timer = osTimer() - - def initialization(self): - global no_sos_screen ,no_sos_screen_label - if no_sos_screen == None : - no_sos_screen = lv.obj() - print("NO_SOS_POPUP") - no_sos_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) - # add style for watchface - no_sos_screen.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT) - #进入图片 - - no_sos_screen_label = lv.label(no_sos_screen) - no_sos_screen_label.set_pos(0, 110) - no_sos_screen_label.set_size(240, 80) - no_sos_screen_label.set_text("请在手机app上设置\n紧急联系人号码") - no_sos_screen_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - no_sos_screen_label.set_long_mode(lv.label.LONG.WRAP) - no_sos_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - - - self.meta = no_sos_screen - def post_processor_before_initialization(self): - self.count = 0 - self.timer.start(1000,1,self.timer_cb_onescond) - - def Close(self): - self.timer.stop() - - def timer_cb_onescond(self,e): - EventMesh.publish("system_sleep_rest")#防止黑屏 - self.count+=1 - if self.count >= 10: - self.count = 0 - EventMesh.publish("return_prev_screen") - - - def done_left_to_right(self): - EventMesh.publish("return_prev_screen") - pass - def done_right_to_left(self): - EventMesh.publish("return_prev_screen") - pass - def done_bottom_to_top(self): - EventMesh.publish("return_prev_screen") - pass - def done_top_to_bottom(self): - EventMesh.publish("return_prev_screen") - pass - def done_return(self): - EventMesh.publish("return_prev_screen") - pass - def done_click(self): - EventMesh.publish("return_prev_screen") - pass - - def btn8_press(self): - - pass - def btn1_press(self): - EventMesh.publish("return_prev_screen") - pass - def btn1_release(self): - EventMesh.publish("return_prev_screen") - pass - - - - -system_init_screen = None -system_init_label = None -class SystemInitScreen(Screen): - #系统初始化中... - NAME = "system_init" - - def __init__(self): - super().__init__() - self.meta = None - self.system_init_timer=osTimer() - self.system_init_timer_count = 0 - - def initialization(self): - global system_init_screen ,system_init_label - if system_init_screen == None: - system_init_screen = lv.obj() - print("Lowpower_screen") - system_init_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - - system_init_label = lv.label(system_init_screen) - system_init_label.set_pos(0, 150) - system_init_label.set_size(240, 40) - system_init_label.set_text("系统初始化中") - system_init_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - system_init_label.set_long_mode(lv.label.LONG.WRAP) - system_init_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) - self.meta = system_init_screen - self.system_init_timer_count = 0 - self.system_init_timer.start(1000, 1, self.system_init_timer_cb) - - def system_init_timer_cb(self, *args): - EventMesh.publish("system_sleep_rest")#防止黑屏 - self.system_init_timer_count += 1 - if self.system_init_timer_count > 4: - self.system_init_timer_count = 1 - if system_init_screen != None: - - system_init_label_str = "系统初始化中" - if self.system_init_timer_count == 1: - system_init_label.set_text("系统初始化中.") - elif self.system_init_timer_count == 2: - system_init_label.set_text("系统初始化中..") - elif self.system_init_timer_count == 3: - system_init_label.set_text("系统初始化中...") - else: - system_init_label.set_text("系统初始化中....") - - def Close(self): - self.system_init_timer.stop() - #from usr.ui_WatchFaceScreen import WatchFaceScreen class UI(object): @@ -5943,7 +50,7 @@ class UI(object): self.screen_old = None self.screen_prev = None self.screen_list = [] - self.lv = lv + #self.lv = lv self.system_sleep_timer = osTimer() self.system_sleep_timer_count = 0 self.sleep_flag = 1 @@ -5983,27 +90,27 @@ class UI(object): self.sleep_lock = 0 def post_processor_after_instantiation(self): - EventMesh.subscribe("load_screen", self.load_screen_cb) + # EventMesh.subscribe("load_screen", self.load_screen_cb) - EventMesh.subscribe("btn1_press", self.btn_press) - EventMesh.subscribe("btn8_press", self.btn_press) - EventMesh.subscribe("btn8_long_press", self.btn_press) + # EventMesh.subscribe("btn1_press", self.btn_press) + # EventMesh.subscribe("btn8_press", self.btn_press) + # EventMesh.subscribe("btn8_long_press", self.btn_press) - EventMesh.subscribe("btn1_release", self.btn_release) - EventMesh.subscribe("btn8_release", self.btn_release) + # EventMesh.subscribe("btn1_release", self.btn_release) + # EventMesh.subscribe("btn8_release", self.btn_release) - EventMesh.subscribe("done_left_to_right", self.ui_press) - EventMesh.subscribe("done_right_to_left", self.ui_press) - EventMesh.subscribe("done_bottom_to_top", self.ui_press) - EventMesh.subscribe("done_top_to_bottom", self.ui_press) - EventMesh.subscribe("done_return", self.ui_press) - EventMesh.subscribe("done_click", self.ui_press) - EventMesh.subscribe("done_error", self.ui_press) - EventMesh.subscribe("done_press", self.ui_press) - EventMesh.subscribe("call_in", self.publish_call_in) + # EventMesh.subscribe("done_left_to_right", self.ui_press) + # EventMesh.subscribe("done_right_to_left", self.ui_press) + # EventMesh.subscribe("done_bottom_to_top", self.ui_press) + # EventMesh.subscribe("done_top_to_bottom", self.ui_press) + # EventMesh.subscribe("done_return", self.ui_press) + # EventMesh.subscribe("done_click", self.ui_press) + # EventMesh.subscribe("done_error", self.ui_press) + # EventMesh.subscribe("done_press", self.ui_press) + # EventMesh.subscribe("call_in", self.publish_call_in) - EventMesh.subscribe("get_lcd_state", self.get_lcd_state) - EventMesh.subscribe("set_lcd_state", self.set_lcd_state) + # EventMesh.subscribe("get_lcd_state", self.get_lcd_state) + # EventMesh.subscribe("set_lcd_state", self.set_lcd_state) #EventMesh.subscribe("call_in", self.publish_call_in) #EventMesh.subscribe("set_bg_img", self.set_bg_img) @@ -6011,14 +118,14 @@ class UI(object): EventMesh.subscribe(constants.EVENT.SYSTEM_SLEEP, self.system_sleep) EventMesh.subscribe(constants.EVENT.SYSTEM_UP, self.system_up) EventMesh.subscribe("system_sleep_rest", self.system_sleep_rest) - EventMesh.subscribe("set_UI_high_priority", self.set_UI_high_priority) - EventMesh.subscribe("get_UI_high_priority", self.get_UI_high_priority) + # EventMesh.subscribe("set_UI_high_priority", self.set_UI_high_priority) + # EventMesh.subscribe("get_UI_high_priority", self.get_UI_high_priority) - EventMesh.subscribe("set_interrup_incall", self.set_interrup_incall) - EventMesh.subscribe("get_interrup_incall", self.get_interrup_incall) - EventMesh.subscribe("get_screen_NAME",self.get_screen_NAME) + # EventMesh.subscribe("set_interrup_incall", self.set_interrup_incall) + # EventMesh.subscribe("get_interrup_incall", self.get_interrup_incall) + # EventMesh.subscribe("get_screen_NAME",self.get_screen_NAME) EventMesh.subscribe("publish_message_event_ui",self.publish_message_event_ui) - EventMesh.subscribe("return_prev_screen",self.return_prev_screen) + # EventMesh.subscribe("return_prev_screen",self.return_prev_screen) self.system_sleep_timer.start(1000, 1, self.system_sleep_timer_cb) @@ -6066,88 +173,7 @@ class UI(object): #print("system_sleep_rest!!!!!") self.system_sleep_timeout_rest() - def ui_press(self, event, key): - screen_NAME = EventMesh.publish("get_screen_NAME") - if screen_NAME == "system_init": - return - self.system_sleep_timeout_rest() - #print("ui press {}".format(event)) - if event == "done_left_to_right": - self.screen.done_left_to_right() - if event == "done_right_to_left": - self.screen.done_right_to_left() - if event == "done_bottom_to_top": - self.screen.done_bottom_to_top() - if event == "done_top_to_bottom": - self.screen.done_top_to_bottom() - if event == "done_return": - self.screen.done_return() - if event == "done_click": - self.screen.done_click() - # if event == "done_press": - # self.system_sleep_timeout_rest() - def btn_press(self, event, key): - screen_NAME = EventMesh.publish("get_screen_NAME") - if screen_NAME == "system_init": - return - print("btn_press: {}".format(event)) - #主表盘按电源键,息屏 - - #息屏状态按按钮都亮屏 - - - if self.main_flag != 1 and self.sleep_flag == 0: - if event == "btn8_long_press": - if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡时触发sos报警 无卡时自动关机 - sos_number = EventMesh.publish("get_dial_sos_number") - if sos_number != None: - if len(sos_number) != 0: - screen_NAME = EventMesh.publish("get_screen_NAME") - if screen_NAME != None: - if screen_NAME != "SOS_POPUP": - EventMesh.publish("load_screen", {"screen": "SOS_POPUP"}) - else: - EventMesh.publish("load_screen", {"screen": "NO_SOS_POPUP"}) - else: - EventMesh.publish("load_screen", {"screen": "no_sim_power_screen"}) - else: - self.__lcd_on() - return - # if event == "btn1_press": - # self.screen.btn1_press() - # self.__lcd_on() - if event == "btn8_press": - self.screen.btn8_press() - if event == "btn8_long_press": - if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡时触发sos报警 无卡时自动关机 - sos_number = EventMesh.publish("get_dial_sos_number") - if sos_number != None: - if len(sos_number) != 0: - screen_NAME = EventMesh.publish("get_screen_NAME") - if screen_NAME != None: - if screen_NAME != "SOS_POPUP": - EventMesh.publish("load_screen", {"screen": "SOS_POPUP"}) - else: - EventMesh.publish("load_screen", {"screen": "NO_SOS_POPUP"}) - else: - EventMesh.publish("load_screen", {"screen": "no_sim_power_screen"}) - - if event == "btn1_press": - pass - - - - def btn_release(self, event, msg): - screen_NAME = EventMesh.publish("get_screen_NAME") - if screen_NAME == "system_init": - return - print("btn_release: {}".format(event)) - # if self.main_flag != 1 and self.sleep_flag == 0: - # self.__lcd_on() - # return - # if event == "btn1_release": - - # self.screen.btn1_release() + def __lcd_on(self): self.system_sleep_timeout_rest() @@ -6167,7 +193,7 @@ class UI(object): EventMesh.publish("set_lcd_state",self.sleep_flag) utime.sleep_ms(2) - lv.autoSleep(0) + #lv.autoSleep(0) pm.autosleep(0) pm.sclkEx_set(0, 1, 5) utime.sleep_ms(60) @@ -6176,9 +202,6 @@ class UI(object): self.sleep_lock = 0 - def publish_call_in(self, event, msg): - EventMesh.publish("load_screen", {"screen": "dialing", "meta": msg}) - def __lcd_off(self): if self.sleep_flag == 1 : @@ -6191,25 +214,23 @@ class UI(object): #lcd_ctrl.write(0) # - lv.autoSleep(1) + #lv.autoSleep(1) pm.autosleep(1) pm.sclkEx_set(1, 1, 5) - utime.sleep_ms(2) + #utime.sleep_ms(2) #utime.sleep_ms(80) - EventMesh.publish("set_lcd_state",self.sleep_flag) + #EventMesh.publish("set_lcd_state",self.sleep_flag) self.sleep_lock = 0 self.system_sleep_timer.stop() EventMesh.publish("Hsensor_set_sleep") #让系统更快休眠 def system_sleep(self, event, msg) : - pass - # self.__lcd_off() + self.__lcd_off() def system_up(self, event, msg): - pass - # self.__lcd_on() + self.__lcd_on() def system_sleep_timer_cb(self, *args): #print("system_sleep_timer_count:{}".format(self.system_sleep_timer_count)) @@ -6219,7 +240,7 @@ class UI(object): self.system_sleep_timer_count += 1 if self.system_sleep_timer_count >= time : self.system_sleep_timer_count = 0 - # self.__lcd_off() + self.__lcd_off() def system_sleep_timeout_rest(self) : #print("system_sleep_timeout_rest") @@ -6262,8 +283,8 @@ class UI(object): if self.screen_old != None : self.screen_old.Close() #先关闭上一次界面 - self.lv.img.cache_invalidate_src(None) #清img cache - self.lv.img.cache_set_size(16) #开img cache + # self.lv.img.cache_invalidate_src(None) #清img cache + # self.lv.img.cache_set_size(16) #开img cache if self.screen_old.meta_type != "popup": #不是弹窗,保存上一个界面,用来返回 self.screen_prev = self.screen_old # self.screen_old = self.screen @@ -6275,8 +296,8 @@ class UI(object): # self.screen.initialization() print("load_screen.load()") - self.screen.load() - self.lv.scr_load(self.screen.get_meta()) + # self.screen.load() + # self.lv.scr_load(self.screen.get_meta()) self.screen.post_processor_after_initialization() # self.__lcd_on() diff --git a/2.sdk/project/D10/usr/static/storage_file/wechat_record.json b/2.sdk/project/D10/usr/static/storage_file/wechat_record.json new file mode 100644 index 00000000..3c028156 --- /dev/null +++ b/2.sdk/project/D10/usr/static/storage_file/wechat_record.json @@ -0,0 +1 @@ +{ "a": "1" } \ No newline at end of file