From: dxy15521469561 <1731678236@qq.com> Date: Wed, 18 Oct 2023 02:51:19 +0000 (+0800) Subject: d10: X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=91e6b09e321caf94c272d21a22626aa71239709f;p=mirrors%2FASR1603_G5.git d10: 死机问题 K01:部分界面优化 --- 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 246bcd21..d7825f8a 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 @@ -75,12 +75,16 @@ class intervManager(Abstract): self.alarm_timer_count = 0 self.old_min = 0 self.interInfo_queue = Queue() + _thread.stack_size(10*1024) _thread.start_new_thread(self.interInfo_queue_thread, ()) + _thread.stack_size(8*1024) EventMesh.subscribe("publish_message_event_interInfo",self.publish_message_event_interInfo) self.audio_event_queue = Queue() + _thread.stack_size(10*1024) _thread.start_new_thread(self.audio_event_queue_thread, ()) + _thread.stack_size(8*1024) EventMesh.subscribe("publish_message_event_audio",self.publish_message_event_audio) self.record_test = audio.Record() @@ -1690,7 +1694,10 @@ class BtnDevice(Abstract): self.led_state = 0 self.btnInfo_queue = Queue() + _thread.stack_size(10*1024) _thread.start_new_thread(self.btnInfo_queue_thread, ()) + _thread.stack_size(8*1024) + EventMesh.subscribe("publish_message_event_btnInfo",self.publish_message_event_btnInfo) EventMesh.subscribe("close_wechat_btn_timer", self.close_wechat_btn_timer)#来电强制关闭微聊语音 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 cdc0a4a1..1485da3a 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 @@ -123,9 +123,12 @@ class ledEventManager(Abstract):#灯事件 self.led_mode = 0 self.working_led_mode = None self.ledInfo_queue = Queue() + _thread.stack_size(10*1024) _thread.start_new_thread(self.ledInfo_queue_thread, ()) + _thread.stack_size(8*1024) EventMesh.subscribe("publish_message_event_ledInfo",self.publish_message_event_ledInfo) pass + def post_processor_after_instantiation(self): 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 0b9a4ae8..2e6101aa 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 @@ -645,7 +645,10 @@ class DeviceInfoManager(Abstract): def __init__(self): self.DeviceInfo_queue = Queue() + _thread.stack_size((9+6)*1024) _thread.start_new_thread(self.DeviceInfo_queue_thread, ()) + _thread.stack_size(8*1024) + EventMesh.subscribe("publish_message_event_DeviceInfo",self.publish_message_event_DeviceInfo) self.key = "" self.imei = "" @@ -1071,11 +1074,11 @@ class DeviceInfoManager(Abstract): if temp != None: if temp != 0: EventMesh.publish("set_history_temp_value",temp) - EventMesh.publish("play_temp_value",temp)#播放体温数值 + # EventMesh.publish("play_temp_value",temp)#播放体温数值 EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp]) else: EventMesh.publish("set_history_temp_value",0) - EventMesh.publish("play_temp_value",0)#播放体温数值 + # EventMesh.publish("play_temp_value",0)#播放体温数值 EventMesh.publish(constants.EVENT.STOP_TEMP) print("AUTO temp:{} tmp_f:{} tmp_f_tmp:{} tmp_d:{} tmp_d_tmp:{}".format(temp,tmp_f,tmp_f_tmp,tmp_d,tmp_d_tmp)) @@ -1109,11 +1112,11 @@ class DeviceInfoManager(Abstract): if temp != None: if temp != 0: EventMesh.publish("set_history_temp_value",temp) - EventMesh.publish("play_temp_value",temp)#播放体温数值 + # EventMesh.publish("play_temp_value",temp)#播放体温数值 EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp]) else: EventMesh.publish("set_history_temp_value",0) - EventMesh.publish("play_temp_value",0)#播放体温数值 + # EventMesh.publish("play_temp_value",0)#播放体温数值 EventMesh.publish(constants.EVENT.STOP_TEMP) print("once temp:{} tmp_f:{} tmp_f_tmp:{} tmp_d:{} tmp_d_tmp:{}".format(temp,tmp_f,tmp_f_tmp,tmp_d,tmp_d_tmp)) @@ -1159,11 +1162,11 @@ class DeviceInfoManager(Abstract): if temp != None: if temp != 0: EventMesh.publish("set_history_temp_value",temp) - EventMesh.publish("play_temp_value",temp)#播放体温数值 + # EventMesh.publish("play_temp_value",temp)#播放体温数值 EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp]) else: EventMesh.publish("set_history_temp_value",0) - EventMesh.publish("play_temp_value",0)#播放体温数值 + # EventMesh.publish("play_temp_value",0)#播放体温数值 EventMesh.publish(constants.EVENT.STOP_TEMP) print("AUTO once temp:{} tmp_f:{} tmp_f_tmp:{} tmp_d:{} tmp_d_tmp:{}".format(temp,tmp_f,tmp_f_tmp,tmp_d,tmp_d_tmp)) @@ -1186,11 +1189,12 @@ class DeviceInfoManager(Abstract): if self.get_hr_state == 2 and self.HR_state == 1:#自动检测的心率还在测量立马关了测试 heart_value = EventMesh.publish(constants.EVENT.GET_HEART) if heart_value > 50 and heart_value != None: - EventMesh.publish("play_hr_value",heart_value)#测量成功 + # EventMesh.publish("play_hr_value",heart_value)#测量成功 EventMesh.publish("set_history_hr_value",heart_value) EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value) else: - EventMesh.publish("play_hr_value",0)#测量失败 + pass + # EventMesh.publish("play_hr_value",0)#测量失败 print("stop debug1") EventMesh.publish(constants.EVENT.STOP_HEART) self.HR_state = 0 @@ -1198,11 +1202,12 @@ class DeviceInfoManager(Abstract): self.HR_state = 0 spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN) if spo2_value > 85 and spo2_value != None: - EventMesh.publish("play_spo2_value",spo2_value) + # EventMesh.publish("play_spo2_value",spo2_value) EventMesh.publish("set_history_spo2_value",spo2_value) EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value) else: - EventMesh.publish("play_spo2_value",0) + pass + # EventMesh.publish("play_spo2_value",0) EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) self.old_time = self.mearsure_timer @@ -1214,21 +1219,25 @@ class DeviceInfoManager(Abstract): EventMesh.publish(constants.EVENT.STOP_HEART) heart_value = EventMesh.publish(constants.EVENT.GET_HEART) if heart_value > 50 and heart_value != None: - EventMesh.publish("play_hr_value",heart_value) + + # EventMesh.publish("play_hr_value",heart_value) EventMesh.publish("set_history_hr_value",heart_value) EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value) else: - EventMesh.publish("play_hr_value",0) + pass + # EventMesh.publish("play_hr_value",0) elif self.get_spo2_state == 3: EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN) if spo2_value > 85 and spo2_value != None: + # EventMesh.publish("play_spo2_value",0) EventMesh.publish("set_history_spo2_value",spo2_value) EventMesh.publish("set_old_spo2_data",spo2_value) EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value) else: - EventMesh.publish("play_hr_value",0) + pass + # EventMesh.publish("play_spo2_value",0) self.HR_state = 0 self.SENSOR_time = time_tmp @@ -1250,11 +1259,12 @@ class DeviceInfoManager(Abstract): heart_value = EventMesh.publish(constants.EVENT.GET_HEART) print("heart_value:{}".format(heart_value)) if heart_value > 50 and heart_value != None: - EventMesh.publish("play_hr_value",heart_value) + # EventMesh.publish("play_hr_value",heart_value) EventMesh.publish("set_history_hr_value",heart_value) EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据 else: - EventMesh.publish("play_hr_value",0) + pass + # EventMesh.publish("play_hr_value",0) #获取心率数据上传数据app print("STOP_HEART:") @@ -1307,9 +1317,10 @@ class DeviceInfoManager(Abstract): if heart_value > 50 and heart_value != None: EventMesh.publish("set_history_hr_value",heart_value) EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据 - EventMesh.publish("play_hr_value",heart_value) + # EventMesh.publish("play_hr_value",heart_value) else: - EventMesh.publish("play_hr_value",0) + pass + # EventMesh.publish("play_hr_value",0) if self.Spo2_Need_Open == 0 and self.get_spo2_state == 3: EventMesh.publish("set_spo2_state",3)#2代表后台进入血氧测试 @@ -1332,10 +1343,11 @@ class DeviceInfoManager(Abstract): if spo2_value > 85 and spo2_value != None: EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value) - EventMesh.publish("play_spo2_value",spo2_value) + # EventMesh.publish("play_spo2_value",spo2_value) EventMesh.publish("set_history_spo2_value",spo2_value) else: - EventMesh.publish("play_spo2_value",0) + pass + # EventMesh.publish("play_spo2_value",0) if self.Hr_Need_Open == 0 and self.get_hr_state == 3: EventMesh.publish("set_hr_state",3)#2代表后台进入测试 @@ -1355,11 +1367,13 @@ class DeviceInfoManager(Abstract): EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#停止血氧测试 spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN) if spo2_value > 85 and spo2_value != None: + # EventMesh.publish("play_spo2_value",0) EventMesh.publish("set_history_spo2_value",spo2_value) EventMesh.publish("set_old_spo2_data",spo2_value) EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value) else: - EventMesh.publish("play_hr_value",0) + pass + # EventMesh.publish("play_spo2_value",0) elif self.set_hsenor_crt == 1: EventMesh.publish("set_hr_state",0)#0代表g关闭测试 @@ -1368,10 +1382,11 @@ class DeviceInfoManager(Abstract): heart_value = EventMesh.publish(constants.EVENT.GET_HEART) if heart_value > 50 and heart_value != None: EventMesh.publish("set_history_hr_value",heart_value) - EventMesh.publish("play_hr_value",heart_value) + # EventMesh.publish("play_hr_value",heart_value) EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据 else: - EventMesh.publish("play_hr_value",0) + pass + # EventMesh.publish("play_hr_value",0) self.HR_Onestate = 0 else: if self.get_spo2_state == 2 or self.get_hr_state == 2:#单次测量 @@ -1419,11 +1434,12 @@ class DeviceInfoManager(Abstract): heart_value = EventMesh.publish(constants.EVENT.GET_HEART) print("stop_heart heart_value:{}".format(heart_value)) if heart_value > 50 and heart_value != None: - EventMesh.publish("play_hr_value",heart_value) + # EventMesh.publish("play_hr_value",heart_value) EventMesh.publish("set_history_hr_value",heart_value) EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据 else: - EventMesh.publish("play_hr_value",0) + pass + # EventMesh.publish("play_hr_value",0) if self.Spo2_Need_Open == 0 and self.get_spo2_state == 3: EventMesh.publish("set_spo2_state",3)#2代表后台进入血氧测试 EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN)#K开血氧 @@ -1442,11 +1458,12 @@ class DeviceInfoManager(Abstract): spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN) print("spo2_value:{}.......01..".format(spo2_value)) if spo2_value > 85 and spo2_value != None: - EventMesh.publish("play_spo2_value",spo2_value) + # EventMesh.publish("play_spo2_value",spo2_value) EventMesh.publish("set_history_spo2_value",spo2_value) EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value) else: - EventMesh.publish("play_spo2_value",0) + pass + # EventMesh.publish("play_spo2_value",0) if self.Hr_Need_Open == 0 and self.get_hr_state == 3: EventMesh.publish("set_hr_state",3)#2代表后台进入测试 @@ -1465,22 +1482,25 @@ class DeviceInfoManager(Abstract): EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)#停止血氧测试 spo2_value = EventMesh.publish(constants.EVENT.GET_BLOOD_OXYGEN) if spo2_value > 85 and spo2_value != None: - EventMesh.publish("play_spo2_value",spo2_value) + # EventMesh.publish("play_spo2_value",spo2_value) EventMesh.publish("set_history_spo2_value",spo2_value) EventMesh.publish(constants.PROTOCOL.OXYGEN_SEND,spo2_value) else: - EventMesh.publish("play_spo2_value",0) + pass + # EventMesh.publish("play_spo2_value",0) elif self.set_hsenor_crt == 1: EventMesh.publish("set_hr_state",0)#0代表g关闭测试 print("stop debug7") EventMesh.publish(constants.EVENT.STOP_HEART) heart_value = EventMesh.publish(constants.EVENT.GET_HEART) if heart_value > 50 and heart_value != None: - EventMesh.publish("play_hr_value",heart_value) + + # EventMesh.publish("play_hr_value",heart_value) EventMesh.publish("set_history_hr_value",heart_value) EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据 else: - EventMesh.publish("play_hr_value",0) + pass + # EventMesh.publish("play_hr_value",0) self.HR_Onestate = 0 else: if self.get_spo2_state == 2 or self.get_hr_state == 2:#单次测量 @@ -1532,11 +1552,11 @@ class DeviceInfoManager(Abstract): if temp != None: if temp != 0: EventMesh.publish("set_history_temp_value",temp) - EventMesh.publish("play_temp_value",temp)#播放体温数值 + # EventMesh.publish("play_temp_value",temp)#播放体温数值 EventMesh.publish(constants.PROTOCOL.TEMP_SEND,[tmp_f_tmp,tmp_d_tmp]) else: EventMesh.publish("set_history_temp_value",0) - EventMesh.publish("play_temp_value",0)#播放体温数值 + # EventMesh.publish("play_temp_value",0)#播放体温数值 EventMesh.publish(constants.EVENT.STOP_TEMP) self.SENSOR_time = time_tmp @@ -2033,7 +2053,10 @@ class LocationManager(Abstract): print("start_location:{}".format(msg)) if( self.location_flag == 1): return + _thread.stack_size((9+5)*1024) self.location_thread_id = _thread.start_new_thread(self.location_thread, ()) + _thread.stack_size(8*1024) + self.location_flag = 1 #self.gps_open(event, msg) @@ -2044,7 +2067,10 @@ class LocationManager(Abstract): self.location_type = 1 if( self.location_flag == 1): return + _thread.stack_size((9+4)*1024) self.location_thread_id = _thread.start_new_thread(self.location_thread, ()) + _thread.stack_size(8*1024) + self.location_timer_count = 0 self.location_flag = 1 #self.gps_open(event, msg) 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 a500f786..a92f7163 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 @@ -146,12 +146,15 @@ class SockManager(Abstract): self.server_addr = ip_infor[0] self.server_port = ip_infor[1] print("server_addr:{} server_port:{}".format(self.server_addr,self.server_port)) - + _thread.stack_size((9+3)*1024) _thread.start_new_thread(self.connect, ()) + _thread.stack_size(8*1024) + self.socket_send_queue = Queue() + _thread.stack_size((9+2)*1024) _thread.start_new_thread(self.socket_send_queue_thread, ()) - + _thread.stack_size(8*1024) def post_processor_after_instantiation(self): EventMesh.subscribe(constants.EVENT.CHANNEL_SOCKET_SEND, self.send) @@ -207,7 +210,9 @@ class SockManager(Abstract): self.reconnect_time += 30*1000 def reconnect_timer_cb(self, *args): + _thread.stack_size((9+1)*1024) _thread.start_new_thread(self.connect, ()) + _thread.stack_size(8*1024) def socket_send_queue_thread(self): while True: diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/Makefile b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/Makefile index 32485e25..45b7c0d3 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/Makefile +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/Makefile @@ -970,6 +970,7 @@ frozen_mpy_list = $(BUILD)/_boot.mpy \ $(BUILD)/main_init.mpy \ $(BUILD)/calculator.mpy \ $(BUILD)/versions.mpy \ + $(BUILD)/websocket_test.mpy \ endif diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/alarm.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/alarm.py index b2746a81..6a0c11a3 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/alarm.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/alarm.py @@ -402,9 +402,9 @@ label_ok.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) #闹钟信息 alarm_list = [{'hour': 16, 'repeart': 10, 'idx': 0, 'enabled': 0, 'days': [0,1,2,3,4,5,6], 'minute': 39}, {'hour': 16, 'repeart': 10, 'idx': 1, 'enabled': 0, 'days': [0,1,2,3,4,5,6], 'minute': 39}, - {'hour': 16, 'repeart': 1, 'idx': 1, 'enabled': 0, 'days': [0,1,2,3,4,5,6], 'minute': 39}, - {'hour': 16, 'repeart': 1, 'idx': 1, 'enabled': 0, 'days': [], 'minute': 39}, - {'hour': 16, 'repeart': 1, 'idx': 1, 'enabled': 0, 'days': [], 'minute': 39},] + {'hour': 16, 'repeart': 10, 'idx': 1, 'enabled': 0, 'days': [0,1,2,3,4,5,6], 'minute': 39}, + {'hour': 16, 'repeart': 10, 'idx': 1, 'enabled': 0, 'days': [], 'minute': 39}, + {'hour': 16, 'repeart': 10, 'idx': 1, 'enabled': 0, 'days': [], 'minute': 39},] #用于显示闹钟列表不包含开关机信息 class ClockManager(Abstract): diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py index 02f75729..a1ee4d70 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py @@ -1,13 +1,12 @@ import osTimer import lvgl as lv import EventMesh -import osTimer import constants import ujson import ql_fs import audio from machine import Pin -from ui import style_font_youyuan_20,style_screen,Screen,style_font_youyuan_20_black,style_img +from ui import style_font_youyuan_20,style_font_youyuan_20_red,style_screen,Screen,style_font_youyuan_20_black,style_img import audio from machine import Pin import utime @@ -15,6 +14,19 @@ import _thread from protocol import ProtoCol,UnicodeHexStr_To_Utf8Str import usys import log +import base64 +import uwebsocket +import sys +import time +import _thread +#本示例演示将分开到达设备的两条长两条短信合并为一条短信 +#本例演示要求短信索引值0和短信索引值1的短信同一条长短信的内容 +import uhashlib +import ubinascii + +import queue +import EventMesh +SHA1 = uhashlib.sha1 LCD_X = 128 LCD_Y = 128 Testlog = log.getLogger("WechatLog") @@ -138,7 +150,444 @@ wechat_press_label_countdown.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) # wechat_update_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) # wechat_update_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +#*****************AI语音*******************# +# -------------------------------------------wechat screen---------------------------------------------------------- +aivoice_screen = lv.obj() +print("aivoice_screen") +aivoice_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) +aivoice_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) + + +ai_screen_luyin_screen = lv.obj(aivoice_screen) +ai_screen_luyin_screen.set_pos(0, 0) +ai_screen_luyin_screen.set_size(LCD_X, 96) +ai_screen_luyin_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) +ai_screen_luyin_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) + +ai_detail_cont_obj = lv.obj(aivoice_screen) +ai_detail_cont_obj.set_pos(0, 5) +ai_detail_cont_obj.set_size(128, 90) +ai_detail_cont_obj.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) +ai_detail_cont_obj.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) + +aivoice_press_btn = lv.btn(aivoice_screen) +aivoice_press_btn.set_pos(10, 100) +aivoice_press_btn.set_size(LCD_X-20, 26) +aivoice_press_btn.add_style(style_wechat_btn, lv.PART.MAIN | lv.STATE.DEFAULT) +aivoice_press_btn.add_style(style_common_bg_rect_btn_pressed, lv.PART.MAIN | lv.STATE.PRESSED) +aivoice_press_btn.set_style_radius(30,0) + +aivoice_press_label = lv.label(aivoice_screen) +aivoice_press_label.set_text("AI智能说话") +aivoice_press_label.set_size(LCD_X, 20) +aivoice_press_label.set_pos(0,103) +aivoice_press_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +aivoice_press_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + +aivoice_left_label = lv.label(ai_detail_cont_obj) +aivoice_left_label.set_pos(0, 10) +aivoice_left_label.set_size(LCD_X, 40) +aivoice_left_label.set_text(" ") +aivoice_left_label.set_long_mode(lv.label.LONG.WRAP) +aivoice_left_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +aivoice_left_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + +aivoice_right_label = lv.label(ai_detail_cont_obj) +aivoice_right_label.set_pos(0, 60) +aivoice_right_label.set_size(LCD_X, 40) +aivoice_right_label.set_text(" ") +aivoice_right_label.set_long_mode(lv.label.LONG.WRAP) +aivoice_right_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +aivoice_right_label.add_style(style_font_youyuan_20_red, lv.PART.MAIN | lv.STATE.DEFAULT) + + + +aivoice_press_label_countdown = lv.label(ai_screen_luyin_screen) +aivoice_press_label_countdown.set_pos(0, 30) +aivoice_press_label_countdown.set_size(LCD_X, 20) +aivoice_press_label_countdown.set_text(" ") +aivoice_press_label_countdown.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) +aivoice_press_label_countdown.set_long_mode(lv.label.LONG.WRAP) +aivoice_press_label_countdown.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) + +class AIScreen(Screen):#AI语音 + NAME = "ai_page" + + def __init__(self): + super().__init__() + self.MXA_MSG = 5 + self.wechat_recode_list = {} + self.wechat_num = 0 + self.volum_size = 8 + self.msg_tmp = "" + self.record_test = audio.Record() + self.play_timer = osTimer() + self.record_test.gain(4,12) + self.aud = audio.Audio(0) + self.second_timer = osTimer() + self.send_data_time = osTimer() + self.press_state = 0 + self.meta = aivoice_screen + aivoice_press_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.talking_cb(e)), + lv.EVENT.LONG_PRESSED, None) + aivoice_press_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.sending_cb(e)), + lv.EVENT.RELEASED, None) + + EventMesh.subscribe("send_ai_data", self.send_ai_data) + EventMesh.subscribe("show_ai_data", self.show_ai_data) + EventMesh.subscribe("websocket_client", self.websocket_client) + self.count_img = 0 + self.play_sec = 0 + self.ble_send = 0 + + self.countdown = 1 + self.count_img = 0 + self.paay_btn_count = 0 + self.paay_btn_old_count = 99999 + self.play_text = None + self.play_sec = 0 + self.sec_num = 0 + self.countdown_old = 0 + self.press_state = 0 + self.ble_send = 0 + self.wechat_show = 0 + self.wechat_show_list = 0 + self.ws_url = "ws://ability.raisound.com:10180/qianwen/chinese/recognize" + self.secret_id = "Q4NPLBLyidvRc4TAUByUhcVfRFM1kQBi" + self.api_key = b'P7vNsYTv' + self.file_name = None #"/usr/test.wav"#file_name#"/usr/static/storage_file/1.wav" #"/usr/static/storage_file/3.amr"##file_name#"/usr/test.wav" + self.ws_conn = 0 + self.Client = 0 + self.session_id='' + self.timeSecond = 0 + self.data_flag = 0 + self.asr_data = queue.Queue(16) + + def websocket_client(self, event, msg): + self.data_flag = 0 + self.timeSecond = 0 + self.ws_url = msg[0] #websocket_url + self.secret_id = msg[1] #secret_id + self.api_key = msg[2] #api_key + self.file_name = "/usr/test.wav"#msg[3]# file_name #"/usr/test.wav"#file_name#"/usr/static/storage_file/1.wav" #"/usr/static/storage_file/3.amr"##file_name#"/usr/test.wav" + self.ws_conn = uwebsocket.Client() + self.tasks = [] + self.__init_websocket_conn() + self.__start_init() + + self.session_id = "" + self.__run() + # self.asr_result = queue.Queue(16) + + def HMAC(self,k, m): + SHA1_BLOCK_SIZE = 64 + KEY_BLOCK = k + (b'\0' * (SHA1_BLOCK_SIZE - len(k))) + KEY_INNER = bytes((x ^ 0x36) for x in KEY_BLOCK) + KEY_OUTER = bytes((x ^ 0x5C) for x in KEY_BLOCK) + inner_message = KEY_INNER + m + outer_message = KEY_OUTER + SHA1(inner_message).digest() + return SHA1(outer_message) + + + def get_hmac_sha1(self,k, m): + data = self.HMAC(k, m).digest() + print("HMAC(k, m).digest():", data) + print("HMAC(k, m).digest():", ubinascii.hexlify(data)) + hex_data = ubinascii.hexlify(data) + hex_data = hex_data.decode('ascii') + return hex_data + # 连接 + def __init_websocket_conn(self): + uri = self.__get_entire_url() + print("__init_websocket_conn",uri) + try: + self.Client = self.ws_conn.connect(uri) + + except Exception as e: + print(e) + return + + def __get_entire_url(self):#连接地址 + + time = utime.localtime()#本地时间戳 + t = utime.mktime(time) + + string = "secretID={}×tamp={}".format(self.secret_id,t) + + md5_str = uhashlib.md5(string.format(t)) + res = md5_str.digest() + # 转成十六进制表示 + MD5_head = ubinascii.hexlify(res)# + MD5_head = MD5_head.decode('ascii') + print("uri!!",MD5_head) + signature = self.get_hmac_sha1(self.api_key, MD5_head)#对api_key进行再加密 + + # signature = hmac.new(self.api_key.encode(), md5_str.encode(), uhashlib.sha1).hexdigest() + uri = "{}?secretID={}&signature={}×tamp={}".format(self.ws_url,self.secret_id,signature,t) + print("uri",uri,MD5_head,signature) + return uri + + # 初始化 + def __start_init(self): + json_data = ujson.dumps({"action": "InitStreamingASR"}) + print(json_data) + if self.Client != 0: + self.Client.send(json_data) + result = self.Client.recv() + print(result) + self.session_id = ujson.loads(result)["session_id"] + + # # 发送数据 + def __send_data(self): + while True: + try: + data = self.asr_data.get() + print("__send_data1",len(data)) + if self.Client != 0: + self.Client.send(data) + print("__send_data2",len(data)) + except Exception as e: + print(e) + self.__close() + break + + # # 读取音频数据到队列逻辑 + def __send_queue(self): + file = open(self.file_name, "rb+") + while True: + data = file.read(3200) + if data: + encode_audio = base64.standard_b64encode(data).decode("utf-8") + session_id = "" + session_id = self.session_id + json_data = ujson.dumps({ + "action": "StreamingASR", + "audio_data": encode_audio, + "session_id":str(session_id) + }) + # print(json_data) + print("__send_queue:put",len(json_data)) + self.asr_data.put(json_data) + else: + print("__close111111111") + utime.sleep_ms(1) + self.__close() + print("__close!!!!!!!!!!") + break + # print("json_data",json_data) + # utime.sleep_ms(1) + + + # # 读取数据 + def read_data(self): + while True: + try: + result = self.Client.recv() + print("result",result) + json_load = ujson.loads(result) + print("json_load",json_load) + if "type" in json_load.keys(): + + if json_load["type"] == "real_asr": + + print("转写结果",json_load) + if json_load["type"] == "model_answer": + self.data_flag = 1 + question = str(json_load["question"]) + answer = str(json_load["answer"]) + print("\033[0;31;40m模型问答结果\033[0m", json_load,question,answer) + EventMesh.publish("show_ai_data",[question,answer]) + time = utime.localtime()#本地时间戳 + second_old = utime.mktime(time) + if self.timeSecond == 0: + self.timeSecond = second_old + + if second_old - self.timeSecond >= 30: + self.timeSecond = second_old + if self.data_flag == 0: + print("data is null") + self.__close() + break + + except Exception as e: + self.__close() + break + + # # 释放结束 + def __close(self): + json_data = ujson.dumps({"action":"PausedASR"})#{"action": "PausedASR"} + print("__close3333333") + if self.Client != 0: + self.Client.send(json_data) + print(json_data) + + + + def __relase(self):#结束不再录音 + json_data = ujson.dumps({"action":"RelStreamingASR"})#{"action": "RelStreamingASR"} + print(self.Client) + if self.Client != 0: + self.Client.send(json_data) + print("__relase") + + # # 运行 + def __run(self): + _thread.stack_size(10*1024) + _thread.start_new_thread(self.__send_queue,()) + _thread.stack_size(8*1024) + + _thread.stack_size(11*1024) + _thread.start_new_thread(self.__send_data, ()) + _thread.stack_size(8*1024) + + + + def send_ai_data(self, event, msg): + data = ["ws://ability.raisound.com:10180/qianwen/chinese/recognize","Q4NPLBLyidvRc4TAUByUhcVfRFM1kQBi",b'P7vNsYTv',msg] + EventMesh.publish("websocket_client",data) + # websocket_client_conn("ws://ability.raisound.com:10180/qianwen/chinese/recognize","Q4NPLBLyidvRc4TAUByUhcVfRFM1kQBi",b'P7vNsYTv',msg) + self.read_data() + + def show_ai_data(self, event, msg): + self.__relase() + print("show_ai_data",msg) + ai_screen_luyin_screen.add_flag(lv.obj.FLAG.HIDDEN) + ai_detail_cont_obj.clear_flag(lv.obj.FLAG.HIDDEN) + aivoice_left_label.set_text(str(msg[0])) + aivoice_right_label.set_text(str(msg[1])) + + pass + + + def initialization(self): + Wechat_log("ai_page") + self.aud.setVolume(11)#设置最大声录音 + self.count_img = 0 + self.play_sec = 0 + self.ble_send = 0 + # utime.sleep(1) + # for j in range( 200): + # self.updata_list_show(1) + Wechat_log("initialization2") + if ai_detail_cont_obj != None: + ai_detail_cont_obj.scroll_to(0, 0, lv.ANIM.OFF) + + def talking_cb(self,e): + Wechat_log("talking_cb1") + EventMesh.publish("publish_message_event_ui",{"func":self.talking,"data":e}) + Wechat_log("talking_cb2") + #按下录音 + def talking(self,e): + if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡时触发sos报警 无卡时自动关机 + print("talking1") + self.play_timer.stop() + self.aud.stop() + ai_screen_luyin_screen.clear_flag(lv.obj.FLAG.HIDDEN) + ai_detail_cont_obj.add_flag(lv.obj.FLAG.HIDDEN) + self.countdown = 1 + aivoice_press_label_countdown.set_text("{}S".format(str(self.countdown))) + + + #self.updata_list_show(2)#不需要显示语音列表 + #按下说话 + if self.wechat_num >= self.MXA_MSG: + self.wechat_num = 0 + self.wechat_num += 1 + self.wechat_show = self.wechat_num + self.wechat_recode_list["num"] = self.wechat_num + print("talking1.0") + self.record_test.start("/usr/static/ai_file.wav",10) + self.second_timer.start(1000, 1, self.reduce_second) + self.press_state = 1 + self.ble_send = 1 + #松开发送 + print("talking2") + else: + EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"}) + + + def sending_cb(self,e): + if self.press_state == 1: + if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡时触发sos报警 无卡时自动关机 + Wechat_log("sending_cb1") + EventMesh.publish("publish_message_event_ui",{"func":self.sending,"data":e}) + #self.sending(e) + Wechat_log("sending_cb2") + else: + self.press_state = 0 + EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"}) + else: + pass + def reduce_second(self,*args): + if self.countdown < 10: + self.countdown += 1 + else: + self.countdown = 10 + self.sending_cb(0) + + if self.countdown >= 10: + self.countdown = 10 + + aivoice_press_label_countdown.set_text("{}S".format(str(self.countdown))) + #松开发送 + def sending(self,e): + Wechat_log("sending1") + if self.press_state == 1: + # wechat_label.clear_flag(lv.obj.FLAG.HIDDEN) + # wechat_label.set_text("发送中") + ai_screen_luyin_screen.add_flag(lv.obj.FLAG.HIDDEN) + ai_detail_cont_obj.clear_flag(lv.obj.FLAG.HIDDEN) + + if self.countdown >= 10: + self.countdown = 10 + + #写序号 + self.record_test.stop() #停止錄音 + self.second_timer.stop() #停止计时器 + #修改或添加词典键值 + self.press_state = 0 + self.ble_send = 0 + ##隐藏显示文本 显示列表显示框 + + path = "/usr/static/ai_file.wav" + aivoice_press_label_countdown.set_text(" ") + self.send_data_time.start(2000,0,self.send_file) + # EventMesh.publish("send_ai_data", path) + # ws_client = websocket_client_conn("ws://ability.raisound.com:10180/qianwen/chinese/recognize","Q4NPLBLyidvRc4TAUByUhcVfRFM1kQBi",b'P7vNsYTv',path) + # ws_client.read_data() + + + Wechat_log("sending2") + def send_file(self,*argc): + path = "/usr/static/ai_file.wav" + check_file = ql_fs.path_exists(path) + if check_file == True: + self.file_name = path + # self.__send_queue() + EventMesh.publish("send_ai_data", path) + + 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"}) + + def Close(self): + Wechat_log("Close1") + self.record_test.stop() #停止錄音 + self.second_timer.stop() #停止计时器 + self.aud.stop() + num = EventMesh.publish("get_volum_size") + if num == None: + num = 8 + self.aud.setVolume(num)#恢复原始音量 + Wechat_log("Close2") + self.__close() class WechatScreen(Screen): NAME = "wechat" @@ -434,7 +883,7 @@ class WechatScreen(Screen): self.wechat_show = self.wechat_num self.wechat_recode_list["num"] = self.wechat_num print("talking1.0") - self.record_test.start("/usr/static/storage_file/{}.amr".format(self.wechat_num),16) + self.record_test.start("/usr/static/storage_file/{}.wav".format(self.wechat_num),16) self.second_timer.start(1000, 1, self.reduce_second) self.press_state = 1 self.ble_send = 1 @@ -604,7 +1053,7 @@ class WechatScreen(Screen): if self.play_text == "R:" or self.play_text == "S:":#过滤掉文字显示 不需要播放音频文件 self.aud = audio.Audio(0) self.aud.stop()# - self.aud.play(1, 1, '/usr/static/storage_file/{}.amr'.format(i)) #文件名前面要加上路径 + self.aud.play(1, 1, '/usr/static/storage_file/{}.wav'.format(i)) #文件名前面要加上路径 self.paay_btn_old_count = self.paay_btn_count Wechat_log("play_label2") @@ -803,8 +1252,8 @@ class TK_ProtoCol(ProtoCol): EventMesh.publish("load_screen", {"screen": "wechat_popup"}) else: EventMesh.publish("wechat_updata_list_show") - # path = "/ext/static/storage_file/audio_amr/amr/{}.amr".format(wechat_num) - path = "/usr/static/storage_file/{}.amr".format(wechat_num) + # path = "/ext/static/storage_file/audio_amr/amr/{}.wav".format(wechat_num) + path = "/usr/static/storage_file/{}.wav".format(wechat_num) with open(path,"w") as fd: arm = bytearray() j = 0 diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py index b61b15a7..f8461e7f 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py @@ -90,8 +90,9 @@ def main_init(): ui.add_screen(_ui.Spo2Screen()) ui.add_screen(_ui.TemperatureScreen()) ui.add_screen(_ui.ContactsScreen()) - from appWechat import WechatScreen,TK_ProtoCol,MESSAGE_ProtoCol,NewWechatPopupScreen + from appWechat import WechatScreen,TK_ProtoCol,MESSAGE_ProtoCol,NewWechatPopupScreen,AIScreen ui.add_screen(WechatScreen()) + ui.add_screen(AIScreen()) from alarm import ClkListScreen,ClockManager,NewEditClk,CLKTimeScreen,ClkPeriod,PopupAlarmScreen from ui_health import HealthScreen from calculator import calculatorScreen @@ -154,6 +155,8 @@ def main_init(): ui.add_screen(_ui.albumPreviewScreen()) ui.add_screen(_ui.cameraFullScreen()) ui.add_screen(_ui.restore_confirmScreen()) + ui.add_screen(_ui.down_Screen()) + ui.add_screen(_ui.up_Screen()) ui.add_screen(NewWechatPopupScreen()) ui.add_screen(HealthScreen()) # ui.add_screen(_ui.Setting3Screen()) diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py index 292abe3d..f499dce1 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py @@ -601,14 +601,14 @@ def voice_callback(args): EventMesh.publish("set_interrup_incall",0) return - EventMesh.publish("set_interrup_incall",0) - EventMesh.publish("set_UI_high_priority",0) + # EventMesh.publish("set_interrup_incall",0) + # EventMesh.publish("set_UI_high_priority",0) - screen_NAME = EventMesh.publish("get_screen_NAME") - if screen_NAME != None: - if screen_NAME != "dialing_noplay_popup": - EventMesh.publish("load_screen", {"screen": "main_menu"}) + # screen_NAME = EventMesh.publish("get_screen_NAME") + # if screen_NAME != None: + # if screen_NAME != "dialing_noplay_popup": + # EventMesh.publish("load_screen", {"screen": "main_menu"}) EventMesh.publish("set_sos_info_call") print('voicecall disconnect end') @@ -891,7 +891,8 @@ class DeviceInfoManager(Abstract): if bat_tmp != None: bat_value = bat_tmp[1] if bat_value <= 0: - EventMesh.publish("load_screen", {"screen": "LOW_ONE_POWER"}) + if bat_tmp[0] != "1": + EventMesh.publish("load_screen", {"screen": "LOW_ONE_POWER"}) """"隔天清步数""" @@ -958,7 +959,8 @@ class DeviceInfoManager(Abstract): if self.bat_time > 5*60: self.bat_time = 0 if battery[1] <= 20 and battery[1] > 0: - EventMesh.publish("load_screen", {"screen": "LOW_POWER"}) + if battery[0] != "1": + EventMesh.publish("load_screen", {"screen": "LOW_POWER"}) else: self.bat_time = 0 diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py index 83716e65..4dce1e71 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py @@ -632,7 +632,10 @@ class POWEROFF_ProtoCol(ProtoCol): """ EventMesh.publish(constants.PROTOCOL.POWEROFF_SEND) #print("POWEROFF_ProtoCol:recv:%s"%(msg)) - EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"}) + battery = EventMesh.publish("screen_get_battery") + if battery != None: + if battery[0] != 1: + EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"}) class PHL_ProtoCol(ProtoCol): """电话本同步""" diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py index a6d58828..807e6318 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py @@ -87,6 +87,16 @@ style_font_youyuan_20_black.set_text_color(lv.color_make(0x00, 0x00, 0x00)) style_font_youyuan_20_black.set_text_font(lv.K01_font_16_ALL) #style_font_youyuan_20_black.set_text_font_v2("font_28.bin",28,0) +style_font_youyuan_70_black = lv.style_t() +style_font_youyuan_70_black.init() +style_font_youyuan_70_black.set_text_color(lv.color_make(0xFF, 0xFF, 0xFF)) +style_font_youyuan_70_black.set_text_font(lv.K01_font_30_DIAL) + + +style_font_youyuan_28 = lv.style_t() +style_font_youyuan_28.init() +style_font_youyuan_28.set_text_color(lv.color_make(0xff, 0xff, 0xff)) +style_font_youyuan_28.set_text_font(lv.K01_font_16_ALL) style_font_youyuan_20_red = lv.style_t() style_font_youyuan_20_red.init() @@ -255,6 +265,8 @@ class Screen(Abstract): 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}] @@ -1052,14 +1064,21 @@ class DialingScreen(Screen): EventMesh.publish("set_UI_high_priority", 0) EventMesh.publish("set_hangup_mode", 1) voiceCall.callEnd() - self.timer.start(5000,0,self.call_end) + EventMesh.publish("set_interrup_incall",0) + EventMesh.publish("set_UI_high_priority",0) + + screen_NAME = EventMesh.publish("get_screen_NAME") + if screen_NAME != None: + if screen_NAME != "dialing_noplay_popup": + EventMesh.publish("load_screen", {"screen": "main_menu"}) def Close(self): self.timer.stop() def call_end(self,*argc): - print("call_end!!!!!!!!") - call_state = EventMesh.publish("get_call_state")#设置关机时间 + + call_state = EventMesh.publish("get_call_state")# + print("call_end!!!!!!!!",call_state) if call_state != None: if call_state == 0:#未打通 EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -1301,7 +1320,7 @@ class NoSimPowerScreen(Screen):# # no_sim_power_screen_img.set_pos(49, 30) # no_sim_power_screen_img.set_size(30, 30) # 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_img.set_src("U:/static/setting_poweroff.png") no_sim_power_screen_label = lv.label(no_sim_power_screen) @@ -1531,7 +1550,9 @@ class DialingNoPlayPopupScreen(Screen):#正在拨号中...未打出 EventMesh.publish("set_sos_flag",0) EventMesh.publish("set_sos_num",0) EventMesh.publish("set_hangup_mode",0) - EventMesh.publish("return_prev_screen") #返回上一级 + EventMesh.publish("set_interrup_incall",0) + EventMesh.publish("set_UI_high_priority",0) + EventMesh.publish("load_screen", {"screen": "main_menu"}) def Close(self): self.timer1.stop() @@ -2842,6 +2863,29 @@ class ToolboxScreen(Screen): # toolbox_stopwatch_img_label_btn.add_flag(lv.obj.FLAG.CLICKABLE) toolbox_stopwatch_img_label_btn.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + tool_set_y+=tool_set_y_offset + toolbox_calcut_img_btn_1 = lv.btn(toolbox_cont) + toolbox_calcut_img_btn_1.set_pos(int(0),int(tool_set_y-5)) + toolbox_calcut_img_btn_1.set_size(120,35) + toolbox_calcut_img_btn_1.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) + toolbox_calcut_img_btn_1.add_flag(lv.obj.FLAG.CLICKABLE) + toolbox_calcut_img_btn_1.add_style(style_screen_btn_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT) + + toolbox_calcut_img = lv.img(toolbox_cont) + toolbox_calcut_img.set_pos(5, tool_set_y) + toolbox_calcut_img.set_size(25, 25) + # toolbox_countdown_img.add_flag(lv.obj.FLAG.CLICKABLE) + toolbox_calcut_img.set_src("U:/static/menu_calcut.png") + toolbox_calcut_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + + toolbox_calcut_img_label = lv.label(toolbox_cont) + toolbox_calcut_img_label.set_pos(35, tool_set_y+5) + toolbox_calcut_img_label.set_size(128-35, 35) + toolbox_calcut_img_label.set_text("计算器") + toolbox_calcut_img_label.set_long_mode(lv.label.LONG.WRAP) + # toolbox_countdown_img_label.add_flag(lv.obj.FLAG.CLICKABLE) + toolbox_calcut_img_label.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) + toolbox_calcut_img_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) toolbox_step_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "step")), lv.EVENT.CLICKED, None) toolbox_weather_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "weather")), lv.EVENT.CLICKED, None) @@ -2850,6 +2894,8 @@ class ToolboxScreen(Screen): toolbox_countdown_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e,"countdown")), lv.EVENT.CLICKED, None) toolbox_stopwatch_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "stopwatch")), lv.EVENT.CLICKED, None) + toolbox_calcut_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "calculator")), lv.EVENT.CLICKED, None) + # toolbox_step_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "step")), lv.EVENT.CLICKED, None) # toolbox_weather_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "weather")), lv.EVENT.CLICKED, None) # toolbox_alarm_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "clk_list")), lv.EVENT.CLICKED, None) @@ -2864,6 +2910,7 @@ class ToolboxScreen(Screen): # toolbox_sms_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "popup"})), lv.EVENT.CLICKED, None) toolbox_countdown_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "countdown")), lv.EVENT.PRESSING, None) toolbox_stopwatch_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "stopwatch")), lv.EVENT.PRESSING, None) + toolbox_calcut_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "calculator")), lv.EVENT.PRESSING, None) # toolbox_step_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e,"step")), lv.EVENT.PRESSING, None) # toolbox_weather_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "weather")), lv.EVENT.PRESSING, None) @@ -3126,6 +3173,13 @@ class IncomingCallScreen(Screen): self.aud.stop() self.call_timer.stop() voiceCall.callEnd() + EventMesh.publish("set_interrup_incall",0) + EventMesh.publish("set_UI_high_priority",0) + + screen_NAME = EventMesh.publish("get_screen_NAME") + if screen_NAME != None: + if screen_NAME != "dialing_noplay_popup": + EventMesh.publish("load_screen", {"screen": "main_menu"}) def btn1_release(self): @@ -3773,6 +3827,13 @@ class OnCallScreen(Screen): EventMesh.publish("set_UI_high_priority", 0) self.timer.stop() voiceCall.callEnd() + EventMesh.publish("set_interrup_incall",0) + EventMesh.publish("set_UI_high_priority",0) + + screen_NAME = EventMesh.publish("get_screen_NAME") + if screen_NAME != None: + if screen_NAME != "dialing_noplay_popup": + EventMesh.publish("load_screen", {"screen": "main_menu"}) def Close(self): self.timer.stop() @@ -4050,6 +4111,7 @@ class ContactsScreen(Screen): self.MXA_phone_num = 50 #最大显示号码个数 self.contact_detail_listt_dict = [] self.calling_btn = [] + self.is_sliding = 0 def post_processor_before_initialization(self): data = EventMesh.publish("get_phonebook_list") @@ -4059,6 +4121,7 @@ class ContactsScreen(Screen): self.count = 0 def initialization(self): + self.is_sliding = 0 global contacts_screen,contacts_cont,contacts_top_title,contact_none_label,contacts_screen_list_screen if contacts_screen == None: contacts_screen = lv.obj() @@ -4099,6 +4162,7 @@ class ContactsScreen(Screen): 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_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)), lv.EVENT.PRESSING, None) contact_btn.add_flag(lv.obj.FLAG.HIDDEN) # contact_btn.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.PRESSED) @@ -4195,12 +4259,23 @@ class ContactsScreen(Screen): 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"}) + if code == lv.EVENT.PRESSING: + #print("PRESSING") + self.is_sliding += 1 + + elif code == lv.EVENT.CLICKED: + #utime.sleep_ms(10) + print("1self.is_sliding",self.is_sliding) + if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件 + self.is_sliding = 0 + 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"}) + + self.is_sliding =0 + def calling(self,msg_text): _msg = msg_text @@ -6929,7 +7004,7 @@ class NoSimAutoScreen(Screen):#无sim卡是否关机 # no_sim_auto_screen_img.set_pos(49, 40) # no_sim_auto_screen_img.set_size(30, 30) # no_sim_auto_screen_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - # no_sim_auto_screen_img.set_src("E:/static/poweroff_icon.png") + # no_sim_auto_screen_img.set_src("E:/static/setting_poweroff.png") no_sim_auto_screen_label = lv.label(no_sim_auto_screen) @@ -7143,6 +7218,340 @@ class classMgrPopupScreen(Screen):#上课禁用时间界面 else: EventMesh.publish(constants.EVENT.SYSTEM_UP) +# -------------------------------------------down screen---------------------------------------------------------- +down_show_screen = lv.obj() +print("restart_screen") +down_show_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) + +down_show_bright_img = lv.img(down_show_screen)#亮度 +down_show_bright_img.set_size(25, 25) +down_show_bright_img.set_pos(13, 90) +down_show_bright_img.set_src("U:/static/menu_bright.png") +down_show_bright_img.add_flag(lv.obj.FLAG.CLICKABLE) +down_show_bright_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + +down_show_volume_img = lv.img(down_show_screen)#音量 +down_show_volume_img.set_size(25, 25) +down_show_volume_img.set_pos(13+25+13, 90) +down_show_volume_img.set_src("U:/static/menu_volume.png") +down_show_volume_img.add_flag(lv.obj.FLAG.CLICKABLE) +down_show_volume_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + +down_show_setting_img = lv.img(down_show_screen)#设置 +down_show_setting_img.set_size(25, 25) +down_show_setting_img.set_pos(13+25+13+25+13, 90) +down_show_setting_img.set_src("U:/static/menu_version.png") +down_show_setting_img.add_flag(lv.obj.FLAG.CLICKABLE) +down_show_setting_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + + +down_show_mpsignal_img = lv.img(down_show_screen) +down_show_mpsignal_img.set_pos(int(10),int(5)) +down_show_mpsignal_img.set_size(22,12) +down_show_mpsignal_img.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) +down_show_mpsignal_img.set_src("U:/static/mpsignal5.png") +down_show_mpsignal_img.add_style(style_img, lv.PART.MAIN|lv.STATE.DEFAULT) + +down_showt_battery_img = lv.img(down_show_screen) +down_showt_battery_img.set_pos(int(102),int(5)) +down_showt_battery_img.set_size(24,12)#16 8 +down_showt_battery_img.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) +down_showt_battery_img.set_src("U:/static/vbat_0.png") +down_showt_battery_img.add_style(style_img, lv.PART.MAIN|lv.STATE.DEFAULT) + + +power_line_points = [{"x":0,"y":0},{"x":0,"y":10}] +power_line_red = lv.style_t() +power_line_red.init() +power_line_red.set_line_width(0)#23 宽度 +power_line_red.set_line_color(lv.color_make(0xff, 0xff, 0xff)) + +down_showt_battery_line = lv.line(down_show_screen) +down_showt_battery_line.set_points(power_line_points,2) +down_showt_battery_line.set_pos(int(110),int(6)) +down_showt_battery_line.set_size(0,10)#高度12 +down_showt_battery_line.add_style(power_line_red,0) + +data = RTC().datetime() +hour = data[4] +min = data[5] + +week = data[3] + +date0 = data[0] +date1 = data[1] +date2 = data[2] +def get_week(msg): + if msg == 1: + return '一' + elif msg == 2: + return '二' + elif msg == 3: + return '三' + elif msg == 4: + return '四' + elif msg == 5: + return '五' + elif msg == 6: + return '六' + elif msg == 7 or msg == 0: + return '日' +down_showt_time1_text = lv.label(down_show_screen) +down_showt_time1_text.set_pos(0, 35) +down_showt_time1_text.set_size(128, 71) +down_showt_time1_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +down_showt_time1_text.set_text("{}:{}".format("%02d"%(hour),"%02d"%(min))) +# watchface1_time1_text.set_text("%02d:%02d"%(hour,min)) +down_showt_time1_text.add_style(style_font_youyuan_70_black, lv.PART.MAIN|lv.STATE.DEFAULT) +#日期 +down_show_date_span = lv.label(down_show_screen) +down_show_date_span.set_pos(0, 62) +down_show_date_span.set_size(128, 20) +down_show_date_span.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +down_show_date_span.set_text("%02d/%02d 星期%s"%(date1,date2,get_week(week))) +down_show_date_span.add_style(style_font_youyuan_28, lv.PART.MAIN|lv.STATE.DEFAULT) +class down_Screen(Screen):#下滑界面 + NAME = "down_screen" + + def __init__(self): + super().__init__() + self.rtc = RTC() + self.timer = osTimer() + self.meta = down_show_screen + down_show_bright_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,"brightness")), lv.EVENT.CLICKED, None) + down_show_volume_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,"totalvolume")), lv.EVENT.CLICKED, None) + down_show_setting_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,"setting")), lv.EVENT.CLICKED, None) + + def initialization(self): + print("down_screen") + + #获取信号 + signal = EventMesh.publish("screen_get_sig") + if signal: + self.__signal(None, signal) + # 获取电池电量 + battery = EventMesh.publish("screen_get_battery") + if battery: + self.__battery(None, battery) + + self.__time(None, None) + self.timer.start(2000,1,self.time_out) + def img_cb(self, e, msg): + EventMesh.publish("load_screen", {"screen": "{}".format(msg)}) + + def time_out(self,*argc): + signal = EventMesh.publish("screen_get_sig") + if signal: + self.__signal(None, signal) + # 获取电池电量 + battery = EventMesh.publish("screen_get_battery") + if battery: + self.__battery(None, battery) + + self.__time(None, None) + pass + + def __time(self, event, msg): + #时间 + rtc_time = self.rtc.datetime() + month = rtc_time[1] + day = rtc_time[2] + year = rtc_time[0] + # week = ("星期%s"%(self.get_week(rtc_time[3]))) + week_data = rtc_time[3] + # time = [rtc_time[4], rtc_time[5]] + + down_showt_time1_text.set_text("{}:{}".format("%02d"%(rtc_time[4]),"%02d"%(rtc_time[5]))) + down_show_date_span.set_text("%02d/%02d 星期%s"%(month,day,get_week(week))) + + def __signal(self, event, msg): + #print("__signal_cb:",str(msg)) + # 信号强度值范围0 ~ 31,值越大表示信号强度越好 + #print("__signal_cb:{}".format(msg//8)) + if msg: + if msg >= 0 and msg<=31 : + down_show_mpsignal_img.set_src("U:/static/mpsignal{}.png".format(msg//8+1)) + else : + down_show_mpsignal_img.set_src("U:/static/mpsignal5.png") + + def __battery(self, event, msg): + #print("__battery_cb:",str(msg)) + #print(msg) + if msg[0] == '1': + down_showt_battery_line.set_pos(int(0),int(0)) + down_showt_battery_line.set_size(0,0) + down_showt_battery_line.set_style_line_width(0,lv.PART.MAIN) + down_showt_battery_img.set_src("U:/static/charge_ing.png") + # watchface1_res_stat_charge_in_img.set_src("U:/static/charge_in.png") + else: + down_showt_battery_img.set_src("U:/static/vbat_0.png") + level = msg[1] + if level >= 99: + level = 100 + line_len = int(level*(21/100)) + # print("__battery_cb:",level,line_len,30/100) + if line_len >= 21: + line_len = 21 + if line_len <= 5: + line_len = 5 + + set_x = int(103+line_len//2) + down_showt_battery_line.set_pos(int(set_x),int(6)) + down_showt_battery_line.set_size(line_len,10) + down_showt_battery_line.set_style_line_width(line_len,lv.PART.MAIN) + if line_len <= 5: + down_showt_battery_line.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) + else: + down_showt_battery_line.set_style_line_color(lv.color_make(0x00,0xff,0x00),0) + pass + + def Close(self): + self.timer.stop() + + def done_bottom_to_top(self): + # print("done_bottom_to_top") + EventMesh.publish("watch_top_show") + EventMesh.publish("load_screen", {"screen": "main_menu"}) + + def done_top_to_bottom(self): + pass + + 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"}) + +up_show_screen = lv.obj() +print("up_show_screen") +up_show_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) + +up_show_bg_img = lv.img(up_show_screen)#亮度 +up_show_bg_img.set_size(128, 128) +up_show_bg_img.set_pos(0, 0) +up_show_bg_img.set_src("U:/static/up_show_step.png") +up_show_bg_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + +up_show_bg_img_label = lv.label(up_show_screen) +up_show_bg_img_label.set_pos(0, 30) +up_show_bg_img_label.set_size(128, 20) +up_show_bg_img_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +up_show_bg_img_label.set_text("今日步数") +up_show_bg_img_label.add_style(style_font_youyuan_28, lv.PART.MAIN|lv.STATE.DEFAULT) + +up_show_bg_img_label1 = lv.label(up_show_screen) +up_show_bg_img_label1.set_pos(0, 50) +up_show_bg_img_label1.set_size(128, 20) +up_show_bg_img_label1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +up_show_bg_img_label1.set_text("0") +up_show_bg_img_label1.add_style(style_font_youyuan_28, lv.PART.MAIN|lv.STATE.DEFAULT) + +class up_Screen(Screen):#上滑界面 + NAME = "up_screen" + + def __init__(self): + super().__init__() + self.rtc = RTC() + self.timer = osTimer() + self.meta = up_show_screen + + def initialization(self): + print("up_screen") + + step = EventMesh.publish("get_old_step_value") + self.__stepValue(None, step) + self.timer.start(1000,1,self.time_out) + + def time_out(self,*argc): + step = EventMesh.publish("get_old_step_value") + self.__stepValue(None, step) + pass + + def __time(self, event, msg): + #时间 + rtc_time = self.rtc.datetime() + month = rtc_time[1] + day = rtc_time[2] + year = rtc_time[0] + # week = ("星期%s"%(self.get_week(rtc_time[3]))) + week_data = rtc_time[3] + # time = [rtc_time[4], rtc_time[5]] + + down_showt_time1_text.set_text("{}:{}".format("%02d"%(rtc_time[4]),"%02d"%(rtc_time[5]))) + down_show_date_span.set_text("%02d/%02d 星期%s"%(month,day,get_week(week))) + + def __signal(self, event, msg): + #print("__signal_cb:",str(msg)) + # 信号强度值范围0 ~ 31,值越大表示信号强度越好 + #print("__signal_cb:{}".format(msg//8)) + if msg: + if msg >= 0 and msg<=31 : + down_show_mpsignal_img.set_src("U:/static/mpsignal{}.png".format(msg//8+1)) + else : + down_show_mpsignal_img.set_src("U:/static/mpsignal5.png") + + def __battery(self, event, msg): + #print("__battery_cb:",str(msg)) + #print(msg) + if msg[0] == '1': + down_showt_battery_line.set_pos(int(0),int(0)) + down_showt_battery_line.set_size(0,0) + down_showt_battery_line.set_style_line_width(0,lv.PART.MAIN) + down_showt_battery_img.set_src("U:/static/charge_ing.png") + # watchface1_res_stat_charge_in_img.set_src("U:/static/charge_in.png") + else: + down_showt_battery_img.set_src("U:/static/vbat_0.png") + level = msg[1] + if level >= 99: + level = 100 + line_len = int(level*(21/100)) + # print("__battery_cb:",level,line_len,30/100) + if line_len >= 21: + line_len = 21 + if line_len <= 5: + line_len = 5 + + set_x = int(103+line_len//2) + down_showt_battery_line.set_pos(int(set_x),int(6)) + down_showt_battery_line.set_size(line_len,10) + down_showt_battery_line.set_style_line_width(line_len,lv.PART.MAIN) + if line_len <= 5: + down_showt_battery_line.set_style_line_color(lv.color_make(0xff,0x00,0x00),0) + else: + down_showt_battery_line.set_style_line_color(lv.color_make(0x00,0xff,0x00),0) + pass + + def __stepValue(self, event, msg): + if msg == None: + up_show_bg_img_label1.set_text("0") + else: + up_show_bg_img_label1.set_text(str(msg)) + + + def Close(self): + self.timer.stop() + + def done_bottom_to_top(self): + # print("done_bottom_to_top") + pass + + def done_top_to_bottom(self): + EventMesh.publish("watch_top_show") + EventMesh.publish("load_screen", {"screen": "main_menu"}) + + 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"}) camera_popup_screen = None camera_popup_label = None diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py index 1465054c..753f19f9 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py @@ -4,7 +4,7 @@ import lvgl as lv import EventMesh import osTimer import constants -from ui import Screen,style_screen +from ui import Screen,style_screen,style_font_youyuan_70_black,style_font_youyuan_28 import ql_fs import ujson from machine import RTC @@ -22,10 +22,7 @@ watchface_style_default.set_text_color(lv.color_make(0xff, 0xff, 0xff)) #watchface_style_default.set_text_font_v2("font_28.bin",28,0) watchface_style_default.set_text_font(lv.K01_font_16_ALL) -style_font_youyuan_28 = lv.style_t() -style_font_youyuan_28.init() -style_font_youyuan_28.set_text_color(lv.color_make(0xff, 0xff, 0xff)) -style_font_youyuan_28.set_text_font(lv.K01_font_16_ALL) + Watchface = lv.obj() print("Watchface") @@ -96,10 +93,7 @@ watchface1_res_stat_battery_line.add_style(power_line_red,0) #时间 -style_font_youyuan_70_black = lv.style_t() -style_font_youyuan_70_black.init() -style_font_youyuan_70_black.set_text_color(lv.color_make(0xFF, 0xFF, 0xFF)) -style_font_youyuan_70_black.set_text_font(lv.K01_font_30_DIAL) + #style_font_youyuan_70_black.set_text_font(lv.font_70_bold) #init3:(2106, 2, 7, 6, 29, 38, 6, 38) data = RTC().datetime() @@ -140,7 +134,7 @@ watchface1_time1_text.add_style(style_font_youyuan_70_black, lv.PART.MAIN|lv.STA #日期 watchface1_date_span = lv.label(Watchface1) watchface1_date_span.set_pos(4, 52) -watchface1_date_span.set_size(60, 20) +watchface1_date_span.set_size(124, 20) watchface1_date_span.set_align(lv.TEXT_ALIGN.LEFT) watchface1_date_span.set_text("%d月%d日"%(date1,date2)) watchface1_date_span.add_style(style_font_youyuan_28, lv.PART.MAIN|lv.STATE.DEFAULT) @@ -279,7 +273,7 @@ class WatchFace1(): else: watchface1_res_stat_battery_img.set_src("U:/static/vbat_0.png") level = msg[1] - if level >= 100: + if level >= 99: level = 100 line_len = int(level*(21/100)) # print("__battery_cb:",level,line_len,30/100) diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_main_menu.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_main_menu.py index 7c02406c..03e7b03d 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_main_menu.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_main_menu.py @@ -463,13 +463,13 @@ class MainMenuScreen(Screen): def done_bottom_to_top(self): id = MainMenu2_til.get_tile_act().get_child(0).get_text() if id == "4": - EventMesh.publish("load_screen", {"screen": "call_log"}) + EventMesh.publish("load_screen", {"screen": "up_screen"}) self.menu_id = id def done_top_to_bottom(self): id = MainMenu2_til.get_tile_act().get_child(0).get_text() if id == "4": - EventMesh.publish("load_screen", {"screen": "popup"}) + EventMesh.publish("load_screen", {"screen": "down_screen"}) self.menu_id = id def done_left_to_right(self): self.menu_id = id diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py index 9d0570ba..f55e29e3 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py @@ -3,7 +3,7 @@ import lvgl as lv import ql_fs import EventMesh from misc import Power -from ui import style_screen,style_font_youyuan_20_gray,style_screen_btn_1_main_main_default,style_font_youyuan_20,style_btn,style_img,Screen,style_contact_btn,style_bar,style_bar_indic +from ui import style_screen,style_font_youyuan_20_black,style_font_youyuan_20_gray,style_screen_btn_1_main_main_default,style_font_youyuan_20,style_btn,style_img,Screen,style_contact_btn,style_bar,style_bar_indic import constants import osTimer import audio @@ -299,7 +299,7 @@ setting_restart_img = lv.img(setting_cont) setting_restart_img.set_pos(4, setting_cont_y) setting_restart_img.set_size(set_icon_x, set_icon_y) # setting_poweroff_img.add_flag(lv.obj.FLAG.CLICKABLE) -setting_restart_img.set_src("U:/static/menu_poweroff.png") +setting_restart_img.set_src("U:/static/menu_restart.png") setting_restart_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) @@ -1055,43 +1055,184 @@ restart_screen = lv.obj() print("restart_screen") restart_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) -restart_confirm_label = lv.label(restart_screen) -restart_confirm_label.set_text("确认") -restart_confirm_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -restart_confirm_label.set_size(64, 20) -restart_confirm_label.set_pos(0,60) -restart_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - - -restart_confirm = lv.label(restart_screen) -restart_confirm.set_text(" ") -restart_confirm.set_size(64, 40) -restart_confirm.set_pos(0,60) -restart_confirm.add_flag(lv.obj.FLAG.CLICKABLE) - -restart_cancel_label = lv.label(restart_screen) -restart_cancel_label.set_text("返回") -restart_cancel_label.set_size(64, 20) -restart_cancel_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -restart_cancel_label.set_pos(64,60) -restart_cancel_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - -restart_cancel = lv.label(restart_screen) -restart_cancel.set_text(" ") -restart_cancel.set_size(64, 40) -restart_cancel.set_pos(64,60) -restart_cancel.add_flag(lv.obj.FLAG.CLICKABLE) - +# restart_confirm_label = lv.label(restart_screen) +# restart_confirm_label.set_text("确认") +# restart_confirm_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +# restart_confirm_label.set_size(64, 20) +# restart_confirm_label.set_pos(0,80) +# restart_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + + +# restart_confirm = lv.label(restart_screen) +# restart_confirm.set_text(" ") +# restart_confirm.set_size(64, 40) +# restart_confirm.set_pos(0,80) +# restart_confirm.add_flag(lv.obj.FLAG.CLICKABLE) + +# restart_cancel_label = lv.label(restart_screen) +# restart_cancel_label.set_text("返回") +# restart_cancel_label.set_size(64, 20) +# restart_cancel_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +# restart_cancel_label.set_pos(64,80) +# restart_cancel_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + +# restart_cancel = lv.label(restart_screen) +# restart_cancel.set_text(" ") +# restart_cancel.set_size(64, 40) +# restart_cancel.set_pos(64,80) +# restart_cancel.add_flag(lv.obj.FLAG.CLICKABLE) + + +screen_slider_1 = lv.slider(restart_screen) +screen_slider_1.set_pos(int(4),int(55)) +screen_slider_1.set_size(120,40) +screen_slider_1.set_scrollbar_mode(lv.SCROLLBAR_MODE.ON) +screen_slider_1.set_range(0, 100) +screen_slider_1.set_value(0, False) +screen_slider_1.add_flag(lv.obj.FLAG.ADV_HITTEST) + +# screen_slider_1.set_mode(lv.BAR_MODE.RANGE)#LV_BAR_MODE_RANGE + +# create style style_screen_slider_1_main_main_default +style_screen_slider_1_main_main_default = lv.style_t() +style_screen_slider_1_main_main_default.init() +style_screen_slider_1_main_main_default.set_radius(40) +style_screen_slider_1_main_main_default.set_bg_color(lv.color_make(0x00,0x00,0x00)) +style_screen_slider_1_main_main_default.set_bg_grad_color(lv.color_make(0x00,0x00,0x00)) +style_screen_slider_1_main_main_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) +style_screen_slider_1_main_main_default.set_bg_opa(0) +style_screen_slider_1_main_main_default.set_outline_color(lv.color_make(0xff,0xff,0xff)) +style_screen_slider_1_main_main_default.set_outline_width(5) +style_screen_slider_1_main_main_default.set_outline_opa(0) + +# add style for screen_slider_1 +screen_slider_1.add_style(style_screen_slider_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT) + +# create style style_screen_slider_1_main_main_focused +style_screen_slider_1_main_main_focused = lv.style_t() +style_screen_slider_1_main_main_focused.init() +style_screen_slider_1_main_main_focused.set_outline_color(lv.color_make(0x00,0x00,0x00)) +style_screen_slider_1_main_main_focused.set_outline_opa(255) + +# add style for screen_slider_1 +screen_slider_1.add_style(style_screen_slider_1_main_main_focused, lv.PART.MAIN|lv.STATE.FOCUSED) + +# create style style_screen_slider_1_main_indicator_default +style_screen_slider_1_main_indicator_default = lv.style_t() +style_screen_slider_1_main_indicator_default.init() +style_screen_slider_1_main_indicator_default.set_radius(40) +style_screen_slider_1_main_indicator_default.set_bg_color(lv.color_make(0x80,0x80,0x80)) +style_screen_slider_1_main_indicator_default.set_bg_grad_color(lv.color_make(0x00,0x00,0x00)) +style_screen_slider_1_main_indicator_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) +style_screen_slider_1_main_indicator_default.set_bg_opa(100) + +# add style for screen_slider_1 +screen_slider_1.add_style(style_screen_slider_1_main_indicator_default, lv.PART.INDICATOR|lv.STATE.DEFAULT) + +# # create style style_screen_slider_1_main_indicator_focused +style_screen_slider_1_main_indicator_focused = lv.style_t() +style_screen_slider_1_main_indicator_focused.init() +style_screen_slider_1_main_indicator_focused.set_radius(40) +style_screen_slider_1_main_indicator_focused.set_bg_color(lv.color_make(0x00,0x00,0x00)) +style_screen_slider_1_main_indicator_focused.set_bg_grad_color(lv.color_make(0x00,0x00,0x00)) +style_screen_slider_1_main_indicator_focused.set_bg_grad_dir(lv.GRAD_DIR.NONE) +style_screen_slider_1_main_indicator_focused.set_bg_opa(0) + +# # add style for screen_slider_1 +# screen_slider_1.add_style(style_screen_slider_1_main_indicator_focused, lv.PART.INDICATOR|lv.STATE.FOCUSED) + +# create style style_screen_slider_1_main_knob_default +style_screen_slider_1_main_knob_default = lv.style_t() +style_screen_slider_1_main_knob_default.init() +style_screen_slider_1_main_knob_default.set_radius(40) +style_screen_slider_1_main_knob_default.set_bg_color(lv.color_make(0x00,0x00,0x00)) +style_screen_slider_1_main_knob_default.set_bg_grad_color(lv.color_make(0x00,0x00,0x00)) +style_screen_slider_1_main_knob_default.set_bg_grad_dir(lv.GRAD_DIR.NONE) +style_screen_slider_1_main_knob_default.set_bg_opa(0) +style_screen_slider_1_main_knob_default.set_border_width(0) +style_screen_slider_1_main_knob_default.set_pad_all(0) + +# add style for screen_slider_1 +screen_slider_1.add_style(style_screen_slider_1_main_knob_default, lv.PART.KNOB|lv.STATE.DEFAULT) + + + +screen_slider_img_bg = lv.img(restart_screen) +screen_slider_img_bg.set_size(120,40) +screen_slider_img_bg.set_pos(4,55) +screen_slider_img_bg.set_src("U:/static/setting_poweroff_bg.png") +screen_slider_img_bg.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + +screen_slider_img = lv.img(restart_screen) +screen_slider_img.set_size(30,30) +screen_slider_img.set_pos(10,65) +screen_slider_img.set_src("U:/static/setting_power_restart.png") +# screen_slider_img.add_flag(lv.obj.FLAG.CLICKABLE) +screen_slider_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + + +restart_power_label = lv.label(restart_screen) +restart_power_label.set_text("滑动重启") +restart_power_label.set_size(128, 20) +restart_power_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +restart_power_label.set_pos(0,20) +restart_power_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) class RestartScreen(Screen): NAME = "restart" def __init__(self): super().__init__() self.meta = restart_screen - restore_confirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),lv.EVENT.CLICKED, None) - restart_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),lv.EVENT.CLICKED, None) - + self.old_x = 0 + # restart_confirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),lv.EVENT.CLICKED, None) + # restart_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),lv.EVENT.CLICKED, None) + screen_slider_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.save_choice(e)), lv.EVENT.VALUE_CHANGED, None) + screen_slider_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.save_choice(e)), lv.EVENT.RELEASED, None) + def initialization(self): + screen_slider_1.set_value(10, False) + screen_slider_img.set_pos(10,60) + screen_slider_1.set_style_bg_color(lv.color_make(0x00,0x00,0x00), lv.PART.INDICATOR|lv.STATE.DEFAULT) + + def save_choice(self,e): + state_on = 0 + state_offset = 0 + code = e.get_code() + value_slider = screen_slider_1.get_value() + total_len = 0+value_slider + if total_len >= 100-7: + total_len = 100-7 + if total_len <= 10: + total_len = 10 + + if total_len >= 100-7: + screen_slider_1.set_value(100, False) + + if total_len >= 20: + if total_len > 80: + screen_slider_img.set_pos(total_len,60) + else: + screen_slider_img.set_pos(total_len-5,60) + else: + screen_slider_img.set_pos(total_len,60) + screen_slider_1.set_style_bg_color(lv.color_make(0x80,0x80,0x80), lv.PART.INDICATOR|lv.STATE.DEFAULT) + + # print("RELEASED save_choice!!!!!!",code,total_len,value_slider,state_offset) + if code == lv.EVENT.RELEASED: + value_slider = screen_slider_1.get_value() + # print("RELEASED save_choice1111111!!!!!!",total_len,value_slider,state_on) + if total_len < 100-7: + screen_slider_1.set_value(10, False) + screen_slider_img.set_pos(10,60) + screen_slider_1.set_style_bg_color(lv.color_make(0x00,0x00,0x00), lv.PART.INDICATOR|lv.STATE.DEFAULT) + else: + screen_slider_1.set_value(100, False) + self.confirm(0) + pass + + # print("save_choice!!!!!!",value_slider) + pass + def confirm(self, e): Power.powerRestart() @@ -1170,54 +1311,104 @@ poweroff_screen = lv.obj() print("poweroff_screen") poweroff_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) -poweroff_img = lv.img(poweroff_screen) -poweroff_img.set_pos(49, 5) -poweroff_img.set_size(30, 30) -poweroff_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) -poweroff_img.set_src("U:/static/poweroff_icon.png") - -poweroff_label = lv.label(poweroff_screen) -poweroff_label.set_text("是否关机?") -poweroff_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) -poweroff_label.set_size(128, 20) -poweroff_label.set_pos(0,40) -poweroff_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - -poweroff_confirm_img = lv.img(poweroff_screen) -poweroff_confirm_img.set_size(88, 23) -poweroff_confirm_img.set_pos(24, 65) -poweroff_confirm_img.set_src("U:/static/off_icon.png") -poweroff_confirm_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - -poweroff_confirm_imgbtn = lv.img(poweroff_screen) -poweroff_confirm_imgbtn.set_size(128, 35) -poweroff_confirm_imgbtn.set_pos(0, 60) -poweroff_confirm_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE) -poweroff_confirm_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - - -poweroff_confirm_label = lv.label(poweroff_confirm_img) -poweroff_confirm_label.set_text("关机") -poweroff_confirm_label.align(lv.ALIGN.CENTER, 0, 0) -poweroff_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) +# poweroff_img = lv.img(poweroff_screen) +# poweroff_img.set_pos(49, 5) +# poweroff_img.set_size(30, 30) +# poweroff_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) +# poweroff_img.set_src("U:/static/setting_poweroff.png") + +# poweroff_label = lv.label(poweroff_screen) +# poweroff_label.set_text("是否关机?") +# poweroff_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +# poweroff_label.set_size(128, 20) +# poweroff_label.set_pos(0,40) +# poweroff_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + +# poweroff_confirm_img = lv.img(poweroff_screen) +# poweroff_confirm_img.set_size(88, 23) +# poweroff_confirm_img.set_pos(24, 65) +# poweroff_confirm_img.set_src("U:/static/off_icon.png") +# poweroff_confirm_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + +# poweroff_confirm_imgbtn = lv.img(poweroff_screen) +# poweroff_confirm_imgbtn.set_size(128, 35) +# poweroff_confirm_imgbtn.set_pos(0, 60) +# poweroff_confirm_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE) +# poweroff_confirm_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + + +# poweroff_confirm_label = lv.label(poweroff_confirm_img) +# poweroff_confirm_label.set_text("关机") +# poweroff_confirm_label.align(lv.ALIGN.CENTER, 0, 0) +# poweroff_confirm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + +# poweroff_return = lv.img(poweroff_screen) +# poweroff_return.set_size(88, 23) +# poweroff_return.set_pos(24, 100) +# poweroff_return.set_src("U:/static/cancel_icon.png") +# poweroff_return.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + +# poweroff_return_btn = lv.img(poweroff_screen) +# poweroff_return_btn.set_size(128, 33) +# poweroff_return_btn.set_pos(0, 95) +# poweroff_return_btn.add_flag(lv.obj.FLAG.CLICKABLE) +# poweroff_return_btn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + +# poweroff_return_label = lv.label(poweroff_return) +# poweroff_return_label.set_text("返回") +# poweroff_return_label.align(lv.ALIGN.CENTER, 0, 0) +# poweroff_return_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) +# poweroff_return.set_ext_click_area(20) + -poweroff_return = lv.img(poweroff_screen) -poweroff_return.set_size(88, 23) -poweroff_return.set_pos(24, 100) -poweroff_return.set_src("U:/static/cancel_icon.png") -poweroff_return.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) +poweroff_screen_slider_1 = lv.slider(poweroff_screen) +poweroff_screen_slider_1.set_pos(int(4),int(55)) +poweroff_screen_slider_1.set_size(120,40) +poweroff_screen_slider_1.set_scrollbar_mode(lv.SCROLLBAR_MODE.ON) +poweroff_screen_slider_1.set_range(0, 100) +poweroff_screen_slider_1.set_value(10, False) +poweroff_screen_slider_1.add_flag(lv.obj.FLAG.ADV_HITTEST) -poweroff_return_btn = lv.img(poweroff_screen) -poweroff_return_btn.set_size(128, 33) -poweroff_return_btn.set_pos(0, 95) -poweroff_return_btn.add_flag(lv.obj.FLAG.CLICKABLE) -poweroff_return_btn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) +# screen_slider_1.set_mode(lv.BAR_MODE.RANGE)#LV_BAR_MODE_RANGE +# add style for screen_slider_1 +poweroff_screen_slider_1.add_style(style_screen_slider_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT) + + + +# add style for screen_slider_1 +poweroff_screen_slider_1.add_style(style_screen_slider_1_main_main_focused, lv.PART.MAIN|lv.STATE.FOCUSED) + + + +# add style for screen_slider_1 +poweroff_screen_slider_1.add_style(style_screen_slider_1_main_indicator_default, lv.PART.INDICATOR|lv.STATE.DEFAULT) + +# +poweroff_screen_slider_1.add_style(style_screen_slider_1_main_knob_default, lv.PART.KNOB|lv.STATE.DEFAULT) + + + +poweroff_screen_slider_img_bg = lv.img(poweroff_screen) +poweroff_screen_slider_img_bg.set_size(120,40) +poweroff_screen_slider_img_bg.set_pos(4,55) +poweroff_screen_slider_img_bg.set_src("U:/static/setting_poweroff_bg.png") +poweroff_screen_slider_img_bg.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + +poweroff_screen_slider_img = lv.img(poweroff_screen) +poweroff_screen_slider_img.set_size(30,30) +poweroff_screen_slider_img.set_pos(10,65) +poweroff_screen_slider_img.set_src("U:/static/setting_poweroff.png") +# screen_slider_img.add_flag(lv.obj.FLAG.CLICKABLE) +poweroff_screen_slider_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + + +poweroff_power_label = lv.label(poweroff_screen) +poweroff_power_label.set_text("滑动关机") +poweroff_power_label.set_size(128, 20) +poweroff_power_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) +poweroff_power_label.set_pos(0,20) +poweroff_power_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) -poweroff_return_label = lv.label(poweroff_return) -poweroff_return_label.set_text("返回") -poweroff_return_label.align(lv.ALIGN.CENTER, 0, 0) -poweroff_return_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) -poweroff_return.set_ext_click_area(20) class PoweroffScreen(Screen): @@ -1226,10 +1417,49 @@ class PoweroffScreen(Screen): def __init__(self): super().__init__() self.meta = poweroff_screen - poweroff_confirm_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),lv.EVENT.CLICKED, None) - poweroff_return_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),lv.EVENT.CLICKED, None) + + poweroff_screen_slider_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.save_choice(e)), lv.EVENT.VALUE_CHANGED, None) + poweroff_screen_slider_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.save_choice(e)), lv.EVENT.RELEASED, None) + def initialization(self): + poweroff_screen_slider_1.set_value(10, False) + poweroff_screen_slider_img.set_pos(10,60) + poweroff_screen_slider_1.set_style_bg_color(lv.color_make(0x00,0x00,0x00), lv.PART.INDICATOR|lv.STATE.DEFAULT) + + def save_choice(self,e): + code = e.get_code() + value_slider = poweroff_screen_slider_1.get_value() + total_len = 0+value_slider + if total_len >= 100-7: + total_len = 100-7 + if total_len <= 10: + total_len = 10 + + if total_len >= 100-7: + poweroff_screen_slider_1.set_value(100, False) + + if total_len >= 20: + if total_len > 80: + poweroff_screen_slider_img.set_pos(total_len,60) + else: + poweroff_screen_slider_img.set_pos(total_len-5,60) + else: + poweroff_screen_slider_img.set_pos(total_len,60) + poweroff_screen_slider_1.set_style_bg_color(lv.color_make(0x80,0x80,0x80), lv.PART.INDICATOR|lv.STATE.DEFAULT) + + if code == lv.EVENT.RELEASED: + value_slider = poweroff_screen_slider_1.get_value() + if total_len < 100-7: + poweroff_screen_slider_1.set_value(10, False) + poweroff_screen_slider_img.set_pos(10,60) + poweroff_screen_slider_1.set_style_bg_color(lv.color_make(0x00,0x00,0x00), lv.PART.INDICATOR|lv.STATE.DEFAULT) + else: + poweroff_screen_slider_1.set_value(100, False) + self.confirm(0) + pass + + # print("save_choice!!!!!!",value_slider) pass def done_return(self): diff --git a/2.sdk/project/K01/usr/static/menu_calcut.png b/2.sdk/project/K01/usr/static/menu_calcut.png new file mode 100644 index 00000000..dc805947 Binary files /dev/null and b/2.sdk/project/K01/usr/static/menu_calcut.png differ diff --git a/2.sdk/project/K01/usr/static/menu_restart.png b/2.sdk/project/K01/usr/static/menu_restart.png new file mode 100644 index 00000000..64768061 Binary files /dev/null and b/2.sdk/project/K01/usr/static/menu_restart.png differ diff --git a/2.sdk/project/K01/usr/static/setting_power_restart.png b/2.sdk/project/K01/usr/static/setting_power_restart.png new file mode 100644 index 00000000..8b632396 Binary files /dev/null and b/2.sdk/project/K01/usr/static/setting_power_restart.png differ diff --git a/2.sdk/project/K01/usr/static/setting_poweroff.png b/2.sdk/project/K01/usr/static/setting_poweroff.png new file mode 100644 index 00000000..c1e61614 Binary files /dev/null and b/2.sdk/project/K01/usr/static/setting_poweroff.png differ diff --git a/2.sdk/project/K01/usr/static/setting_poweroff_bg.png b/2.sdk/project/K01/usr/static/setting_poweroff_bg.png new file mode 100644 index 00000000..6593ff21 Binary files /dev/null and b/2.sdk/project/K01/usr/static/setting_poweroff_bg.png differ diff --git a/2.sdk/project/K01/usr/static/up_show_step.png b/2.sdk/project/K01/usr/static/up_show_step.png new file mode 100644 index 00000000..1f4f6a31 Binary files /dev/null and b/2.sdk/project/K01/usr/static/up_show_step.png differ diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py index c9418eff..7d7d0ddc 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py @@ -158,7 +158,7 @@ watchface1_week_span.add_style(style_font_youyuan_28, lv.PART.MAIN|lv.STATE.DEFA watchface1_step_span = lv.label(Watchface1) watchface1_step_span.set_pos(142, 159) -watchface1_step_span.set_size(78, 30) +watchface1_step_span.set_size(240-142, 30) watchface1_step_span.set_align(lv.TEXT_ALIGN.LEFT) watchface1_step_span.set_text("0") watchface1_step_span.add_style(style_font_youyuan_28, lv.PART.MAIN|lv.STATE.DEFAULT) @@ -444,7 +444,7 @@ watchface2_step_img.add_style(style_watchface_img_default, lv.PART.MAIN|lv.STATE watchface2_step_txt = lv.label(Watchface2) watchface2_step_txt.set_pos(125, 260) -watchface2_step_txt.set_size(80, 35) +watchface2_step_txt.set_size(240-125, 35) watchface2_step_txt.set_align(lv.TEXT_ALIGN.LEFT) watchface2_step_txt.set_text("0") watchface2_step_txt.add_style(style_font_youyuan_28, lv.PART.MAIN|lv.STATE.DEFAULT)