From: dxy15521469561 <1731678236@qq.com> Date: Sat, 23 Dec 2023 10:09:25 +0000 (+0800) Subject: C06S: X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=b107076a5c2e87f3942a8a774ca2a9a786f2f4ca;p=mirrors%2FASR1603_G5.git C06S: bug优化 D10: 优化 K5: bug优化 --- diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/appWechat.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/appWechat.py index a81ca625..3d4c3d03 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/appWechat.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/appWechat.py @@ -656,324 +656,3 @@ class NewWechatPopupScreen(Screen): EventMesh.publish("load_screen", {"screen": "main_menu"}) -class TKS_ProtoCol(ProtoCol): - """微聊""" - TYPE = "TKS" - - - def send(self, event, msg): - if len(str(msg)) == 1: - len_size = len(str(msg))+len("TKS,") - # 实例:[XT*334588000000156*0009*TK,1] - send_data = self.PID+"*%s*%04X*TKS"%(self.imei,len_size) - MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TKS") - MD5_SIGN = self.pack_MD5_head(MD5_head_data) - data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg) - print("TKS:data:%s"%(data)) - # 通过socket发送到服务器端 - EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) - - else: - # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据] - #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据] - arm_data = msg[1] - arm_sec = msg[0] - # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec)) - - arm = bytearray() - for i in range(len(arm_data)): - if arm_data[i] == 0x7d: - arm.extend(b'\x7d\x01') - elif arm_data[i] == 0x5b : - arm.extend(b'\x7d\x02') - elif arm_data[i] == 0x5d : - arm.extend(b'\x7d\x03') - elif arm_data[i] == 0x2c : - arm.extend(b'\x7d\x04') - elif arm_data[i] == 0x2a : - arm.extend(b'\x7d\x05') - else : - arm.append(arm_data[i]) - - datalen = len(arm) + len(str("TKS,"))+len(str(arm_sec))+1 - #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1)) - send_data = bytearray("SZKW*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec)) - send_data.extend(arm) - MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TKS") - MD5_SIGN = self.pack_MD5_head(MD5_head_data) - data = bytearray('[') - data.extend(MD5_SIGN) - data.extend(send_data) - data.extend(']') - # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data)) - EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) - - - def recv(self, event, msg): - """ - - ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) - @param event: 微聊 - @param msg: 接收到的下行数据 - [SZKW*860132060004322*20BD*TK,#!AMR...] - """ - #Wechat_log("K_ProtoCol:recv:data:{}".format(msg)) - # print("TK recv:{}".format(msg)) - msg_tmp = msg.decode('ascii') - str = msg_tmp.split('TKS,') - # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR"))) - if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据 - # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg))) - arm_data = bytearray(str[1])#获取amr输出 - get_wechat_data = EventMesh.publish("get_wechat_data") - - MXA_MSG = get_wechat_data[0] - wechat_recode_list = get_wechat_data[1] - wechat_num = wechat_recode_list["num"] - # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) - - if wechat_num >= MXA_MSG: - wechat_num = 0 - if wechat_num == 0: - wechat_num += 1 - elif wechat_num > 0: - wechat_num += 1 - - - Wechat_log("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list)) - wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3) - wechat_recode_list['num'] = wechat_num - EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list]) - #写语音文件数据 - screen_NAME = EventMesh.publish("get_screen_NAME") - get_lcd_state = EventMesh.publish("get_lcd_state") - if screen_NAME != "wechat" or get_lcd_state == 0: - 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 = "/ext/static/storage_file/{}.amr".format(wechat_num) - with open(path,"w") as fd: - arm = bytearray() - j = 0 - for i in range(len(arm_data)): - if arm_data[j] == 0x7d and arm_data[j+1] == 0x01: - arm.extend(b'\x7d') - j+=1 - elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02: - arm.extend(b'\x5b') - j+=1 - elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03: - arm.extend(b'\x5d') - j+=1 - elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04: - arm.extend(b'\x2c') - j+=1 - elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05: - arm.extend(b'\x2a') - j+=1 - else : - arm.append(arm_data[j]) - j+=1 - if j >= len(arm_data): - break - fd.write(arm) - EventMesh.publish(constants.PROTOCOL.TKS_SEND,1) - - - - - -class TK_ProtoCol(ProtoCol): - """微聊""" - TYPE = "TK" - - - def send(self, event, msg): - # print("TK send:{}".format(msg)) - if len(str(msg)) == 1: - - len_size = len(str(msg))+len("TK,") - # 实例:[XT*334588000000156*0009*TK,1] - send_data = self.PID+"*%s*%04X*TK"%(self.imei,len_size) - MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TK") - MD5_SIGN = self.pack_MD5_head(MD5_head_data) - data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg) - print("TK:data:%s"%(data)) - # 通过socket发送到服务器端 - EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) - - else: - # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据] - #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据] - arm_data = msg[1] - arm_sec = msg[0] - # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec)) - - arm = bytearray() - for i in range(len(arm_data)): - if arm_data[i] == 0x7d: - arm.extend(b'\x7d\x01') - elif arm_data[i] == 0x5b : - arm.extend(b'\x7d\x02') - elif arm_data[i] == 0x5d : - arm.extend(b'\x7d\x03') - elif arm_data[i] == 0x2c : - arm.extend(b'\x7d\x04') - elif arm_data[i] == 0x2a : - arm.extend(b'\x7d\x05') - else : - arm.append(arm_data[i]) - - datalen = len(arm) +len(str("TK,"))+len(str(arm_sec))+1 - #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1)) - send_data = bytearray("SZKW*%s*%04X*TK,%d,"%(self.imei,datalen,arm_sec)) - send_data.extend(arm) - MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TK") - MD5_SIGN = self.pack_MD5_head(MD5_head_data) - data = bytearray('[') - data.extend(MD5_SIGN) - data.extend(send_data) - data.extend(']') - # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data)) - EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) - - - def recv(self, event, msg): - """ - - ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) - @param event: 微聊 - @param msg: 接收到的下行数据 - [SZKW*860132060004322*20BD*TK,#!AMR...] - """ - #Wechat_log("K_ProtoCol:recv:data:{}".format(msg)) - # print("TK recv:{}".format(msg)) - msg_tmp = msg.decode('ascii') - str = msg_tmp.split('TK,') - # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR"))) - if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据 - # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg))) - arm_data = bytearray(str[1])#获取amr输出 - get_wechat_data = EventMesh.publish("get_wechat_data") - - MXA_MSG = get_wechat_data[0] - wechat_recode_list = get_wechat_data[1] - wechat_num = wechat_recode_list["num"] - # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) - - if wechat_num >= MXA_MSG: - wechat_num = 0 - if wechat_num == 0: - wechat_num += 1 - elif wechat_num > 0: - wechat_num += 1 - - - Wechat_log("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list)) - wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3) - wechat_recode_list['num'] = wechat_num - EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list]) - #写语音文件数据 - screen_NAME = EventMesh.publish("get_screen_NAME") - get_lcd_state = EventMesh.publish("get_lcd_state") - if screen_NAME != "wechat" or get_lcd_state == 0: - 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 = "/ext/static/storage_file/{}.amr".format(wechat_num) - with open(path,"w") as fd: - arm = bytearray() - j = 0 - for i in range(len(arm_data)): - if arm_data[j] == 0x7d and arm_data[j+1] == 0x01: - arm.extend(b'\x7d') - j+=1 - elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02: - arm.extend(b'\x5b') - j+=1 - elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03: - arm.extend(b'\x5d') - j+=1 - elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04: - arm.extend(b'\x2c') - j+=1 - elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05: - arm.extend(b'\x2a') - j+=1 - else : - arm.append(arm_data[j]) - j+=1 - if j >= len(arm_data): - break - fd.write(arm) - EventMesh.publish(constants.PROTOCOL.TK_SEND,1) - - - - - -class MESSAGE_ProtoCol(ProtoCol): - """微聊""" - TYPE = "MESSAGE" - - - def send(self, event, msg): - - #[XT*334588000000156*0007*MESSAGE] - send_data = "SZKW*%s*0007*MESSAGE"%(self.imei) - MD5_SIGN = self.pack_MD5_head(send_data) - data = "[%s%s]"%(str(MD5_SIGN),send_data) - #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data)) - # 通过socket发送到服务器端 - EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) - - def recv(self, event, msg): - """ - - @param event: 微聊文字 - @param msg: 接收到的下行数据 - """ - msg = msg[1:-1] - - msg_s = msg.decode('ascii') - msg_s = msg_s.split(',') - msg_s = msg_s[1] - # Wechat_log("msg_tmp:len:{}\r\n data:{}".format(len(msg_s),msg_s)) - - - get_wechat_data = EventMesh.publish("get_wechat_data") - - MXA_MSG = get_wechat_data[0] - wechat_recode_list = get_wechat_data[1] - wechat_num = wechat_recode_list["num"] - # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) - - if wechat_num >= MXA_MSG: - wechat_num = 0 - if wechat_num == 0: - wechat_num += 1 - elif wechat_num > 0: - wechat_num += 1 - msg_txt = {} - # 0 1 2 3 - Wechat_log("wechat_num:init {}".format(wechat_num)) - msg_txt = UnicodeHexStr_To_Utf8Str(msg_s) - # Wechat_log("msg_txt:{}".format(msg_txt)) - wechat_recode_list["%02d"%(wechat_num)] = "T:{}".format(msg_txt) - wechat_recode_list['num'] = wechat_num - EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list]) - # Wechat_log("wechat_recode_list:len data:{}".format(wechat_recode_list)) - EventMesh.publish(constants.PROTOCOL.MESSAGE_SEND) - screen_NAME = EventMesh.publish("get_screen_NAME") - get_lcd_state = EventMesh.publish("get_lcd_state") - if screen_NAME != "wechat" or get_lcd_state == 0: - EventMesh.publish("load_screen", {"screen": "wechat_popup"}) - else: - EventMesh.publish("wechat_updata_list_show") - - - - - diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/main_init.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/main_init.py index d4eda3e6..ce3b261f 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/main_init.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/main_init.py @@ -70,7 +70,7 @@ def main_init(): from mgr import schoolclassManager,setCallStateManager,setclassTimeManager,setSmsIndexManager,ConfigStoreManager,testSmsSetIPManager,playPowerAudioManager,sosInfoCallManager,getBootOffManager,getSosFlagManager,CountdownManager, LocationManager, getVolumSizeManager,gethistoryDataManager,getUpLoadDataManager, getplayAudiodStateManager,\ AddrBookManager,MsgdetailManager,PhoneCallingManager,getOldTimeManager,getStorageDataManager,getBrightnessManager,getHrTimeManager,getTempTimeManager,getLowBatManager from motor import motorEventManager - from appWechat import WechatScreen,TKS_ProtoCol,TK_ProtoCol,MESSAGE_ProtoCol,NewWechatPopupScreen + from appWechat import WechatScreen,NewWechatPopupScreen # from protocol import REMOVE_ProtoCol,HELP_ProtoCol,FALLDOWN_ProtoCol,AL_ProtoCol,bldstart_ProtoCol,blood_ProtoCol,SCREEN_SHOWProtoCol,btemp2_ProtoCol,bodytemp2_ProtoCol,TEMP_Hour_ProtoCol,SILENCETIMEFS_ProtoCol,KEYBRD_ProtoCol,SILENCETIME2_ProtoCol,WLKEY_ProtoCol,LK_ProtoCol,PING_ProtoCol,HEART_ProtoCol,OXYGEN_ProtoCol,OXYGEN_One_ProtoCol,HRSTART_ProtoCol,CENTER_ProtoCol,UPLOAD_ProtoCol,\ # TEMP_ProtoCol,DLT_ProtoCol,WT_ProtoCol,UD_ProtoCol,REMIND_ProtoCol, CR_ProtoCol,KA_ProtoCol,FIND_ProtoCol,POWEROFF_ProtoCol,Time_ProtoCol,\ @@ -319,9 +319,9 @@ def main_init(): pcr.add_support(protocol.bodytemp2_ProtoCol()) pcr.add_support(protocol.btemp2_ProtoCol()) pcr.add_support(protocol.SCREEN_SHOWProtoCol()) - pcr.add_support(TKS_ProtoCol()) - pcr.add_support(TK_ProtoCol()) - pcr.add_support(MESSAGE_ProtoCol()) + pcr.add_support(protocol.TKS_ProtoCol()) + pcr.add_support(protocol.TK_ProtoCol()) + pcr.add_support(protocol.MESSAGE_ProtoCol()) pcr.add_support(protocol.blood_ProtoCol()) pcr.add_support(protocol.bldstart_ProtoCol()) diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py index 7456f41a..5a53e102 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/mgr.py @@ -492,9 +492,11 @@ class sosInfoCallManager(Abstract): def set_sos_info_call(self, event, msg): hangup_mode = EventMesh.publish("get_hangup_mode") if hangup_mode == 1: + EventMesh.publish("set_sos_flag",0) EventMesh.publish("set_sos_num",0) EventMesh.publish("set_hangup_mode",0) + print('hangup_mode disconnect',hangup_mode) sos_flag = EventMesh.publish("get_sos_flag") print('voicecall sos_flag',sos_flag) @@ -540,25 +542,31 @@ class sosInfoCallManager(Abstract): # print("number:{} number_len :{}".format(number,len(number))) EventMesh.publish("set_sos_num",num) if len(number) == 1: - EventMesh.publish("set_callnumer_cb",number[0]) - print("phone 1") + if len(number[0]) != 0: + EventMesh.publish("set_callnumer_cb",number[0]) + print("phone 1") elif len(number) == 2: if num == 1 or num == 3: print("phone 2") - EventMesh.publish("set_callnumer_cb",number[1]) + if len(number[1]) != 0: + EventMesh.publish("set_callnumer_cb",number[1]) elif num == 2: print("phone 3") - EventMesh.publish("set_callnumer_cb",number[0]) + if len(number[0]) != 0: + EventMesh.publish("set_callnumer_cb",number[0]) elif len(number) == 3: if num == 1 or num == 4: - EventMesh.publish("set_callnumer_cb",number[1]) + if len(number[1]) != 0: + EventMesh.publish("set_callnumer_cb",number[1]) print("phone 4") elif num == 2 or num == 5: print("phone 5") - EventMesh.publish("set_callnumer_cb",number[2]) + if len(number[2]) != 0: + EventMesh.publish("set_callnumer_cb",number[2]) elif num == 3: - print("phone 6") - EventMesh.publish("set_callnumer_cb",number[0]) + if len(number[0]) != 0: + print("phone 6") + EventMesh.publish("set_callnumer_cb",number[0]) WL_timer = osTimer() def WL_timer_cb(*args): @@ -612,7 +620,9 @@ def voice_callback(args): sos_flag = EventMesh.publish("get_sos_flag") if sos_flag == 1: sos_flag = 0 + EventMesh.publish("close_sos_timer") EventMesh.publish("set_sos_flag",0) + EventMesh.publish("set_sos_num",0) print('voicecall connected, PhoneNO.: ', args[6]) size_len = len(str(args[6])) @@ -3281,6 +3291,10 @@ class getSosFlagManager(Abstract):#设置sos EventMesh.subscribe("set_hangup_mode", self.set_hangup_mode) EventMesh.subscribe("get_hangup_mode", self.get_hangup_mode)#获取挂断方式 是对方挂断 还是手表按键主动挂断 + EventMesh.subscribe("send_sos_to_app",self.send_sos_to_app) + + EventMesh.subscribe("close_sos_timer",self.close_sos_timer) + def get_hangup_mode(self, event, msg): # 1是设备端手表主动挂断 0是手机端 return self.hangup_mode @@ -3308,22 +3322,31 @@ class getSosFlagManager(Abstract):#设置sos #voiceCall.callStart(str(number[0])) def set_callnumer_cb(self, event, msg): - - self.callnumer = msg - self.call_timer.start(8000, 0, self.call_timer_cb)#延迟8S 继续拨打 + if self.sos_flag == 1: + print("sos set_callnumer_cb!!!") + self.callnumer = msg + self.call_timer.start(8000, 0, self.call_timer_cb)#延迟8S 继续拨打 + + def send_sos_to_app(self,event,msg): + sos_state = EventMesh.publish("get_dev_state") + tmp = 1 << 16 + sos_state = sos_state|tmp #第16位=1 + EventMesh.publish("set_dev_state",sos_state) + EventMesh.publish(constants.EVENT.START_LOCATION,[constants.PROTOCOL.AL_SEND,sos_state]) #开始AL定位 + pass def call_timer_cb(self, *args, **kwargs): - if self.sos_flag == 1: - sos_state = EventMesh.publish("get_dev_state") - tmp = 1 << 16 - sos_state = sos_state|tmp #第16位=1 - EventMesh.publish("set_dev_state",sos_state) - - EventMesh.publish(constants.EVENT.START_LOCATION,[constants.PROTOCOL.AL_SEND,sos_state]) #开始AL定位 - # print("call_timer_cb:{}".format(self.callnumer)) - EventMesh.publish("save_phonename",str(self.callnumer)) - EventMesh.publish("save_phonenum",str(self.callnumer)) - EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"}) + print("sos call_timer_cb!!!",self.sos_flag) + EventMesh.publish("save_phonename",str(self.callnumer)) + EventMesh.publish("save_phonenum",str(self.callnumer)) + EventMesh.publish("send_sos_to_app") + print("sos call_timer_cb!!!") + EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"}) + + def close_sos_timer(self,event,msg): + self.call_timer.stop() + pass + def get_sos_flag(self, event, msg): return self.sos_flag diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py index 259ddf59..266a6291 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py @@ -344,7 +344,8 @@ class ProtoCol(Abstract): END = ";" + chr(0x01) #PID = "SZKW" #PID = "qAELPTKmFanR4RHe" - + PID = '' + md5_key = '' def __init__(self): self.content = None self.check_sum = None @@ -1415,18 +1416,22 @@ class sosHome_dial_ProtoCol(ProtoCol): # print("sosHome_dial_ProtoCol:send data :{} {}".format(len(msg_tmp),msg_tmp)) #b'[SZKW*860132060006970*0015*sosHome_dial_ProtoCol,15521469561,10086,15521469561]' i = 0 - for i in range(len(msg_tmp)-1): - # print("sos:send data :{}".format(msg_tmp[i+1])) + num = 0 + count = 0 + print("sos msg_tmp",msg_tmp) + if len(msg_tmp) > 4: + num = 3 + else: + num = len(msg_tmp)-1 + data = [] + for i in range(num): + print("sos:send data :{}".format(msg_tmp[i+1])) if len(msg_tmp[i+1]) != 0: EventMesh.publish("set_storage_config",["SOS_NUMBER{}".format(i+1),msg_tmp[i+1]]) - # print("read_data:{} msg_tmp:{}".format(read_data,msg_tmp[i+1])) - - if (len(msg_tmp)-1) == 3: - EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2],msg_tmp[3]]) - elif (len(msg_tmp)-1) == 2: - EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2]]) - elif (len(msg_tmp)-1) == 1: - EventMesh.publish("set_dial_sos_number",[msg_tmp[1]]) + data.append(str(msg_tmp[i+1])) + count+=1 + print("data:{}".format(data)) + EventMesh.publish("set_dial_sos_number",data) EventMesh.publish(constants.PROTOCOL.SOS_SEND) @@ -2022,6 +2027,327 @@ class FACTORY_ProtoCol(ProtoCol):#睡眠时间 +class TKS_ProtoCol(ProtoCol): + """微聊""" + TYPE = "TKS" + + + def send(self, event, msg): + if len(str(msg)) == 1: + len_size = len(str(msg))+len("TKS,") + # 实例:[XT*334588000000156*0009*TK,1] + send_data = self.PID+"*%s*%04X*TKS"%(self.imei,len_size) + MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TKS") + MD5_SIGN = self.pack_MD5_head(MD5_head_data) + data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg) + print("TKS:data:%s"%(data)) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) + + else: + # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据] + #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据] + arm_data = msg[1] + arm_sec = msg[0] + # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec)) + + arm = bytearray() + for i in range(len(arm_data)): + if arm_data[i] == 0x7d: + arm.extend(b'\x7d\x01') + elif arm_data[i] == 0x5b : + arm.extend(b'\x7d\x02') + elif arm_data[i] == 0x5d : + arm.extend(b'\x7d\x03') + elif arm_data[i] == 0x2c : + arm.extend(b'\x7d\x04') + elif arm_data[i] == 0x2a : + arm.extend(b'\x7d\x05') + else : + arm.append(arm_data[i]) + + datalen = len(arm) + len(str("TKS,"))+len(str(arm_sec))+1 + #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1)) + send_data = bytearray(self.PID+"*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec)) + send_data.extend(arm) + MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TKS") + MD5_SIGN = self.pack_MD5_head(MD5_head_data) + data = bytearray('[') + data.extend(MD5_SIGN) + data.extend(send_data) + data.extend(']') + # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data)) + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) + + + def recv(self, event, msg): + """ + + ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) + @param event: 微聊 + @param msg: 接收到的下行数据 + [SZKW*860132060004322*20BD*TK,#!AMR...] + """ + #Wechat_log("K_ProtoCol:recv:data:{}".format(msg)) + # print("TK recv:{}".format(msg)) + msg_tmp = msg.decode('ascii') + str = msg_tmp.split('TKS,') + # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR"))) + if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据 + # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg))) + arm_data = bytearray(str[1])#获取amr输出 + get_wechat_data = EventMesh.publish("get_wechat_data") + + MXA_MSG = get_wechat_data[0] + wechat_recode_list = get_wechat_data[1] + wechat_num = wechat_recode_list["num"] + # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) + + if wechat_num >= MXA_MSG: + wechat_num = 0 + if wechat_num == 0: + wechat_num += 1 + elif wechat_num > 0: + wechat_num += 1 + + + print("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list)) + wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3) + wechat_recode_list['num'] = wechat_num + EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list]) + #写语音文件数据 + screen_NAME = EventMesh.publish("get_screen_NAME") + get_lcd_state = EventMesh.publish("get_lcd_state") + if screen_NAME != "wechat" or get_lcd_state == 0: + 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 = "/ext/static/storage_file/{}.amr".format(wechat_num) + with open(path,"w") as fd: + arm = bytearray() + j = 0 + for i in range(len(arm_data)): + if arm_data[j] == 0x7d and arm_data[j+1] == 0x01: + arm.extend(b'\x7d') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02: + arm.extend(b'\x5b') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03: + arm.extend(b'\x5d') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04: + arm.extend(b'\x2c') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05: + arm.extend(b'\x2a') + j+=1 + else : + arm.append(arm_data[j]) + j+=1 + if j >= len(arm_data): + break + fd.write(arm) + EventMesh.publish(constants.PROTOCOL.TKS_SEND,1) + + + + + +class TK_ProtoCol(ProtoCol): + """微聊""" + TYPE = "TK" + + + def send(self, event, msg): + # print("TK send:{}".format(msg)) + if len(str(msg)) == 1: + + len_size = len(str(msg))+len("TK,") + # 实例:[XT*334588000000156*0009*TK,1] + send_data = self.PID+"*%s*%04X*TK"%(self.imei,len_size) + MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TK") + MD5_SIGN = self.pack_MD5_head(MD5_head_data) + data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg) + print("TK:data:%s"%(data)) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) + + else: + # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据] + #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据] + arm_data = msg[1] + arm_sec = msg[0] + # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec)) + + arm = bytearray() + for i in range(len(arm_data)): + if arm_data[i] == 0x7d: + arm.extend(b'\x7d\x01') + elif arm_data[i] == 0x5b : + arm.extend(b'\x7d\x02') + elif arm_data[i] == 0x5d : + arm.extend(b'\x7d\x03') + elif arm_data[i] == 0x2c : + arm.extend(b'\x7d\x04') + elif arm_data[i] == 0x2a : + arm.extend(b'\x7d\x05') + else : + arm.append(arm_data[i]) + + datalen = len(arm) +len(str("TK,"))+len(str(arm_sec))+1 + #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1)) + send_data = bytearray(self.PID+"*%s*%04X*TK,"%(self.imei,datalen)) + send_data.extend(arm) + MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TK") + MD5_SIGN = self.pack_MD5_head(MD5_head_data) + data = bytearray('[') + data.extend(MD5_SIGN) + data.extend(send_data) + data.extend(']') + # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data)) + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) + + + def recv(self, event, msg): + """ + + ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) + @param event: 微聊 + @param msg: 接收到的下行数据 + [SZKW*860132060004322*20BD*TK,#!AMR...] + """ + #Wechat_log("K_ProtoCol:recv:data:{}".format(msg)) + # print("TK recv:{}".format(msg)) + msg_tmp = msg.decode('ascii') + str = msg_tmp.split('TK,') + # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR"))) + if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据 + # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg))) + arm_data = bytearray(str[1])#获取amr输出 + get_wechat_data = EventMesh.publish("get_wechat_data") + + MXA_MSG = get_wechat_data[0] + wechat_recode_list = get_wechat_data[1] + wechat_num = wechat_recode_list["num"] + # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) + + if wechat_num >= MXA_MSG: + wechat_num = 0 + if wechat_num == 0: + wechat_num += 1 + elif wechat_num > 0: + wechat_num += 1 + + + print("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list)) + wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3) + wechat_recode_list['num'] = wechat_num + EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list]) + #写语音文件数据 + screen_NAME = EventMesh.publish("get_screen_NAME") + get_lcd_state = EventMesh.publish("get_lcd_state") + if screen_NAME != "wechat" or get_lcd_state == 0: + 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 = "/ext/static/storage_file/{}.amr".format(wechat_num) + with open(path,"w") as fd: + arm = bytearray() + j = 0 + for i in range(len(arm_data)): + if arm_data[j] == 0x7d and arm_data[j+1] == 0x01: + arm.extend(b'\x7d') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02: + arm.extend(b'\x5b') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03: + arm.extend(b'\x5d') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04: + arm.extend(b'\x2c') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05: + arm.extend(b'\x2a') + j+=1 + else : + arm.append(arm_data[j]) + j+=1 + if j >= len(arm_data): + break + fd.write(arm) + EventMesh.publish(constants.PROTOCOL.TK_SEND,1) + + + + + +class MESSAGE_ProtoCol(ProtoCol): + """微聊""" + TYPE = "MESSAGE" + + + def send(self, event, msg): + + #[XT*334588000000156*0007*MESSAGE] + send_data = self.PID+"*%s*0007*MESSAGE"%(self.imei) + MD5_SIGN = self.pack_MD5_head(send_data) + data = "[%s%s]"%(str(MD5_SIGN),send_data) + #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data)) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) + + def recv(self, event, msg): + """ + + @param event: 微聊文字 + @param msg: 接收到的下行数据 + """ + msg = msg[1:-1] + + msg_s = msg.decode('ascii') + msg_s = msg_s.split(',') + msg_s = msg_s[1] + # Wechat_log("msg_tmp:len:{}\r\n data:{}".format(len(msg_s),msg_s)) + + + get_wechat_data = EventMesh.publish("get_wechat_data") + + MXA_MSG = get_wechat_data[0] + wechat_recode_list = get_wechat_data[1] + wechat_num = wechat_recode_list["num"] + # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) + + if wechat_num >= MXA_MSG: + wechat_num = 0 + if wechat_num == 0: + wechat_num += 1 + elif wechat_num > 0: + wechat_num += 1 + msg_txt = {} + # 0 1 2 3 + print("wechat_num:init {}".format(wechat_num)) + msg_txt = UnicodeHexStr_To_Utf8Str(msg_s) + # Wechat_log("msg_txt:{}".format(msg_txt)) + wechat_recode_list["%02d"%(wechat_num)] = "T:{}".format(msg_txt) + wechat_recode_list['num'] = wechat_num + EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list]) + # Wechat_log("wechat_recode_list:len data:{}".format(wechat_recode_list)) + EventMesh.publish(constants.PROTOCOL.MESSAGE_SEND) + screen_NAME = EventMesh.publish("get_screen_NAME") + get_lcd_state = EventMesh.publish("get_lcd_state") + if screen_NAME != "wechat" or get_lcd_state == 0: + EventMesh.publish("load_screen", {"screen": "wechat_popup"}) + else: + EventMesh.publish("wechat_updata_list_show") + + + + + class ProtoColResolver(object): def __init__(self): diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui.py index 4fc9ad79..0407f363 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui.py @@ -1209,6 +1209,7 @@ class DialingScreen(Screen): code = e.get_code() if code == lv.EVENT.SHORT_CLICKED: EventMesh.publish("set_UI_high_priority", 0) + EventMesh.publish("close_sos_timer") EventMesh.publish("set_hangup_mode", 1) voiceCall.callEnd() EventMesh.publish("set_interrup_incall",0) @@ -1768,8 +1769,9 @@ class DialingNoPlayPopupScreen(Screen):#正在拨号中...未打出 def timeout_hangup(self,e): EventMesh.publish("system_sleep_rest")#防止黑屏 self.time_count+=1 - if self.time_count >= 5:#5s内没有打通则不在继续拨打关闭 + if self.time_count >= 5 :#设置:#5s内没有打通则不在继续拨打关闭 self.time_count = 0 + voiceCall.callEnd() EventMesh.publish("set_UI_high_priority", 0) EventMesh.publish("set_sos_info_call") # EventMesh.publish("load_screen", {"screen": "dialing"}) @@ -1786,6 +1788,7 @@ class DialingNoPlayPopupScreen(Screen):#正在拨号中...未打出 voiceCall.callEnd() sos_flag = EventMesh.publish("get_sos_flag") if sos_flag == 1: + EventMesh.publish("close_sos_timer") EventMesh.publish("set_sos_flag",0) EventMesh.publish("set_sos_num",0) EventMesh.publish("set_hangup_mode",0) @@ -1854,7 +1857,7 @@ class DialNoconnectPopupScreen(Screen):#你所拨打的电话暂时无法接通 EventMesh.publish("return_prev_screen") def Close(self): - EventMesh.publish("set_sos_info_call") + # EventMesh.publish("set_sos_info_call") self.timer.stop() @@ -4212,9 +4215,6 @@ class ContactsScreen(Screen): 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_DOWN(self):#下滑 @@ -6007,6 +6007,7 @@ class classMgrPopupScreen(Screen):#上课禁用时间界面 if sos_flag == 1: EventMesh.publish("set_sos_flag",0) EventMesh.publish("set_sos_num",0) + EventMesh.publish("close_sos_timer") EventMesh.publish("set_hangup_mode",0) data = RTC().datetime() hour = data[4] diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_setting.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_setting.py index ec35a68d..6ea395e0 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_setting.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_setting.py @@ -1147,7 +1147,8 @@ class PoweroffScreen(Screen): def concel(self, e): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") + # EventMesh.publish("load_screen", {"screen": "setting"}) def btn1_release(self): EventMesh.publish("load_screen", {"screen": "setting"}) 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 75efd4b6..ef2e5d18 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 @@ -2347,7 +2347,7 @@ class BtnDevice(Abstract): try : if boot_count < 50 :#开机50秒内按键次数大于10就校准 #EventMesh.debug_log("boot_count:{}".format(boot_count)) - if self.pwKey_press_count >= 10: + if self.pwKey_press_count >= 6: self.Hsensor = EventMesh.publish("get_Hsensor") self.hsensorTest_timer.start(1000,1,self.hsensorTest_timer_cb) EventMesh.debug_log("打开校准模式") 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 e2356d70..e541df39 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 @@ -339,16 +339,16 @@ class CountdownManager(Abstract): BATTERY_OCV_TABLE = { "nix_coy_mnzo2": { 55: { - 4270: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55, - 3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3355: 0, + 4290: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55, + 3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3400: 0, }, 20: { - 4270: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55, - 3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3355: 0, + 4290: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55, + 3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3400: 0, }, 0: { - 4270: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55, - 3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3355: 0, + 4290: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55, + 3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3400: 0, }, }, } @@ -1199,21 +1199,12 @@ class DeviceInfoManager(Abstract): else: self.clear_step = 0 - """电量小于20% 5分钟提醒一次""" + """电量小于0% 关机""" get_low_btn = EventMesh.publish("get_low_bat_btn")# battery = EventMesh.publish("screen_get_battery") - # EventMesh.debug_log("get_low_btn:{} self.bat_time:{}".format(get_low_btn,self.bat_time)) - if get_low_btn != None:#低电使能开关 - if get_low_btn == 1: - self.bat_time+=10 - # EventMesh.debug_log("date_tmp:{} self.bat_time:{}".format(date_tmp,self.bat_time)) - if self.bat_time > 5*60: - self.bat_time = 0 - if battery[1] <= 20 and battery[1] > 0: - pass - # EventMesh.publish("load_screen", {"screen": "LOW_POWER"}) - else: - self.bat_time = 0 + if battery[0] != '1': + if battery[1] == 0: + EventMesh.publish("open_power_on",2)# #未检测到sim卡15分钟后关机 """未联网提示关机""" ble=EventMesh.publish(constants.EVENT.GET_CONNECT) @@ -2025,7 +2016,7 @@ class DeviceInfoManager(Abstract): else: if battery[1] >= 100: if self.charge_full_count == 0:#充电已满 - EventMesh.publish("set_usb",3)# + # EventMesh.publish("set_usb",3)# EventMesh.debug_log("charge R_CHARGE_full") self.charge_full_count = 1 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 42d9fac4..9b0dadf1 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 @@ -1638,10 +1638,10 @@ class sosHome_dial_ProtoCol(ProtoCol): TYPE = "SOS" def send(self, event, msg): # [XT*334588000000156*0004*MONITOR] - send_data = EventMesh.publish("get_new_pid")+"*%s*0003*SOS"%(self.imei) + send_data = self.PID+"*%s*0003*SOS"%(self.imei) MD5_SIGN = self.pack_MD5_head(send_data) data = "[%s%s]"%(str(MD5_SIGN),send_data) - EventMesh.debug_log("sosHome_dial_ProtoCol:data:%s"%(data)) + print("sosHome_dial_ProtoCol:data:%s"%(data)) # 通过socket发送到服务器端 EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) @@ -1656,23 +1656,28 @@ class sosHome_dial_ProtoCol(ProtoCol): msg_tmp = msg.decode('ascii') msg_tmp = msg_tmp.split(',') - # EventMesh.debug_log("sosHome_dial_ProtoCol:send data :{} {}".format(len(msg_tmp),msg_tmp)) + # print("sosHome_dial_ProtoCol:send data :{} {}".format(len(msg_tmp),msg_tmp)) #b'[SZKW*860132060006970*0015*sosHome_dial_ProtoCol,15521469561,10086,15521469561]' - # print("sosnumber msg_tmp",msg_tmp) i = 0 - for i in range(len(msg_tmp)-1): - # EventMesh.debug_log("sos:send data :{}".format(msg_tmp[i+1])) + num = 0 + count = 0 + print("sos msg_tmp",msg_tmp) + if len(msg_tmp) > 4: + num = 3 + else: + num = len(msg_tmp)-1 + data = [] + for i in range(num): + # print("sos:send data :{}".format(msg_tmp[i+1])) if len(msg_tmp[i+1]) != 0: EventMesh.publish("set_storage_config",["SOS_NUMBER{}".format(i+1),msg_tmp[i+1]]) - - if (len(msg_tmp)-1) == 3: - EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2],msg_tmp[3]]) - elif (len(msg_tmp)-1) == 2: - EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2]]) - elif (len(msg_tmp)-1) == 1: - EventMesh.publish("set_dial_sos_number",[msg_tmp[1]]) + data.append(str(msg_tmp[i+1])) + count+=1 + print("data:{}".format(data)) + EventMesh.publish("set_dial_sos_number",data) EventMesh.publish(constants.PROTOCOL.SOS_SEND) + # 低电提醒 #[XT*334588000000156*0008*LOWBAT,1] @@ -1811,8 +1816,8 @@ class TK_ProtoCol(ProtoCol): else: # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据] #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据] - arm_data = msg[1] - arm_sec = msg[0] + arm_data = msg + # arm_sec = msg[0] # EventMesh.debug_log("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec)) arm = bytearray() @@ -1830,9 +1835,9 @@ class TK_ProtoCol(ProtoCol): else : arm.append(arm_data[i]) - datalen = len(arm) + 4+len(str(arm_sec))+1 + datalen = len(arm) + len("TK,")+1 #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1)) - send_data = bytearray(EventMesh.publish("get_new_pid")+"*%s*%04X*TK,%d,"%(self.imei,datalen,arm_sec)) + send_data = bytearray(EventMesh.publish("get_new_pid")+"*%s*%04X*TK,"%(self.imei,datalen)) send_data.extend(arm) MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,datalen,"TK") MD5_SIGN = self.pack_MD5_head(MD5_head_data) @@ -1957,7 +1962,7 @@ class TKS_ProtoCol(ProtoCol): else : arm.append(arm_data[i]) - datalen = len(arm) + 4+len(str(arm_sec))+1 + datalen = len(arm) + len("TKS,")+len(str(arm_sec))+1 #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1)) send_data = bytearray(EventMesh.publish("get_new_pid")+"*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec)) send_data.extend(arm) 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 7878235b..0ddc32ac 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 @@ -1320,7 +1320,6 @@ class sosHome_dial_ProtoCol(ProtoCol): """sos家庭号码""" TYPE = "SOS" def send(self, event, msg): - # [XT*334588000000156*0004*MONITOR] send_data = EventMesh.publish("get_new_pid")+"*%s*0003*SOS"%(self.imei) MD5_SIGN = self.pack_MD5_head(send_data) @@ -1343,18 +1342,22 @@ class sosHome_dial_ProtoCol(ProtoCol): # print("sosHome_dial_ProtoCol:send data :{} {}".format(len(msg_tmp),msg_tmp)) #b'[SZKW*860132060006970*0015*sosHome_dial_ProtoCol,15521469561,10086,15521469561]' i = 0 - for i in range(len(msg_tmp)-1): + num = 0 + count = 0 + print("sos msg_tmp",msg_tmp) + if len(msg_tmp) > 4: + num = 3 + else: + num = len(msg_tmp)-1 + data = [] + for i in range(num): # print("sos:send data :{}".format(msg_tmp[i+1])) if len(msg_tmp[i+1]) != 0: EventMesh.publish("set_storage_config",["SOS_NUMBER{}".format(i+1),msg_tmp[i+1]]) - # print("read_data:{} msg_tmp:{}".format(read_data,msg_tmp[i+1])) - - if (len(msg_tmp)-1) == 3: - EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2],msg_tmp[3]]) - elif (len(msg_tmp)-1) == 2: - EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2]]) - elif (len(msg_tmp)-1) == 1: - EventMesh.publish("set_dial_sos_number",[msg_tmp[1]]) + data.append(str(msg_tmp[i+1])) + count+=1 + print("data:{}".format(data)) + EventMesh.publish("set_dial_sos_number",data) EventMesh.publish(constants.PROTOCOL.SOS_SEND) diff --git a/2.sdk/project/K5/font/ext_font.bin b/2.sdk/project/K5/font/ext_font.bin index 0864f185..fe952341 100644 Binary files a/2.sdk/project/K5/font/ext_font.bin and b/2.sdk/project/K5/font/ext_font.bin differ diff --git a/2.sdk/project/K5/new.bat b/2.sdk/project/K5/new.bat index f44ad87f..ed4f5ca1 100644 --- a/2.sdk/project/K5/new.bat +++ b/2.sdk/project/K5/new.bat @@ -2,7 +2,7 @@ md images del images /q -..\..\Helios_SDK\tools\ASR_1606\win32\mklfs.exe -c ext -b 4096 -r 4096 -p 4096 -s 1468000 -i .\images\ext_fs.bin +..\..\Helios_SDK\tools\ASR_1606\win32\mklfs.exe -c ext -b 4096 -r 4096 -p 4096 -s 1363148 -i .\images\ext_fs.bin if errorlevel 1 ( echo "ext_fs.binÉú³Éʧ°Ü !!!!!!!!!!!!!!! " goto exit diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/alarm.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/alarm.py index afdbf34c..8755cf8d 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/alarm.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/alarm.py @@ -827,7 +827,7 @@ class PopupAlarmScreen(Screen): self.alarm_count = 0 self.aud.stop() self.timer.stop() - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") return play_state = EventMesh.publish("get_audio_state")#音频播放状态 if play_state != None: @@ -842,35 +842,35 @@ class PopupAlarmScreen(Screen): def done_left_to_right(self): self.close_timer() - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_right_to_left(self): self.close_timer() - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_bottom_to_top(self): self.close_timer() - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_top_to_bottom(self): self.close_timer() - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_return(self): self.close_timer() - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_click(self): self.close_timer() - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): self.close_timer() - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): self.close_timer() - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") #闹钟列表 class ClkListScreen(Screen): @@ -923,11 +923,11 @@ class ClkListScreen(Screen): def alarm_draw_btn(self): - global alarm_list - self.clock_list = alarm_list - IFEXIST = ql_fs.path_exists("/ext/static/storage_file/alarm_msg.json") - if IFEXIST == True: - if self.clock_list: + get_alarm_data = EventMesh.publish("get_storage_config","normal_alarm") + print("get_alarm_data",get_alarm_data) + if get_alarm_data != None and get_alarm_data != []: + + if len(get_alarm_data) != 0: # print("nalarm_list:{}".format(alarm_list)) no_add_alarm_img.add_flag(lv.obj.FLAG.HIDDEN) no_add_alarm.add_flag(lv.obj.FLAG.HIDDEN) @@ -940,20 +940,17 @@ class ClkListScreen(Screen): #print("菜单的孩子个数:",clk_list_screen1.get_child_cnt()) num = 0 count = 0 - clock_nums = len(self.clock_list)-2#3-2 = 1 0 + clock_nums = len(get_alarm_data)#3-2 = 1 0 # for i ,each in enumerate(self.clock_list): for i in range(0,self.MXA_clk_num): if i >= clock_nums: self.contact_detail_listt_dict[i]["_btn"].add_flag(lv.obj.FLAG.HIDDEN) continue - each = self.clock_list[2+i] - num = each["idx"] + hour = get_alarm_data[i]["hour"] + min = get_alarm_data[i]["min"] + + day = get_alarm_data[i]["day"] - if count >= 3: - break - repeart = each["repeart"]# - if repeart >= 10: - continue print("count1:{}".format(count)) #_btn = lv.btn(self.alarm_show_list) self.contact_detail_listt_dict[count]["_btn"].set_size(230,75) @@ -967,28 +964,27 @@ class ClkListScreen(Screen): #_btn_label1 = lv.label(_btn) self.contact_detail_listt_dict[count]["_btn_label1"].set_pos(50, 0) self.contact_detail_listt_dict[count]["_btn_label1"].set_size(0, 0) - self.contact_detail_listt_dict[count]["_btn_label1"].set_text(str(num)) + self.contact_detail_listt_dict[count]["_btn_label1"].set_text(" ") #_btn_label2 = lv.label(_btn) self.contact_detail_listt_dict[count]["_btn_label2"].set_pos(8, 10) self.contact_detail_listt_dict[count]["_btn_label2"].set_size(97, 40) - self.contact_detail_listt_dict[count]["_btn_label2"].set_text("%02d" % each["hour"] + ":"+"%02d" % each["minute"]) + self.contact_detail_listt_dict[count]["_btn_label2"].set_text("%02d" %(hour) + ":"+"%02d" %(min)) # _btn_label2.set_text(str(each["days"])) # _btn_label2.set_long_mode(lv.label.LONG.DOT) # _btn_label2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) self.contact_detail_listt_dict[count]["_btn_label2"].set_style_text_align(lv.TEXT_ALIGN.LEFT, 0) - _new_list = sorted(each["days"]) - repeart = each["repeart"] + _new_list = sorted(day) _output = [self.weekdays_list[x] for x in _new_list] #_btn_label3 = lv.label(_btn) self.contact_detail_listt_dict[count]["_btn_label3"].set_pos(5, 44) self.contact_detail_listt_dict[count]["_btn_label3"].set_size(200, 40) - print("_new_list:{} repeart:{}".format(_new_list,repeart)) - if repeart == 1: + print("_new_list:{} ".format(_new_list)) + if day == []: self.contact_detail_listt_dict[count]["_btn_label3"].set_text("一次") - elif repeart == 2: + elif len(day) > 6: self.contact_detail_listt_dict[count]["_btn_label3"].set_text("每天") else: self.contact_detail_listt_dict[count]["_btn_label3"].set_text(",".join(_output)) @@ -1067,10 +1063,10 @@ class ClkListScreen(Screen): # print("sw_event_cb ~~~") def done_return(self): - EventMesh.publish("load_screen", {"screen": "toolbox"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "toolbox"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/appFactoryMode.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/appFactoryMode.py index 070c07c5..f09ce373 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/appFactoryMode.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/appFactoryMode.py @@ -148,10 +148,10 @@ class FactoryModeScreen(Screen): factorymode_step.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "FactoryModestep"})), lv.EVENT.CLICKED, None) def done_return(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -252,10 +252,10 @@ class FactoryModeLogScreen(Screen): pass def done_return(self): - EventMesh.publish("load_screen", {"screen": "factorymode"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "factorymode"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -318,10 +318,10 @@ class FactoryModestepScreen(Screen): pass def done_return(self): - EventMesh.publish("load_screen", {"screen": "factorymode"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "factorymode"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -429,10 +429,10 @@ class FactoryModeHsensorTestScreen(Screen): pass def done_return(self): - EventMesh.publish("load_screen", {"screen": "factorymode"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "factorymode"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -476,10 +476,10 @@ class FactoryModeBatTestScreen(Screen): pass def done_return(self): - EventMesh.publish("load_screen", {"screen": "factorymode"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "factorymode"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -655,10 +655,10 @@ class FactoryModeLocationScreen(Screen): self.timer_FactoryModeLocation.stop() def done_return(self): - EventMesh.publish("load_screen", {"screen": "factorymode"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "factorymode"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("load_screen", {"screen": "main_menu"}) \ No newline at end of file diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/appWechat.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/appWechat.py index 404efffe..9e9e3c4e 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/appWechat.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/appWechat.py @@ -461,7 +461,7 @@ class WechatScreen(Screen): buf = bytearray(ql_fs.path_getsize(path)) fd.readinto(buf) senddata = [self.countdown_old,buf] - EventMesh.publish(constants.PROTOCOL.TK_SEND,senddata) + EventMesh.publish(constants.PROTOCOL.TKS_SEND,senddata) Wechat_log("sending2") @@ -596,10 +596,10 @@ class WechatScreen(Screen): wechat_press_label_countdown.set_text("{}S".format(str(self.countdown))) def done_return(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") @@ -648,7 +648,7 @@ class NewWechatPopupScreen(Screen): EventMesh.publish("load_screen", {"screen": "wechat"}) def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -656,10 +656,9 @@ class NewWechatPopupScreen(Screen): - -class TK_ProtoCol(ProtoCol): +class TKS_ProtoCol(ProtoCol): """微聊""" - TYPE = "TK" + TYPE = "TKS" def send(self, event, msg): @@ -672,7 +671,7 @@ class TK_ProtoCol(ProtoCol): MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TKS") MD5_SIGN = self.pack_MD5_head(MD5_head_data) data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg) - print("TK:data:%s"%(data)) + print("TKS:data:%s"%(data)) # 通过socket发送到服务器端 EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) @@ -698,9 +697,9 @@ class TK_ProtoCol(ProtoCol): else : arm.append(arm_data[i]) - datalen = len(arm) + 4+len(str(arm_sec))+1 + datalen = len(arm) +len("TKS")+len(str(arm_sec))+1 #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1)) - send_data = bytearray("SZKW*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec)) + send_data = bytearray(self.PID+"*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec)) send_data.extend(arm) MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TKS") MD5_SIGN = self.pack_MD5_head(MD5_head_data) @@ -712,6 +711,135 @@ class TK_ProtoCol(ProtoCol): EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) + def recv(self, event, msg): + """ + + ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) + @param event: 微聊 + @param msg: 接收到的下行数据 + [SZKW*860132060004322*20BD*TK,#!AMR...] + """ + #Wechat_log("K_ProtoCol:recv:data:{}".format(msg)) + # print("TK recv:{}".format(msg)) + msg_tmp = msg.decode('ascii') + str = msg_tmp.split('TKS,') + # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR"))) + if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据 + # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg))) + arm_data = bytearray(str[1])#获取amr输出 + get_wechat_data = EventMesh.publish("get_wechat_data") + + MXA_MSG = get_wechat_data[0] + wechat_recode_list = get_wechat_data[1] + wechat_num = wechat_recode_list["num"] + # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) + + if wechat_num >= MXA_MSG: + wechat_num = 0 + if wechat_num == 0: + wechat_num += 1 + elif wechat_num > 0: + wechat_num += 1 + + + Wechat_log("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list)) + wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3) + wechat_recode_list['num'] = wechat_num + EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list]) + #写语音文件数据 + screen_NAME = EventMesh.publish("get_screen_NAME") + get_lcd_state = EventMesh.publish("get_lcd_state") + if screen_NAME != "wechat" or get_lcd_state == 0: + 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 = "/ext/static/storage_file/{}.amr".format(wechat_num) + with open(path,"w") as fd: + arm = bytearray() + j = 0 + for i in range(len(arm_data)): + if arm_data[j] == 0x7d and arm_data[j+1] == 0x01: + arm.extend(b'\x7d') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02: + arm.extend(b'\x5b') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03: + arm.extend(b'\x5d') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04: + arm.extend(b'\x2c') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05: + arm.extend(b'\x2a') + j+=1 + else : + arm.append(arm_data[j]) + j+=1 + if j >= len(arm_data): + break + fd.write(arm) + EventMesh.publish(constants.PROTOCOL.TKS_SEND,1) + + + + +class TK_ProtoCol(ProtoCol): + """微聊""" + TYPE = "TK" + + + def send(self, event, msg): + # print("TK send:{}".format(msg)) + if len(str(msg)) == 1: + + len_size = len(str(msg))+len("TK,") + # 实例:[XT*334588000000156*0009*TK,1] + send_data = self.PID+"*%s*%04X*TK"%(self.imei,len_size) + MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TK") + MD5_SIGN = self.pack_MD5_head(MD5_head_data) + data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg) + print("TK:data:%s"%(data)) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) + + else: + # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据] + #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据] + arm_data = msg[1] + arm_sec = msg[0] + # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec)) + + arm = bytearray() + for i in range(len(arm_data)): + if arm_data[i] == 0x7d: + arm.extend(b'\x7d\x01') + elif arm_data[i] == 0x5b : + arm.extend(b'\x7d\x02') + elif arm_data[i] == 0x5d : + arm.extend(b'\x7d\x03') + elif arm_data[i] == 0x2c : + arm.extend(b'\x7d\x04') + elif arm_data[i] == 0x2a : + arm.extend(b'\x7d\x05') + else : + arm.append(arm_data[i]) + + datalen = len(arm) + len("TK")+len(str(arm_sec))+1 + #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1)) + send_data = bytearray(self.PID+"*%s*%04X*TK,"%(self.imei,datalen)) + send_data.extend(arm) + MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TK") + MD5_SIGN = self.pack_MD5_head(MD5_head_data) + data = bytearray('[') + data.extend(MD5_SIGN) + data.extend(send_data) + data.extend(']') + # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data)) + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) + + def recv(self, event, msg): """ diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/constants.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/constants.py index ff4d2d23..8f8e6cb8 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/constants.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/constants.py @@ -26,6 +26,9 @@ class PROTOCOL: TK_SEND = "TK_SEND" TK_RECV = "TK_RECV" + TKS_SEND = "TKS_SEND" + TKS_RECV = "TKS_RECV" + MESSAGE_SEND = "MESSAGE_SEND" MESSAGE_RECV = "MESSAGE_RECV" @@ -99,6 +102,9 @@ class PROTOCOL: BTEMP2_SEND ="btemp2_SEND" BTEMP2_RECV ="btemp2_RECV" + FACTORY_SEND = "FACTORY_SEND" + FACTORY_RECV = "FACTORY_RECV" + class EVENT: CHANNEL_SOCKET_SEND = "CHANNEL_SOCKET_SEND" START_LOCATION = "START_LOCATION" diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/main_init.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/main_init.py index 9e878bc7..ac0d49f3 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/main_init.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/main_init.py @@ -69,9 +69,7 @@ def main_init(): from mgr import setCallStateManager,setclassTimeManager,setSmsIndexManager,ConfigStoreManager,testSmsSetIPManager,playPowerAudioManager,sosInfoCallManager,getBootOffManager,getSosFlagManager,CountdownManager, LocationManager, getVolumSizeManager,gethistoryDataManager,getUpLoadDataManager, getplayAudiodStateManager,\ AddrBookManager,MsgdetailManager,PhoneCallingManager,getOldTimeManager,getStorageDataManager,getBrightnessManager,getHrTimeManager,getTempTimeManager,getLowBatManager - from protocol import btemp2_ProtoCol,bodytemp2_ProtoCol,TEMP_Hour_ProtoCol,SILENCETIMEFS_ProtoCol,KEYBRD_ProtoCol,SILENCETIME2_ProtoCol,WLKEY_ProtoCol,LK_ProtoCol,PING_ProtoCol,HEART_ProtoCol,OXYGEN_ProtoCol,OXYGEN_One_ProtoCol,HRSTART_ProtoCol,CENTER_ProtoCol,UPLOAD_ProtoCol,\ - TEMP_ProtoCol,DLT_ProtoCol,WT_ProtoCol,UD_ProtoCol,REMIND_ProtoCol, CR_ProtoCol,KA_ProtoCol,FIND_ProtoCol,POWEROFF_ProtoCol,Time_ProtoCol,\ - ProtoColResolver,PHL_ProtoCol,MONITOR_ProtoCol,bootoff_ProtoCol,WDSTART_ProtoCol,LOWBAT_ProtoCol,sosHome_dial_ProtoCol,SockManager,NetManager + import protocol import ui as _ui # import ui as _ui #print("init4:{}".format(utime.localtime())) @@ -110,7 +108,7 @@ def main_init(): except Exception as e: usys.print_exception(e) try: - from appWechat import WechatScreen,TK_ProtoCol,MESSAGE_ProtoCol,NewWechatPopupScreen + from appWechat import WechatScreen,NewWechatPopupScreen ui.add_screen(WechatScreen()) from alarm import ClkListScreen,ClockManager,NewEditClk,CLKTimeScreen,ClkPeriod,PopupAlarmScreen from ui_health import HealthScreen @@ -236,7 +234,7 @@ def main_init(): app.append_manager(playPowerAudioManager()) #app.append_manager(Alipay()) app.append_manager(ConfigStoreManager()) - app.append_manager(NetManager()) + app.append_manager(protocol.NetManager()) app.append_manager(LocationManager()) app.append_manager(AddrBookManager()) app.append_manager(mgr.MsgManager()) @@ -271,45 +269,49 @@ def main_init(): #print("init11:{}".format(utime.localtime())) try: - pcr = ProtoColResolver() - pcr.add_support(LK_ProtoCol()) - pcr.add_support(PING_ProtoCol()) - pcr.add_support(KA_ProtoCol()) - pcr.add_support(UD_ProtoCol()) - pcr.add_support(CR_ProtoCol()) - pcr.add_support(FIND_ProtoCol()) - pcr.add_support(POWEROFF_ProtoCol()) - pcr.add_support(PHL_ProtoCol()) - pcr.add_support(TK_ProtoCol()) - pcr.add_support(MESSAGE_ProtoCol()) - pcr.add_support(WT_ProtoCol()) - pcr.add_support(REMIND_ProtoCol()) - pcr.add_support(HRSTART_ProtoCol()) - pcr.add_support(HEART_ProtoCol()) - pcr.add_support(OXYGEN_ProtoCol()) - pcr.add_support(OXYGEN_One_ProtoCol()) - pcr.add_support(TEMP_ProtoCol()) - pcr.add_support(DLT_ProtoCol()) - pcr.add_support(UPLOAD_ProtoCol()) - pcr.add_support(MONITOR_ProtoCol()) + pcr = protocol.ProtoColResolver() + pcr.add_support(protocol.LK_ProtoCol()) + pcr.add_support(protocol.PING_ProtoCol()) + pcr.add_support(protocol.KA_ProtoCol()) + pcr.add_support(protocol.UD_ProtoCol()) + pcr.add_support(protocol.CR_ProtoCol()) + pcr.add_support(protocol.FIND_ProtoCol()) + pcr.add_support(protocol.POWEROFF_ProtoCol()) + pcr.add_support(protocol.PHL_ProtoCol()) + pcr.add_support(protocol.TK_ProtoCol()) + pcr.add_support(protocol.MESSAGE_ProtoCol()) + pcr.add_support(protocol.WT_ProtoCol()) + pcr.add_support(protocol.REMIND_ProtoCol()) + pcr.add_support(protocol.HRSTART_ProtoCol()) + pcr.add_support(protocol.HEART_ProtoCol()) + pcr.add_support(protocol.OXYGEN_ProtoCol()) + pcr.add_support(protocol.OXYGEN_One_ProtoCol()) + pcr.add_support(protocol.TEMP_ProtoCol()) + pcr.add_support(protocol.DLT_ProtoCol()) + pcr.add_support(protocol.UPLOAD_ProtoCol()) + pcr.add_support(protocol.MONITOR_ProtoCol()) # pcr.add_support(CENTER_ProtoCol()) - pcr.add_support(CENTER_ProtoCol()) - pcr.add_support(bootoff_ProtoCol()) - pcr.add_support(WDSTART_ProtoCol()) - pcr.add_support(LOWBAT_ProtoCol()) - pcr.add_support(sosHome_dial_ProtoCol()) - pcr.add_support(Time_ProtoCol()) - pcr.add_support(WLKEY_ProtoCol()) - pcr.add_support(KEYBRD_ProtoCol()) - pcr.add_support(SILENCETIME2_ProtoCol()) - pcr.add_support(SILENCETIMEFS_ProtoCol()) - pcr.add_support(TEMP_Hour_ProtoCol()) - pcr.add_support(bodytemp2_ProtoCol()) - pcr.add_support(btemp2_ProtoCol()) + pcr.add_support(protocol.CENTER_ProtoCol()) + pcr.add_support(protocol.bootoff_ProtoCol()) + pcr.add_support(protocol.WDSTART_ProtoCol()) + pcr.add_support(protocol.LOWBAT_ProtoCol()) + pcr.add_support(protocol.sosHome_dial_ProtoCol()) + pcr.add_support(protocol.Time_ProtoCol()) + pcr.add_support(protocol.WLKEY_ProtoCol()) + pcr.add_support(protocol.KEYBRD_ProtoCol()) + pcr.add_support(protocol.SILENCETIME2_ProtoCol()) + pcr.add_support(protocol.SILENCETIMEFS_ProtoCol()) + pcr.add_support(protocol.TEMP_Hour_ProtoCol()) + pcr.add_support(protocol.bodytemp2_ProtoCol()) + pcr.add_support(protocol.btemp2_ProtoCol()) + pcr.add_support(protocol.TK_ProtoCol()) + pcr.add_support(protocol.TKS_ProtoCol()) + pcr.add_support(protocol.MESSAGE_ProtoCol()) + pcr.add_support(protocol.FACTORY_ProtoCol()) except Exception as e: usys.print_exception(e) try: - sm = SockManager() + sm = protocol.SockManager() sm.add_support_resolver(pcr) app.append_manager(sm) #print("init11.0:{}".format(utime.localtime())) diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py index d54b18a3..19252850 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py @@ -605,12 +605,8 @@ def voice_callback(args): 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("return_prev_screen") + + EventMesh.publish("return_prev_screen") EventMesh.publish("set_sos_info_call") print('voicecall disconnect end') @@ -697,6 +693,10 @@ class DeviceInfoManager(Abstract): self.no_smi_count = 0 self.no_smi_state = 0 + self.normal_oldtotalmin = 0 #上次响过的闹钟分钟数不等于当前的分钟数据需要清零否则下一个不会响铃 + self.normal_flag =0 + self.normal_count = 0 + self.charge_full_count = 0 self.GPS_step_t = 0#记录步数 self.usb = USB() @@ -941,15 +941,15 @@ class DeviceInfoManager(Abstract): data = RTC().datetime() hour = data[4] min = data[5] - next_alarm_time = utime.localtime(old_Timesec) + next_alarm_time = utime.localtime(int(old_Timesec)) # print("data[5]:{} {} next_alarm_time:{} old_Timesec:{}".format(data[1],data[2],next_alarm_time,old_Timesec)) month = next_alarm_time[1] day = next_alarm_time[2] - if month != data[1] or day != data[2]: + year = next_alarm_time[0] + if month != data[1] or day != data[2] or year != data[0]: step = EventMesh.publish("get_old_step_value") - if step > 0: - self.gsensor.reset_step() - EventMesh.publish("set_old_step_value",0) + self.gsensor.reset_step() + EventMesh.publish("set_old_step_value",0) hr = EventMesh.publish("get_old_hr_data",) if hr != 0: @@ -959,22 +959,19 @@ class DeviceInfoManager(Abstract): if spo2 != 0: EventMesh.publish("set_old_spo2_data", 0) EventMesh.publish("set_old_time_data",time_tmp) - if hour == 0:#清步数 - if min <= 1: - if self.clear_step == 0: - step = EventMesh.publish("get_old_step_value") - EventMesh.publish("set_old_time_data",time_tmp) - if step > 0: - EventMesh.publish("set_old_step_value",0) - self.gsensor.reset_step() - hr = EventMesh.publish("get_old_hr_data") - if hr != 0: - EventMesh.publish("set_old_hr_data", 0) - - spo2 = EventMesh.publish("get_old_spo2_data") - if spo2 != 0: - EventMesh.publish("set_old_spo2_data", 0) - self.clear_step = 1 + if hour == 23:#清步数 + if min == 59: + step = EventMesh.publish("get_old_step_value") + EventMesh.publish("set_old_time_data",time_tmp) + EventMesh.publish("set_old_step_value",0) + self.gsensor.reset_step() + hr = EventMesh.publish("get_old_hr_data") + if hr != 0: + EventMesh.publish("set_old_hr_data", 0) + + spo2 = EventMesh.publish("get_old_spo2_data") + if spo2 != 0: + EventMesh.publish("set_old_spo2_data", 0) else: if self.clear_step == 1: self.clear_step = 0 @@ -1530,7 +1527,69 @@ class DeviceInfoManager(Abstract): #quecgnss.gnssEnable(0) - + self.normal_alarm() + + + #普通闹钟 + def normal_alarm(self): + data = RTC().datetime() + hour = data[4] + min = data[5] + + week = int(data[3]) + + date1 = data[1] + date2 = data[2] + cur_total_min = int(hour)*60+int(min) + # EventMesh.debug_log("self.normal_oldtotalmin",self.normal_oldtotalmin,cur_total_min,self.alarm_flag) + if self.normal_oldtotalmin == 0: + self.normal_oldtotalmin = cur_total_min #549 + if self.normal_oldtotalmin != cur_total_min: #上次响过的闹钟分钟数不等于当前的分钟数据需要清零否则下一个不会响铃 + if self.normal_flag == 1: + self.normal_flag = 0 + self.normal_count = 0 + normal_alarm = [] + normal_alarm = EventMesh.publish("get_storage_config","normal_alarm") + # EventMesh.debug_log("sleep info2",sleep,cur_total_min) + if self.normal_flag == 1:#表示闹钟响过清除标志 + self.normal_count+=1 + if self.normal_count > 6: + self.normal_count = 0 + self.normal_flag = 0 + if normal_alarm != None: + if len(normal_alarm) != 0 and normal_alarm != []: + j = 0 + for i in range(len(normal_alarm)): + # EventMesh.debug_log("normal_alarm normal_alarm 33",normal_alarm,j) + normalalarm_hour = normal_alarm[j]["hour"] + normalalarm_min = normal_alarm[j]["min"] + normalalarm_day = normal_alarm[j]["day"] + normalalarm_enale = normal_alarm[j]["enable"] + normalalarm_totalmin = int(normalalarm_hour)*60+int(normalalarm_min) + # EventMesh.debug_log("wake alarm",normalalarm_hour,sleep_min,sleep_day,sleep_enale,sleep_totalmin,week) + if normalalarm_day == []:#单次闹钟只响一次 + if normalalarm_enale != 0: + if normalalarm_totalmin == cur_total_min:#14:00 + self.normal_count = 0 + self.normal_flag = 0 + normal_alarm[j]["enable"] = 0 + + # EventMesh.debug_log("wakeup wakeup1",sleep,j) + EventMesh.publish("set_storage_config",["normal_alarm",normal_alarm])#删除之后重新保存 + EventMesh.publish("push_update_alarm_show") + # new_data=EventMesh.publish("get_storage_config","normal_alarm") + # print("normal wakeup1",new_data,j) + EventMesh.publish("load_screen", {"screen": "popup_alarm"}) + break + else: + if normalalarm_enale != 0 and (week in normalalarm_day):#记录响过的时间分钟数 + if normalalarm_totalmin == cur_total_min and self.normal_flag == 0:#14:00 + self.normal_flag = 1 + self.normal_count = 0 + self.normal_oldtotalmin = normalalarm_totalmin + EventMesh.publish("load_screen", {"screen": "popup_alarm"}) + break + j+=1 def get_sim_Status(self, event, msg): return sim.getStatus() @@ -1610,15 +1669,15 @@ class DeviceInfoManager(Abstract): """ XYZ = self.gsensor.get_x_y_z() tmp = 0 - + step = [0,0,0,0] tmp = self.gsensor.get_step() # print("x:%d,y:%d,z:%d tmp %d",XYZ[0],XYZ[1],XYZ[2],tmp) - self.step[0]= tmp - self.step[1] = XYZ[0] - self.step[2] = XYZ[1] - self.step[3] = XYZ[2] + step[0]= tmp + step[1] = XYZ[0] + step[2] = XYZ[1] + step[3] = XYZ[2] - return self.step + return step def get_ic_cid(self, event, msg): """ @@ -2618,6 +2677,7 @@ class gethistoryDataManager(Abstract): def set_old_step_value(self, event, msg): self.oldstep = msg + EventMesh.publish("set_storage_config",["old_step",msg]) def get_old_step_value(self, event, msg): diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/protocol.py index df381e2a..89963a51 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/protocol.py @@ -25,7 +25,7 @@ import usys def server_init(server_type = None): #服务器选择1,防走丢,2大锤,3三基同创,4童信,5云米,6荣为 if server_type == None: - server_type = 4 + server_type = 1 #print("server_init:server_type:{}".format(server_type)) d_server_addr = "api.xcloudtech.com" d_server_port = 9000 @@ -271,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 #有数据,就认为是连接状态 @@ -754,101 +754,79 @@ class WT_ProtoCol(ProtoCol): EventMesh.publish("set_weather_data",[msg_date,msg_time,msg_weather_content,msg_type,msg_temp,msg_min_temp,msg_max_temp,msg_city,1]) EventMesh.publish("updata_weather_show") -class REMIND_ProtoCol(ProtoCol): - """闹钟数据""" +class REMIND_ProtoCol(ProtoCol):#普通闹钟 + """ + + 平台发送: + [XT*YYYYYYYYYYYYYYY*LEN*REMIND,,时间1-开关,时间2-开关,周几] + 实例:[XT*334588000000156*0008*REMIND,,时间1-开关,时间2-开关,周几] + 终端回复: + [XT*YYYYYYYYYYYYYYY*LEN*REMIND] + """ TYPE = "REMIND" - - + def send(self, event, msg): - # [SZKW*867387060319491*0008*REMIND] send_data = self.PID+"*%s*0006*REMIND"%(self.imei) MD5_SIGN = self.pack_MD5_head(send_data) data = "[%s%s]"%(str(MD5_SIGN),send_data) - # print("REMIND_ProtoCol:send:%s"%(data)) + #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data)) # 通过socket发送到服务器端 EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) def recv(self, event, msg): - """ - @param event: 闹钟数据下发 - @param msg: 接收到的下行数据 - """ - # b'SZKW*860132060004322*0035*REMIND,23-04-06,14:41:06,b6e0d4c6,1,27,-1,40,6DF157335E02' - # print("REMIND_ProtoCol RECV msg:%s"%(msg)) - alarm_new = [] - + # SZKW*860132060346475*0013*REMIND_CH_MEDICINE2,4-1 msg = msg[1:-1] msg_tmp = msg.decode('ascii') - msg_tmp = msg_tmp.split('REMIND,') - msg_tmp = msg_tmp[1] - - alarm_new = EventMesh.publish("read_alarminjson") - # print("alarm_list:{} msg_tmp:{}",alarm_new,msg_tmp) - k=1 + msg_tmp_new = msg_tmp.split('REMIND,')[1] + msg_tmp_data = msg_tmp.split('REMIND')[1] count = 0 + for i in str(msg_tmp_data): + # print("i",i) + if i == ",": + count+=1 - for i in range(len(str(msg_tmp))):#寻找有多少个,号 - if msg_tmp[i] == ',':#, , , - k+=1 - if len(alarm_new) > 2: - for i in range(0,len(alarm_new)-2): - del alarm_new[2] - # print("alarm_new:{}",alarm_new) - for j in range(2,2+k):#0 1是开关机,234是闹钟 + normal_alarm_save = [] + alarm_day = [] + alarm_switch = 0 + + print("count",count,msg_tmp_new) + if count >= 3: + count = 3 + for i in range(0,count):#默认是三个时间多了也不保存 alarm_day = [] - alarm_week = [] - alarm_total_data = [] - if k == 1: - if len(msg_tmp) != 0: - alarm_data = msg_tmp.split('-')#-作为分隔符 - alarm_switch = int(alarm_data[1])#开关 - alarm_day_num = int(alarm_data[2])#天 - alarm_time = alarm_data[0]#时间 - alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分 - alarm_time_hour = int(alarm_time_tmp[0]) - alarm_time_min = int(alarm_time_tmp[1]) - if alarm_day_num == 3: - alarm_week = alarm_data[3]#星期 - - if alarm_day_num == 2:#每一天 - alarm_day = [1,2,3,4,5,6,0] - elif alarm_day_num == 3:#自定义 - for i in range(0,7): - if alarm_week[i] != '0': - alarm_day.append(i) - alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num}) - else: - if len(msg_tmp) != 0: - alarm_total_data = msg_tmp.split(',')[count] - count+=1 - b = alarm_total_data.find('-') - if b != -1: - alarm_data = alarm_total_data.split('-')#-作为分隔符 - alarm_switch = int(alarm_data[1])#开关 - alarm_day_num = int(alarm_data[2])#天 - alarm_time = alarm_data[0]#时间 - alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分 - alarm_time_hour = int(alarm_time_tmp[0]) - alarm_time_min = int(alarm_time_tmp[1]) - if alarm_day_num == 3: - alarm_week = alarm_data[3]#星期 - - if alarm_day_num == 2:#每一天 - alarm_day = [1,2,3,4,5,6,0] - elif alarm_day_num == 3:#自定义 + alarm_data = str(msg_tmp_new.split(',')[i]) + # print("i",i,sleep_data) + if len(alarm_data) != 0: + b = alarm_data.find('-') + if b != -1: + alarm_time = alarm_data.split('-')[0]#-作为分隔符 + alarm_switch = int(alarm_data.split('-')[1])#开关 + alarm_repeat = int(alarm_data.split('-')[2])#是单次还是每天 还是自定义 + + alarm_hour = int(alarm_time.split(":")[0])#时间 + alarm_min = int(alarm_time.split(":")[1])#冒号分隔时间 时 分 + + + if alarm_repeat == 2:#每一天 + alarm_day = [0,1,2,3,4,5,6] + elif alarm_repeat == 3:#自定义 + alarm_day_tmp = alarm_data.split('-')[3]#-作为分隔符 + if len(str(alarm_day_tmp)) != 0: for i in range(0,7): - if alarm_week[i] != '0': + if alarm_day_tmp[i] != '0': alarm_day.append(i) - alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num}) - - # print("alarm_new end:{}",alarm_new) + else:#单次 1 + alarm_day=[] + # if alarm_switch = 0: + normal_alarm_save.append({"hour":alarm_hour,"min":alarm_min,"day":alarm_day,"enable":alarm_switch}) - with open("/ext/static/storage_file/alarm_msg.json", 'w',encoding='utf-8') as fd: - ujson.dump(alarm_new,fd) + EventMesh.publish("set_storage_config",["normal_alarm",normal_alarm_save]) + # normal_alarm = EventMesh.publish("get_storage_config","normal_alarm") + + # print("recv REMIND_SEND:{} normal_alarm ;{}".format(msg,normal_alarm)) + + EventMesh.publish(constants.PROTOCOL.REMIND_SEND) EventMesh.publish("push_update_alarm_show") - - # EventMesh.publish("add_alarm",[0,msg_tmp]) - EventMesh.publish(constants.PROTOCOL.REMIND_SEND) class HRSTART_ProtoCol(ProtoCol): @@ -1093,7 +1071,7 @@ class btemp2_ProtoCol(ProtoCol):#上传体温数据 send_data = self.PID+"*%s*%04X*btemp2"%(self.imei,len_size) MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"btemp2") MD5_SIGN = self.pack_MD5_head(MD5_head_data) - data = "[%s%s,%d,%f]"%(str(MD5_SIGN),send_data,1,msg[1]) + data = "[%s%s,%d,%s]"%(str(MD5_SIGN),send_data,1,str(msg[1])) # print("btemp2:data:%s"%(data)) # 通过socket发送到服务器端 EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) @@ -1300,7 +1278,6 @@ class bootoff_ProtoCol(ProtoCol): EventMesh.publish(constants.PROTOCOL.BOOTOFF_SEND) -#sos家庭号码 class sosHome_dial_ProtoCol(ProtoCol): """sos家庭号码""" TYPE = "SOS" @@ -1327,18 +1304,22 @@ class sosHome_dial_ProtoCol(ProtoCol): # print("sosHome_dial_ProtoCol:send data :{} {}".format(len(msg_tmp),msg_tmp)) #b'[SZKW*860132060006970*0015*sosHome_dial_ProtoCol,15521469561,10086,15521469561]' i = 0 - for i in range(len(msg_tmp)-1): - # print("sos:send data :{}".format(msg_tmp[i+1])) + num = 0 + count = 0 + print("sos msg_tmp",msg_tmp) + if len(msg_tmp) > 4: + num = 3 + else: + num = len(msg_tmp)-1 + data = [] + for i in range(num): + print("sos:send data :{}".format(msg_tmp[i+1])) if len(msg_tmp[i+1]) != 0: EventMesh.publish("set_storage_config",["SOS_NUMBER{}".format(i+1),msg_tmp[i+1]]) - # print("read_data:{} msg_tmp:{}".format(read_data,msg_tmp[i+1])) - - if (len(msg_tmp)-1) == 3: - EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2],msg_tmp[3]]) - elif (len(msg_tmp)-1) == 2: - EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2]]) - elif (len(msg_tmp)-1) == 1: - EventMesh.publish("set_dial_sos_number",[msg_tmp[1]]) + data.append(str(msg_tmp[i+1])) + count+=1 + print("data:{}".format(data)) + EventMesh.publish("set_dial_sos_number",data) EventMesh.publish(constants.PROTOCOL.SOS_SEND) @@ -1632,6 +1613,362 @@ class KEYBRD_ProtoCol(ProtoCol): # print("KEYBRD!!!!!!!!!!!!!",msg) EventMesh.publish(constants.PROTOCOL.KEYBRD_SEND) + +class TKS_ProtoCol(ProtoCol): + """微聊""" + TYPE = "TKS" + + + def send(self, event, msg): + # print("TK send:{}".format(msg)) + if len(str(msg)) == 1: + + len_size = len(str(msg))+len("TKS,") + # 实例:[XT*334588000000156*0009*TK,1] + send_data = self.PID+"*%s*%04X*TKS"%(self.imei,len_size) + MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TKS") + MD5_SIGN = self.pack_MD5_head(MD5_head_data) + data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg) + print("TKS:data:%s"%(data)) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) + + else: + # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据] + #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据] + arm_data = msg[1] + arm_sec = msg[0] + # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec)) + + arm = bytearray() + for i in range(len(arm_data)): + if arm_data[i] == 0x7d: + arm.extend(b'\x7d\x01') + elif arm_data[i] == 0x5b : + arm.extend(b'\x7d\x02') + elif arm_data[i] == 0x5d : + arm.extend(b'\x7d\x03') + elif arm_data[i] == 0x2c : + arm.extend(b'\x7d\x04') + elif arm_data[i] == 0x2a : + arm.extend(b'\x7d\x05') + else : + arm.append(arm_data[i]) + + datalen = len(arm) +len("TKS")+len(str(arm_sec))+1 + #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1)) + send_data = bytearray(self.PID+"*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec)) + send_data.extend(arm) + MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TKS") + MD5_SIGN = self.pack_MD5_head(MD5_head_data) + data = bytearray('[') + data.extend(MD5_SIGN) + data.extend(send_data) + data.extend(']') + # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data)) + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) + + + def recv(self, event, msg): + """ + + ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) + @param event: 微聊 + @param msg: 接收到的下行数据 + [SZKW*860132060004322*20BD*TK,#!AMR...] + """ + #Wechat_log("K_ProtoCol:recv:data:{}".format(msg)) + # print("TK recv:{}".format(msg)) + msg_tmp = msg.decode('ascii') + str = msg_tmp.split('TKS,') + # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR"))) + if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据 + # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg))) + arm_data = bytearray(str[1])#获取amr输出 + get_wechat_data = EventMesh.publish("get_wechat_data") + + MXA_MSG = get_wechat_data[0] + wechat_recode_list = get_wechat_data[1] + wechat_num = wechat_recode_list["num"] + # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) + + if wechat_num >= MXA_MSG: + wechat_num = 0 + if wechat_num == 0: + wechat_num += 1 + elif wechat_num > 0: + wechat_num += 1 + + + print("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list)) + wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3) + wechat_recode_list['num'] = wechat_num + EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list]) + #写语音文件数据 + screen_NAME = EventMesh.publish("get_screen_NAME") + get_lcd_state = EventMesh.publish("get_lcd_state") + if screen_NAME != "wechat" or get_lcd_state == 0: + 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 = "/ext/static/storage_file/{}.amr".format(wechat_num) + with open(path,"w") as fd: + arm = bytearray() + j = 0 + for i in range(len(arm_data)): + if arm_data[j] == 0x7d and arm_data[j+1] == 0x01: + arm.extend(b'\x7d') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02: + arm.extend(b'\x5b') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03: + arm.extend(b'\x5d') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04: + arm.extend(b'\x2c') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05: + arm.extend(b'\x2a') + j+=1 + else : + arm.append(arm_data[j]) + j+=1 + if j >= len(arm_data): + break + fd.write(arm) + EventMesh.publish(constants.PROTOCOL.TKS_SEND,1) + + + + +class TK_ProtoCol(ProtoCol): + """微聊""" + TYPE = "TK" + + + def send(self, event, msg): + # print("TK send:{}".format(msg)) + if len(str(msg)) == 1: + + len_size = len(str(msg))+len("TK,") + # 实例:[XT*334588000000156*0009*TK,1] + send_data = self.PID+"*%s*%04X*TK"%(self.imei,len_size) + MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TK") + MD5_SIGN = self.pack_MD5_head(MD5_head_data) + data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg) + print("TK:data:%s"%(data)) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) + + else: + # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据] + #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据] + arm_data = msg[1] + arm_sec = msg[0] + # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec)) + + arm = bytearray() + for i in range(len(arm_data)): + if arm_data[i] == 0x7d: + arm.extend(b'\x7d\x01') + elif arm_data[i] == 0x5b : + arm.extend(b'\x7d\x02') + elif arm_data[i] == 0x5d : + arm.extend(b'\x7d\x03') + elif arm_data[i] == 0x2c : + arm.extend(b'\x7d\x04') + elif arm_data[i] == 0x2a : + arm.extend(b'\x7d\x05') + else : + arm.append(arm_data[i]) + + datalen = len(arm) + len("TK")+len(str(arm_sec))+1 + #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1)) + send_data = bytearray(self.PID+"*%s*%04X*TK,"%(self.imei,datalen)) + send_data.extend(arm) + MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TK") + MD5_SIGN = self.pack_MD5_head(MD5_head_data) + data = bytearray('[') + data.extend(MD5_SIGN) + data.extend(send_data) + data.extend(']') + # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data)) + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) + + + def recv(self, event, msg): + """ + + ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) + @param event: 微聊 + @param msg: 接收到的下行数据 + [SZKW*860132060004322*20BD*TK,#!AMR...] + """ + #print("K_ProtoCol:recv:data:{}".format(msg)) + # print("TK recv:{}".format(msg)) + msg_tmp = msg.decode('ascii') + str = msg_tmp.split('TK,') + # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR"))) + if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据 + # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg))) + arm_data = bytearray(str[1])#获取amr输出 + get_wechat_data = EventMesh.publish("get_wechat_data") + + MXA_MSG = get_wechat_data[0] + wechat_recode_list = get_wechat_data[1] + wechat_num = wechat_recode_list["num"] + # print("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) + + if wechat_num >= MXA_MSG: + wechat_num = 0 + if wechat_num == 0: + wechat_num += 1 + elif wechat_num > 0: + wechat_num += 1 + + + print("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list)) + wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3) + wechat_recode_list['num'] = wechat_num + EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list]) + #写语音文件数据 + screen_NAME = EventMesh.publish("get_screen_NAME") + get_lcd_state = EventMesh.publish("get_lcd_state") + if screen_NAME != "wechat" or get_lcd_state == 0: + 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 = "/ext/static/storage_file/{}.amr".format(wechat_num) + with open(path,"w") as fd: + arm = bytearray() + j = 0 + for i in range(len(arm_data)): + if arm_data[j] == 0x7d and arm_data[j+1] == 0x01: + arm.extend(b'\x7d') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02: + arm.extend(b'\x5b') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03: + arm.extend(b'\x5d') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04: + arm.extend(b'\x2c') + j+=1 + elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05: + arm.extend(b'\x2a') + j+=1 + else : + arm.append(arm_data[j]) + j+=1 + if j >= len(arm_data): + break + fd.write(arm) + EventMesh.publish(constants.PROTOCOL.TK_SEND,1) + + + + + +class MESSAGE_ProtoCol(ProtoCol): + """微聊""" + TYPE = "MESSAGE" + + + def send(self, event, msg): + + #[XT*334588000000156*0007*MESSAGE] + send_data = self.PID+"*%s*0007*MESSAGE"%(self.imei) + MD5_SIGN = self.pack_MD5_head(send_data) + data = "[%s%s]"%(str(MD5_SIGN),send_data) + #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data)) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) + + def recv(self, event, msg): + """ + + @param event: 微聊文字 + @param msg: 接收到的下行数据 + """ + msg = msg[1:-1] + + msg_s = msg.decode('ascii') + msg_s = msg_s.split(',') + msg_s = msg_s[1] + # Wechat_log("msg_tmp:len:{}\r\n data:{}".format(len(msg_s),msg_s)) + + + get_wechat_data = EventMesh.publish("get_wechat_data") + + MXA_MSG = get_wechat_data[0] + wechat_recode_list = get_wechat_data[1] + wechat_num = wechat_recode_list["num"] + # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) + + if wechat_num >= MXA_MSG: + wechat_num = 0 + if wechat_num == 0: + wechat_num += 1 + elif wechat_num > 0: + wechat_num += 1 + msg_txt = {} + # 0 1 2 3 + print("wechat_num:init {}".format(wechat_num)) + msg_txt = UnicodeHexStr_To_Utf8Str(msg_s) + # Wechat_log("msg_txt:{}".format(msg_txt)) + wechat_recode_list["%02d"%(wechat_num)] = "T:{}".format(msg_txt) + wechat_recode_list['num'] = wechat_num + EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list]) + # Wechat_log("wechat_recode_list:len data:{}".format(wechat_recode_list)) + EventMesh.publish(constants.PROTOCOL.MESSAGE_SEND) + screen_NAME = EventMesh.publish("get_screen_NAME") + get_lcd_state = EventMesh.publish("get_lcd_state") + if screen_NAME != "wechat" or get_lcd_state == 0: + EventMesh.publish("load_screen", {"screen": "wechat_popup"}) + else: + EventMesh.publish("wechat_updata_list_show") + +# 平台发送: +# [XT*YYYYYYYYYYYYYYY*LEN*FACTORY] +# 实例:[XT*334588000000156*0007*FACTORY] +# 终端回复: +# [XT*YYYYYYYYYYYYYYY*LEN*FACTORY] +# 实例:[XT*334588000000156*0007*FACTORY] +# 说明:终端恢复出厂设置,里面设置的号码都将清空 +class FACTORY_ProtoCol(ProtoCol):#睡眠时间 + """ + 实例:[XT*334588000000156*0008*FACTORY] + 终端回复 + [XT*YYYYYYYYYYYYYYY*LEN*WLKEY] + 实例:[XT*334588000000156*0006*FACTORY] + """ + TYPE = "FACTORY" + + def send(self, event, msg): + send_data = self.PID+"*%s*0007*FACTORY"%(self.imei) + MD5_SIGN = self.pack_MD5_head(send_data) + data = "[%s%s]"%(str(MD5_SIGN),send_data) + # EventMesh.debug_log("FACTORY:send:%s"%(data)) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) + + def recv(self, event, msg): + + # EventMesh.debug_log("FACTORY!!!!!!!!!") + # msg = msg[1:-1] + # msg_tmp = msg.decode('ascii') + # msg_data = msg_tmp.split(',') + # EventMesh.debug_log("WLKEY_ProtoCol".format(msg_data[1])) + # EventMesh.publish("set_storage_config",["WLKEY",msg_data[1]]) + EventMesh.publish("app_factory_cb") + EventMesh.publish(constants.PROTOCOL.FACTORY_SEND) + # EventMesh.publish("app_factory",None)#app恢复出厂 + + class ProtoColResolver(object): def __init__(self): self.protocol_list = [] diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui.py index ec2750e1..22cb6bdd 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui.py @@ -1050,12 +1050,7 @@ class DialingScreen(Screen): 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("return_prev_screen") + EventMesh.publish("return_prev_screen") def Close(self): self.timer.stop() @@ -1905,7 +1900,7 @@ class MessageFullScreen(Screen): EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -2386,10 +2381,9 @@ class MsgDetailScreen(Screen): 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"}) + EventMesh.publish("return_prev_screen") + def btn8_press(self): EventMesh.publish("load_screen", {"screen": "popup"}) @@ -2687,11 +2681,11 @@ class HeartrateScreen(Screen): EventMesh.publish(constants.EVENT.STOP_HEART) def done_return(self): - EventMesh.publish("load_screen", {"screen": "health"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "health"}) - + EventMesh.publish("return_prev_screen") + def btn8_press(self): EventMesh.publish("watch_top_show") EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -2831,10 +2825,10 @@ class ToolboxScreen(Screen): self.is_sliding =0 def done_return(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") @@ -3044,12 +3038,7 @@ class IncomingCallScreen(Screen): 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("return_prev_screen") + EventMesh.publish("return_prev_screen") def btn1_release(self): pass @@ -3616,12 +3605,7 @@ class OnCallScreen(Screen): 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("return_prev_screen") + EventMesh.publish("return_prev_screen") def Close(self): self.timer.stop() @@ -3694,11 +3678,11 @@ class StepScreen(Screen): self.timer.stop() def done_return(self): - EventMesh.publish("load_screen", {"screen": "toolbox"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "toolbox"}) - + EventMesh.publish("return_prev_screen") + def btn8_press(self): EventMesh.publish("watch_top_show") EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -3738,24 +3722,24 @@ class WeatherScreen(Screen): 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_pos(5, 10) no_weather_img.set_size(135, 120) no_weather_img.set_src("E:/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_pos(145, 44) + weather_tem_label.set_size(240-145, 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) + # 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) @@ -3797,7 +3781,7 @@ class WeatherScreen(Screen): def update_weather_data(self, event, msg): - global weather_screen,weather_img,no_weather_img,weather_tem_label,no_weather_degree,\ + global weather_screen,weather_img,no_weather_img,weather_tem_label,\ 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") @@ -3818,14 +3802,9 @@ class WeatherScreen(Screen): temp = self.weather_data[4] if temp == None: - no_weather_degree.set_pos(200, 40) - weather_tem_label.set_text("_ _") + weather_tem_label.set_text("_ _℃") else: - if len(temp) > 2: - no_weather_degree.set_pos(218, 40) - else: - no_weather_degree.set_pos(200, 40) - weather_tem_label.set_text("{}".format(temp)) + weather_tem_label.set_text("{} ℃".format(temp)) date = self.weather_data[0] if date != '{}': @@ -3841,19 +3820,19 @@ class WeatherScreen(Screen): else: weather_location_label.set_text("--") else:#已联网未获取到天气数据 - no_weather_degree.set_pos(200, 40) + weather_location_label.set_text(" ") weather_detail_label.set_text("-/-") - weather_tem_label.set_text("_ _") + weather_tem_label.set_text("_ _℃") no_connect_label.set_text("未获取网络数据") no_connect_label1.set_text("请稍候重试") else: - no_weather_degree.set_pos(200, 40) + weather_location_label.set_text(" ") weather_detail_label.set_text("-/-") - weather_tem_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) @@ -3861,10 +3840,10 @@ class WeatherScreen(Screen): no_connect_label1.set_text("请联网后重试") def done_return(self): - EventMesh.publish("load_screen", {"screen": "toolbox"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "toolbox"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") @@ -4092,7 +4071,7 @@ class ContactsScreen(Screen): # EventMesh.publish("load_screen", {"screen": "main_menu"}) def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") @@ -4232,32 +4211,32 @@ class TemperatureScreen(Screen): 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.set_text("- -") + temperature_bpm_label.set_size(240-100, 40) + temperature_bpm_label.set_pos(100, 249) + temperature_bpm_label.set_text("- -℃") 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_size(140, 35) + temperature_keep_label.set_pos(100, 285) 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) + # 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_bpm_label.set_text("- -℃") temperature_start_label.set_text("正在测量中.") @@ -4266,11 +4245,11 @@ class TemperatureScreen(Screen): 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_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_bpm_label.set_text("- -℃") temperature_start_label.set_text("正在测量中.") EventMesh.publish("set_temp_state",1) EventMesh.publish(constants.EVENT.START_TEMP) @@ -4385,9 +4364,9 @@ class TemperatureScreen(Screen): # print("self.temp:{}".format(temp)) if self.point >= 2: if temp != 0: - temperature_bpm_label.set_text("{}".format(tmp)) + temperature_bpm_label.set_text("{} ℃".format(tmp)) else: - temperature_bpm_label.set_text("- -") + temperature_bpm_label.set_text("- -℃") if self.point%4 == 0 : temperature_start_label.set_text("正在测量中..") @@ -4431,7 +4410,7 @@ class TemperatureScreen(Screen): if WEAR == 0: temp = 0 temperature_start_label.set_text("佩戴异常,点击重测") - temperature_bpm_label.set_text("- -") + temperature_bpm_label.set_text("- -℃") temperature_keep_label.set_text(" ") temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT) else : @@ -4462,10 +4441,10 @@ class TemperatureScreen(Screen): EventMesh.publish(constants.EVENT.STOP_TEMP) def done_return(self): - EventMesh.publish("load_screen", {"screen": "health"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "health"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") @@ -4779,10 +4758,10 @@ class Spo2Screen(Screen): EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) def done_return(self): - EventMesh.publish("load_screen", {"screen": "health"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "health"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") @@ -5319,12 +5298,12 @@ class CountdownScreen(Screen): if self.g_end == 1: EventMesh.publish("load_screen", {"screen": "countdown"}) else: - EventMesh.publish("load_screen", {"screen": "toolbox"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): if self.g_state == 0: self.timer.stop() - EventMesh.publish("load_screen", {"screen": "toolbox"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): if self.g_state == 0: @@ -5377,7 +5356,7 @@ class CountdownEndScreen(Screen): self.FIND_timer_count += 1 if self.FIND_timer_count >= 4: #120秒 self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) + EventMesh.publish("return_prev_screen") return self.aud.play(1, 1, 'E:/static/audio_audio_haixiu.mp3') @@ -5391,33 +5370,32 @@ class CountdownEndScreen(Screen): def done_left_to_right(self): self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) + EventMesh.publish("return_prev_screen") def done_right_to_left(self): self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) + EventMesh.publish("return_prev_screen") def done_bottom_to_top(self): self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) + EventMesh.publish("return_prev_screen") def done_top_to_bottom(self): self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) + EventMesh.publish("return_prev_screen") def done_return(self): self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) + EventMesh.publish("return_prev_screen") def done_click(self): print("count down !!!!!!!!!!") self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): self.stop_FIND() - EventMesh.publish("load_screen", {"screen": "countdown"}) - + EventMesh.publish("return_prev_screen") def btn8_press(self): self.stop_FIND() EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -5695,12 +5673,12 @@ class StopwatchScreen(Screen): def done_return(self): if self.s_state == 0: self.timer.stop() - EventMesh.publish("load_screen", {"screen": "toolbox"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): if self.s_state == 0: self.timer.stop() - EventMesh.publish("load_screen", {"screen": "toolbox"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): if self.s_state == 0: @@ -5758,7 +5736,7 @@ class UIFINDScreen(Screen): def stop_FIND(self) : self.FIND_timer.stop() self.aud.stop() #播放声音 - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def Close(self): print("self.FIND_timer_Close") @@ -5818,20 +5796,20 @@ class LowPowerScreen(Screen): self.meta = Lowpower_screen def done_left_to_right(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_right_to_left(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_bottom_to_top(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_top_to_bottom(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_return(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_click(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -5890,25 +5868,25 @@ class LowOnePowerScreen(Screen): #0%的电池电量 EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"}) def done_left_to_right(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_right_to_left(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_bottom_to_top(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_top_to_bottom(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_return(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def done_click(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("load_screen", {"screen": "main_menu"}) @@ -6342,7 +6320,7 @@ class chargeOutScreen(Screen): rrestor_confirm_n_screen = None rrestor_confirm_n_screen_label = None -#正在充电 +# class restore_confirmScreen(Screen): NAME = "restore_confirm" def __init__(self): @@ -6352,6 +6330,9 @@ class restore_confirmScreen(Screen): self.count = 0 self.timer1 = osTimer() self.timer2 = osTimer() + self.timer3 = osTimer() + + EventMesh.subscribe("app_factory_cb",self.app_factory_cb) def initialization(self): global rrestor_confirm_n_screen ,rrestor_confirm_n_screen_label @@ -6390,6 +6371,17 @@ class restore_confirmScreen(Screen): self.timer1.stop() self.timer2.stop() + def app_factory_cb(self,event,msg): + ret = 0 + ret = ql_fs.path_exists("/ext/static/storage_file")#电话本 + if ret == True: + ql_fs.rmdirs("/ext/static/storage_file") + ql_fs.mkdirs("/ext/static/storage_file") + EventMesh.publish("alipay_unbind") + if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#已连接服务器发指令恢复出厂 + EventMesh.publish(constants.PROTOCOL.DLT_SEND) + self.timer3.start(4000,0,self.timer_cb_threescond) + pass def timer_cb_threescond(self,e): Power.powerRestart() @@ -6521,6 +6513,8 @@ class UI(object): self.screen = None self.screen_old = None self.screen_prev = None + self.screen_prev_new = None + self.screen_last = None self.screen_list = [] self.lv = lv self.system_sleep_timer = osTimer() @@ -6533,6 +6527,9 @@ class UI(object): self.main_id = 0 self.set_interrup_flag = 0 self.UI_high_priority_flag = 0 #如果=1,则当前ui不被打断 + self.page_id = ["main_menu"] + self.page_count = 0 + self.level = EventMesh.publish("get_storage_config","brightness_level") @@ -6580,6 +6577,10 @@ class UI(object): EventMesh.subscribe("publish_message_event_ui",self.publish_message_event_ui) EventMesh.subscribe("return_prev_screen",self.return_prev_screen) + EventMesh.subscribe("del_prev_screen",self.del_prev_screen)#退出当前界面就删除当前界面 进去需要保存当前界面 + EventMesh.subscribe("add_new_screen",self.add_new_screen)#保存新的界面用作返回上一级 + + self.system_sleep_timer.start(1000, 1, self.system_sleep_timer_cb) def publish_message_event_ui(self,event,msg): @@ -6599,9 +6600,59 @@ class UI(object): # for scr in self.screen_list: # if scr.handle_message_event(data) == 1 : # break + def add_new_screen(self, event, msg): + if msg == "main_menu": + if self.page_count > 0: + self.page_id.clear()#清空所有 + self.page_count = 0 + self.page_id = ["main_menu"] + print("add_new_screen ",self.page_id,self.page_count) + else: + if self.page_count == None: + self.page_count = 0 + self.page_id.clear()#清空所有 + self.page_id = ["main_menu"] + last_screen = self.page_id[int(self.page_count)] + print("self.page_id",last_screen,msg,self.page_id,self.page_count) + if last_screen != msg and (msg in last_screen) == False: + self.page_count+=1 + page_pre = "{}".format(msg) + self.page_id.append(page_pre) + + def del_prev_screen(self, event, msg): + if self.page_count > 0: + # print("del_prev_screen self.page_id",self.page_id,self.page_count) + if self.screen.meta_type != "popup": + del self.page_id[int(self.page_count)] + self.page_count-=1 + + if self.page_count == 0: + self.page_id.clear()#清空所有 + self.page_id = ["main_menu"] + + if self.page_count == None: + self.page_count = 0 + self.page_id.clear()#清空所有 + self.page_id = ["main_menu"] def return_prev_screen(self, event, msg): - if self.screen_prev != None: - EventMesh.publish("load_screen", {"screen": self.screen_prev.NAME}) + EventMesh.publish("del_prev_screen")#退出当前界面就删除当前界面 进去需要保存当前界面 + + pre_page = self.page_id[int(self.page_count)] + # print("pre_page:data = {} self.page_count:{}".format(pre_page,self.page_count)) + if len(pre_page) == 0:#预防是空的界面 + self.page_count = 0 + pre_page = "main_menu" + + if self.page_count == None: + self.page_count = 0 + + if self.page_count == 0: + pre_page = "main_menu" + if pre_page != None: + EventMesh.publish("load_screen", {"screen": pre_page}) + # if self.screen_prev != None: + # print("self.screen_prev.NAME",self.screen_prev.NAME) + # EventMesh.publish("load_screen", {"screen": self.screen_prev.NAME}) def set_interrup_incall(self, event, msg): self.set_interrup_flag = msg @@ -6857,9 +6908,14 @@ class UI(object): self.screen_old.Close() #先关闭上一次界面 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 + if self.screen.meta_type != "popup": #只要当前界面不是弹窗界面都要保存当前界面 + if self.screen_old.meta_type != "popup":#上个界面也不为弹窗界面 + self.screen_prev = self.screen_old #第二种方式 + screen_new = msg["screen"] + # print('self.screen_prev.NAME:{} self.screen_old:{}'.format(self.screen_prev.NAME,self.screen.NAME)) + if self.screen_prev.NAME != self.screen.NAME: + EventMesh.publish("add_new_screen",screen_new)#保存新的界面用作返回上一级 + if msg.get("meta"): self.screen.meta_info = msg.get("meta") print("load_screen:post_processor_before_initialization") @@ -6872,6 +6928,10 @@ class UI(object): self.lv.scr_load(self.screen.get_meta()) self.screen.post_processor_after_initialization() + self.screen_old = self.screen + if self.screen_prev == None: + if self.screen.meta_type != "popup": + self.screen_prev = self.screen self.__lcd_on() mem = gc.mem_free() print('2剩余内存RAM:{} KB'.format(mem / 1024)) diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_setting.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_setting.py index bc77f77a..072a09f5 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_setting.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_setting.py @@ -703,9 +703,9 @@ print("restore_screen") restore_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) restore_label = lv.label(restore_screen) -restore_label.set_pos(0, 100) -restore_label.set_size(240, 40) -restore_label.set_text("恢复出厂设置?") +restore_label.set_pos(0, 90) +restore_label.set_size(240, 70) +restore_label.set_text("设备多有的数据将被清除,确定继续?") restore_label.set_long_mode(lv.label.LONG.WRAP) restore_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) restore_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) @@ -883,13 +883,13 @@ class RestoreScreen(Screen): def concel(self, e): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def done_return(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") @@ -905,13 +905,13 @@ class UpdateScreen(Screen): update_return.add_event_cb(lambda e: EventMesh.callback_wrapper(self.back(e)),lv.EVENT.CLICKED, None) def back(self,e): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def done_return(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") @@ -943,10 +943,10 @@ class VersionScreen(Screen): EventMesh.publish("load_screen", {"screen": "factorymode"}) def done_return(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") @@ -1012,7 +1012,7 @@ class PoweroffScreen(Screen): pass def done_return(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def confirm(self, e): EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"}) @@ -1020,10 +1020,10 @@ class PoweroffScreen(Screen): def concel(self, e): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") @@ -1065,7 +1065,7 @@ class PowerOnScreen(Screen): def fun(self,*argc): EventMesh.publish("system_sleep_rest")#防止黑屏 if self.count == 0: - self.aud.play(1, 1, 'E:/static/R_POWER_1.mp3') #播放来电铃声 + self.aud.play(1, 1, 'E:/static/R_POWER_1.mp3') #播放来电铃声 else: play_state = EventMesh.publish("get_audio_state")#音频播放状态 if play_state != None: @@ -1197,13 +1197,13 @@ class LanguageScreen(Screen): self.meta = language_screen def done_return(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("load_screen", {"screen": "main_menu"}) class DialswitchScreen(Screen): @@ -1247,7 +1247,7 @@ class DialswitchScreen(Screen): def done_return(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def done_left_to_right(self):#右滑 #print("done_left_to_right!!!!!!!!!") @@ -1289,7 +1289,7 @@ class DialswitchScreen(Screen): self.timer.stop() def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") @@ -1327,7 +1327,7 @@ class ThemeswitchScreen(Screen): EventMesh.publish("load_screen", {"screen": "main_menu"}) def btn8_press(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("load_screen", {"screen": "main_menu"}) # -------------------------------------------imei screen---------------------------------------------------------- imei_screen = lv.obj() @@ -1366,10 +1366,10 @@ class ImeiScreen(Screen): imei_label.set_text(imei) def done_return(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") @@ -1387,10 +1387,10 @@ class AppScreen(Screen): app_label.set_text(imei) def done_return(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") @@ -1584,10 +1584,10 @@ class BrightnessScreen(Screen): def done_return(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show") @@ -1605,13 +1605,13 @@ class VolumeScreen(Screen): volume_alarm_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "alarmvolume"})), lv.EVENT.CLICKED, None) def done_return(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "main_menu"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("load_screen", {"screen": "maiin_menu"}) @@ -1837,10 +1837,10 @@ class totalvolumeScreen(Screen): def done_return(self): self.aud.stop() - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn1_release(self): - EventMesh.publish("load_screen", {"screen": "setting"}) + EventMesh.publish("return_prev_screen") def btn8_press(self): EventMesh.publish("watch_top_show")