From: d15521469561 Date: Wed, 10 May 2023 01:15:14 +0000 (+0800) Subject: 微聊漏接消息 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=b8ad3520d159f2b327f5725175cb3e4fc08e70ac;p=mirrors%2FASR1603_G5.git 微聊漏接消息 --- diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/appWechat.py b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/appWechat.py index 10075522..dfc09d82 100644 --- a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/appWechat.py +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/appWechat.py @@ -84,6 +84,7 @@ class WechatScreen(Screen): self.wechat_num = 0 self.read_data = {} self.volum_size = 8 + self.msg_tmp = "" check_txt = ql_fs.path_exists("/ext/static/storage_file/wechat_num.txt") if check_txt == True : with open("/ext/static/storage_file/wechat_num.txt","r") as fd:#音频文件编号 @@ -159,7 +160,7 @@ class WechatScreen(Screen): #写编号 with open("/ext/static/storage_file/wechat_num.txt","w") as fd: fd.write("{}".format(self.wechat_num)) - #print("self.MXA_MSG:{} self.wechat_num:{} self.wechat_recode_list:{}".format(self.MXA_MSG,self.wechat_num,self.wechat_recode_list)) + def wechat_updata_list_show(self, event, msg): if (self.wechat_list.has_flag(lv.obj.FLAG.HIDDEN)) == False: @@ -180,9 +181,7 @@ class WechatScreen(Screen): elif index == 2 or index == 1: #读取json文件中的键作为label文本; #print("self.wechat_list.self.wechat_num:{}".format(self.wechat_num)) - self.startWidth = 0 - self.startY = 0 - i = 0 + print("self.wechat_recode_list:{}".format(self.wechat_recode_list)) self.wechat_list.delete()#先删除一次控件 self.wechat_list = lv.obj(wechat_screen) @@ -194,52 +193,35 @@ class WechatScreen(Screen): if index == 2: self.wechat_list.add_flag(lv.obj.FLAG.HIDDEN) j = 1 - count = 0 if len(self.wechat_recode_list) == self.MXA_MSG: j = self.wechat_num+1 + for i in range(self.MXA_MSG): if j > self.MXA_MSG: j = 1 key = "%02d"%(j) - # if j > len(self.wechat_recode_list) : - # break + if j > len(self.wechat_recode_list) : + break j+=1 - - # print("self.wechat_recode_list.keys():{}".format(self.wechat_recode_list.keys())) - # if self.wechat_recode_list.keys().find("%02d"%(j)) == -1: - # continue - # num = "%02d" - if key in self.wechat_recode_list: - - print('键存在于字典中') - else: - if count > 0: - count-=1 - print('键不存在于字典中') - continue - - value = self.wechat_recode_list[key] - # print("value:{}".format(value)) - self.startY = 52*count + + + self.startY = 56*i + if value.find("S:") != -1 or value.find("R:") != -1: - msg_tmp = value[2:] - msg_tmp = int(msg_tmp) - self.startWidth = 55+msg_tmp*10 + self.msg_tmp = value[2:] + self.msg_tmp = int(self.msg_tmp) + self.startWidth = 55+self.msg_tmp*10 elif value.find("T:") != -1:#文字显示 - msg_tmp = value[2:] - size = len(msg_tmp) - self.startWidth = size*20 - # print("self.startWidth :{} size:{}".format(self.startWidth,size)) - if self.startWidth > 230: - self.startWidth = 230 + self.msg_tmp = value[2:] + self.startWidth = 230 wechat_btn = lv.btn(self.wechat_list) # if value.find("R:") != -1: - wechat_btn.set_size(self.startWidth,50) + wechat_btn.set_size(self.startWidth,54) if value.find("R:") != -1 or value.find("T:") != -1 :#显示文字: wechat_btn.set_pos(10,self.startY ) wechat_btn.add_style(style_wechat_s_btn, lv.PART.MAIN | lv.STATE.DEFAULT) @@ -249,21 +231,22 @@ class WechatScreen(Screen): if value.find("R:") != -1 or value.find("S:") != -1: wechat_btn.add_event_cb(lambda e: self.play_label(e), lv.EVENT.CLICKED, None) - + _btn_label1 = lv.label(wechat_btn) if value.find("R:") != -1: _btn_label1.set_size(40, 40) _btn_label1.set_pos(35, 8) - _btn_label1.set_text(str(msg_tmp)+'\"') + _btn_label1.set_text(str(self.msg_tmp)+'\"') elif value.find("S:") != -1: _btn_label1.set_size(40, 40) - _btn_label1.set_pos(self.startWidth-72, 8) - _btn_label1.set_text(str(msg_tmp)+'\"') + _btn_label1.set_pos(self.startWidth-78, 8) + _btn_label1.set_text(str(self.msg_tmp)+'\"') elif value.find("T:") != -1: - _btn_label1.set_size(230, 40) - _btn_label1.set_pos(0, 5) - _btn_label1.set_text(str(msg_tmp)) + + _btn_label1.set_size(216, 66) + _btn_label1.set_pos(0, 0) + _btn_label1.set_text(str(self.msg_tmp)) _btn_label1.set_long_mode(lv.label.LONG.DOT) _btn_label1.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) @@ -287,7 +270,6 @@ class WechatScreen(Screen): _btn_img.set_pos(self.startWidth-50, 0) _btn_img.set_src("E:/static/APP/wechat/S_3.png") _btn_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) - count+=1 bottom_btn1 = self.wechat_list.get_child(-1) bottom_btn1.scroll_to_view(lv.ANIM.OFF) @@ -319,7 +301,7 @@ class WechatScreen(Screen): if self.wechat_num >= self.MXA_MSG: self.wechat_num = 0 self.wechat_num += 1 - print("talking self.wechat_num ...:{}".format(self.wechat_num)) + print("talking self.wechat_num ...:{} self.MXA_MSG:{}".format(self.wechat_num,self.MXA_MSG)) self.record_test.start("/ext/static/storage_file/{}.amr".format(self.wechat_num),16) self.second_timer.start(1000, 1, self.reduce_second) self.press_state = 1 @@ -354,10 +336,12 @@ class WechatScreen(Screen): #读音频amr二进制数据 #修改或添加词典键值 - + self.press_state = 0 + self.ble_send = 0 + with open("/ext/static/storage_file/wechat_record.json","w",encoding="utf-8") as fd: ujson.dump(self.wechat_recode_list,fd) - + print("senddata self.wechat_num ...:{}".format(self.wechat_num)) path = "/ext/static/storage_file/{}.amr".format(self.wechat_num) with open(path,"rb") as fd: buf = bytearray(ql_fs.path_getsize(path)) @@ -365,9 +349,9 @@ class WechatScreen(Screen): senddata = [self.countdown_old,buf] EventMesh.publish(constants.PROTOCOL.TK_SEND,senddata) #隐藏显示文本 显示列表显示框 - self.press_state = 0 - self.ble_send = 0 + self.timer.start(2 * 1000, 0, self.hide_label) + self.updata_list_show(2) @@ -582,12 +566,14 @@ class TK_ProtoCol(ProtoCol): wechat_num = get_wechat_data[1] MXA_MSG = get_wechat_data[0] wechat_recode_list = get_wechat_data[2] - if wechat_num > 0: - wechat_num += 1 + # 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 #写记录列表 wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3) @@ -661,12 +647,14 @@ class MESSAGE_ProtoCol(ProtoCol): wechat_num = get_wechat_data[1] MXA_MSG = get_wechat_data[0] wechat_recode_list = get_wechat_data[2] - if wechat_num > 0: - wechat_num += 1 + # 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 msg_txt = {} # 0 1 2 3 # print("msg_tmp:init {}".format(msg_s)) diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/constants.py b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/constants.py index 23eb744f..67a259e3 100644 --- a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/constants.py +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/constants.py @@ -65,6 +65,9 @@ class PROTOCOL: SOS_SEND = "SOS_SEND" SOS_RECV = "SOS_RECV" + BOOTOFF_SEND = "BOOTOFF_SEND" + BOOTOFF_RECV = "BOOTOFF_RECV" + class EVENT: CHANNEL_SOCKET_SEND = "CHANNEL_SOCKET_SEND" START_LOCATION = "START_LOCATION" diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/mgr.py b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/mgr.py index 40af68d1..2abb08ae 100644 --- a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/mgr.py @@ -916,11 +916,11 @@ class DeviceInfoManager(Abstract): self.HR_Onestate = 0 self.HR_OneTime = 0 else: - if self.get_hr_state == 3 or self.get_spo2_state == 3:#3单次测量 - if self.get_hr_state == 3: + if self.get_hr_state != 0 or self.get_spo2_state != 0:#3单次测量 + if self.get_hr_state != 0: EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 EventMesh.publish(constants.EVENT.STOP_HEART) - elif self.get_spo2_state == 3: + elif self.get_spo2_state != 0: EventMesh.publish("set_spo2_state",0)#2代表后台进入测试 EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) self.SENSOR_time = time_tmp @@ -1263,7 +1263,7 @@ class SockManager(Abstract): _thread.start_new_thread(self.reconnect, ()) break data = data + r - if data[-1] != 0x5d and len(data)<10*1024: #']': + if data[-1] != 0x5d and len(data)<20*1024: #']': continue self.connect_tmp = 1 #有数据,就认为是连接状态 print("TCP:recv: data:{}".format(data)) diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/protocol.py b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/protocol.py index f4106e22..0509a51e 100644 --- a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/protocol.py @@ -921,8 +921,46 @@ class SOS_ProtoCol(ProtoCol): # EventMesh.publish("save_phonename", sos_dial) # voiceCall.callStart(sos_dial) EventMesh.publish(constants.PROTOCOL.SOS_SEND) - +#定时开关机 +class bootoff_ProtoCol(ProtoCol): + """定时开关机""" + TYPE = "BOOTOFF" + def send(self, event, msg): + # [XT*334588000000156*0004*MONITOR] + send_data = "SZKW*%s*0007*BOOTOFF"%(self.imei) + MD5_SIGN = self.pack_MD5_head(send_data) + data = "[%s%s]"%(str(MD5_SIGN),send_data) + print("BOOTOFF:data:%s"%(data)) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) + + def recv(self, event, msg): + """ + @param event: + @param msg: 接收到的下行数据 + """ + # b'[SZKW*867387060319166*000A*SOS_SEND]' + read_data = {} + read_data = EventMesh.publish("get_storage_data") + msg = msg[1:-1] + msg_tmp = msg.decode('ascii') + msg_tmp = msg_tmp.split(',') + on_bt = msg_tmp[1] + on_hour = msg_tmp[2] + on_min = msg_tmp[3] + print("BOOTOFF:send data:%d %d %d"%(on_bt,on_hour,on_min)) + #b'[SZKW*860132060006970*0015*BOOTOFF,1,06:00,23:59]' + + read_data["off_on"] = on_bt + read_data["off_hour"] = on_hour + read_data["off_min"] = on_min + EventMesh.publish("set_storage_data",read_data) + with open("/ext/static/storage_file/config.json","w",encoding="utf-8") as fd: + ujson.dump(read_data,fd) + EventMesh.publish(constants.PROTOCOL.BOOTOFF_SEND) + + class ProtoColResolver(object): def __init__(self): self.protocol_list = [] diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/ui.py b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/ui.py index b72e0986..ee5d88b3 100644 --- a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/ui.py +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/ui.py @@ -798,9 +798,9 @@ class CallLogScreen(Screen): if self.name == None: self.name = phnoname - - EventMesh.publish("save_phonename",self.name)# - voiceCall.callStart(str(phonnum)) + if len(self.name) > 0: + EventMesh.publish("save_phonename",self.name)# + voiceCall.callStart(str(phonnum)) def done_return(self): EventMesh.publish("load_screen", {"screen": "main_menu"}) diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/ui_setting.py b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/ui_setting.py index caefb125..b6c30137 100644 --- a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/ui_setting.py +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/ui_setting.py @@ -1001,7 +1001,55 @@ class PoweroffConfirmScreen(Screen): def btn8_press(self): pass +from common import Abstract +class TimePoweroffScreen(Abstract): + + + def __init__(self): + super().__init__() + self.power_off_flag = 0 + self.read_data = {} + EventMesh.subscribe("get_time_power_off", self.get_time_power_off) + EventMesh.subscribe("power_off_callback", self.power_off_callback) + EventMesh.subscribe("set_time_power_off", self.set_time_power_off) + + + def power_off_callback(self,event,msg): + if self.power_off_flag == 0: + self.power_off_flag = 1 + EventMesh.publish("set_time_power_off") + Power.powerDown() + + elif self.power_off_flag == 1: + self.power_off_flag = 0 + EventMesh.publish("set_time_power_off") + Power.powerRestart() + + + def get_time_power_off(self,event,msg): + if self.power_off_flag == 0: + self.power_off_flag = 1 + elif self.power_off_flag == 1: + self.power_off_flag = 0 + + def set_time_power_off(self,event,msg): + self.read_data = EventMesh.publish("get_storage_data") + if self.read_data != {}: + b = str("off_on") in self.read_data().keys() + if b == True: + pass + + + + def done_return(self): + pass + + def btn1_release(self): + pass + + def btn8_press(self): + pass class LanguageScreen(Screen): NAME = "language"