微聊漏接消息
authord15521469561 <d155214695615@qq.com>
Wed, 10 May 2023 01:15:14 +0000 (09:15 +0800)
committerd15521469561 <d155214695615@qq.com>
Wed, 10 May 2023 01:15:14 +0000 (09:15 +0800)
2.sdk/Helios_SDK/services/microPython/ports/quectel/core/appWechat.py
2.sdk/Helios_SDK/services/microPython/ports/quectel/core/constants.py
2.sdk/Helios_SDK/services/microPython/ports/quectel/core/mgr.py
2.sdk/Helios_SDK/services/microPython/ports/quectel/core/protocol.py
2.sdk/Helios_SDK/services/microPython/ports/quectel/core/ui.py
2.sdk/Helios_SDK/services/microPython/ports/quectel/core/ui_setting.py

index 1007552..dfc09d8 100644 (file)
@@ -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))
index 23eb744..67a259e 100644 (file)
@@ -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" 
index 40af68d..2abb08a 100644 (file)
@@ -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))
index f4106e2..0509a51 100644 (file)
@@ -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 = []
index b72e098..ee5d88b 100644 (file)
@@ -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"})
index caefb12..b6c3013 100644 (file)
@@ -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"