对接云米服务
authordxy15521469561 <1731678236@qq.com>
Tue, 19 Sep 2023 07:13:59 +0000 (15:13 +0800)
committerdxy15521469561 <1731678236@qq.com>
Tue, 19 Sep 2023 07:13:59 +0000 (15:13 +0800)
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/EventMesh.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/alarm.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/constants.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py

index cc68406..d7df683 100644 (file)
@@ -78,7 +78,7 @@ def set_log(log_adapter):
 
 def add_filter(flt):
     event_store.add_filter(flt)
-Txt_Log = 1
+Txt_Log = 0
 def txt_log(data):
     if Txt_Log != 0 :
         print(data)
index e1c8b6f..5e9ff75 100644 (file)
@@ -402,9 +402,9 @@ label_ok.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
 #闹钟信息
 alarm_list = [{'hour': 16, 'repeart': 10, 'idx': 0, 'enabled': 0, 'days': [], 'minute': 39},
                {'hour': 16, 'repeart': 10, 'idx': 1, 'enabled': 0, 'days': [], 'minute': 39}, 
-               {'hour': 15, 'repeart': 1, 'idx': 2, 'enabled': 0, 'days': [], 'minute': 13}, 
-               {'hour': 16, 'repeart': 1, 'idx': 3, 'enabled': 0, 'days': [], 'minute': 39}, 
-               {'hour': 15, 'repeart': 1, 'idx': 4, 'enabled': 0, 'days': [], 'minute': 13}]
+               {'hour': 15, 'repeart': 15, 'idx': 2, 'enabled': 0, 'days': [], 'minute': 13}, 
+               {'hour': 16, 'repeart': 15, 'idx': 3, 'enabled': 0, 'days': [], 'minute': 39}, 
+               {'hour': 15, 'repeart': 15, 'idx': 4, 'enabled': 0, 'days': [], 'minute': 13}]
 #用于显示闹钟列表不包含开关机信息
 
 class ClockManager(Abstract):
@@ -419,6 +419,7 @@ class ClockManager(Abstract):
         if IFEXIST == True:
             with open("/usr/static/storage_file/alarm_msg.json","r",encoding='utf-8') as fd:
                 self.check_alarm_list = ujson.load(fd)
+        print("self.check_alarm_list",self.check_alarm_list)
 
     def post_processor_after_instantiation(self):
         EventMesh.subscribe("push_clock_info", self.set)
@@ -914,9 +915,9 @@ class ClkListScreen(Screen):
                 # no_add_alarm_img.add_flag(lv.obj.FLAG.HIDDEN)
                 no_add_alarm.add_flag(lv.obj.FLAG.HIDDEN)
                 self.alarm_show_list.delete()#先删除一次控件
-                self.alarm_show_list = lv.obj(clk_list_screen1_1)
-                self.alarm_show_list.set_pos(0, 0)
-                self.alarm_show_list.set_size(128, 128)
+                self.alarm_show_list = lv.obj(clk_list_screen)
+                self.alarm_show_list.set_pos(0, 35)
+                self.alarm_show_list.set_size(128, 128-35)
                 self.alarm_show_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
                 self.alarm_show_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
                 #print("菜单的孩子个数:",clk_list_screen1.get_child_cnt())
@@ -927,7 +928,7 @@ class ClkListScreen(Screen):
                     if count >= 3:
                         break
                     repeart = each["repeart"]
-                    if repeart == 10:
+                    if repeart >= 10:
                         continue
                     _btn = lv.btn(self.alarm_show_list)
                     _btn.set_size(112,45)
index 2fdc3fb..6fcbf68 100644 (file)
@@ -87,6 +87,9 @@ class PROTOCOL:
     KEYBRD_SEND ="KEYBRD_SEND"
     KEYBRD_RECV = "KEYBRD_RECV"
 
+    SILENCETIMEFS_SEND ="SILENCETIMEFS_SEND"
+    SILENCETIMEFS_RECV = "SILENCETIMEFS_RECV"
+
 
 class EVENT:
     CHANNEL_SOCKET_SEND = "CHANNEL_SOCKET_SEND"
index 3134dff..0a2f863 100644 (file)
@@ -157,7 +157,7 @@ def main_init():
     # ui.add_screen(_ui.Setting3Screen())  
     print("init6:{}".format(utime.localtime()))
     
-    from protocol import WLKEY_ProtoCol,SILENCETIME2_ProtoCol,KEYBRD_ProtoCol,LK_ProtoCol,PING_ProtoCol,HEART_ProtoCol,OXYGEN_ProtoCol,OXYGEN_One_ProtoCol,HRSTART_ProtoCol,CENTER_ProtoCol,UPLOAD_ProtoCol,\
+    from protocol import SILENCETIMEFS_ProtoCol,WLKEY_ProtoCol,SILENCETIME2_ProtoCol,KEYBRD_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
     
@@ -250,6 +250,7 @@ def main_init():
     pcr.add_support(KEYBRD_ProtoCol())
     pcr.add_support(SILENCETIME2_ProtoCol())
     pcr.add_support(WLKEY_ProtoCol())
+    pcr.add_support(SILENCETIMEFS_ProtoCol())
     EventMesh.publish("load_screen", {"screen": "poweron"})
     sm = SockManager()
     sm.add_support_resolver(pcr)
index dd1bd82..cbdeecf 100644 (file)
@@ -517,6 +517,23 @@ class sosInfoCallManager(Abstract):
                         num_len = len(number)+2  
                     # print("number:{} number_len :{} num:{} num_len:{}".format(number,len(number),num,num_len))
                     if num > num_len :
+                        if len(number) == 1:
+                            number1 = str(number[0])
+                            sms.sendPduMsg(number1, '我需要你的帮助', 'UCS2')
+                        elif len(number) == 2:
+                            number1 = str(number[0])
+                            sms.sendPduMsg(number1, '我需要你的帮助', 'UCS2')
+
+                            number2 = str(number[1])
+                            sms.sendPduMsg(number2, '我需要你的帮助', 'UCS2')
+                        elif len(number) == 3:
+                            number1 = str(number[0])
+                            sms.sendPduMsg(number1, '我需要你的帮助', 'UCS2')
+                            number2 = str(number[1])
+                            sms.sendPduMsg(number2, '我需要你的帮助', 'UCS2')
+                            number3 = str(number[2])
+                            sms.sendPduMsg(number3, '我需要你的帮助', 'UCS2')
+                            
                         EventMesh.publish("set_sos_flag",0)
                         EventMesh.publish("set_sos_num",0)
                     else:
@@ -1451,7 +1468,7 @@ class DeviceInfoManager(Abstract):
             self.old_time = 0    
             self.set_hsenor_crt = 0
 
-        
+        EventMesh.publish("get_class_in_time_page")
         #quecgnss.gnssEnable(0)  
     
       
@@ -2875,10 +2892,11 @@ class getSosFlagManager(Abstract):#设置sos
         self.call_timer.start(10000, 0, self.call_timer_cb)#延迟10S 继续拨打
 
     def call_timer_cb(self, *args, **kwargs):
-        # 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"})  
+        if self.sos_flag == 1:
+            # 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"})  
 
     def get_sos_flag(self, event, msg): 
         return self.sos_flag
index c56f636..ac2625a 100644 (file)
@@ -23,7 +23,7 @@ import usys
 
 
 def server_init(server_type = None):
-    #服务器选择1,防走丢,2大锤,3三基同创,4童信
+    #服务器选择1,防走丢,2大锤,3三基同创,4童信 5云米
     if server_type == None:
         server_type = 1
     #print("server_init:server_type:{}".format(server_type))
@@ -56,11 +56,7 @@ def server_init(server_type = None):
         d_server_port = 8505
         d_md5_key = ""
         d_PID = "3G"
-    elif server_type == 6:
-        d_server_addr = "120.26.104.21"
-        d_server_port = 9968
-        d_md5_key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
-        d_PID = "SZKW"
+    
     return [d_server_addr,d_server_port,d_md5_key,d_PID]
 from queue import Queue
 def unicode_to_utf8(src):
@@ -162,7 +158,7 @@ class SockManager(Abstract):
 
     def connect(self):
         print("connect1{}:{}".format(self.server_addr, self.server_port))
-        if EventMesh.publish("get_sim_Status") != 1: #没sim
+        if EventMesh.publish("network_state") == 0: #没注网
             return
         try:
             if(self.sock != None) :
@@ -245,7 +241,7 @@ class SockManager(Abstract):
 
     def send(self, topic, msg):
        # print("TCP:send data:{}".format(msg))
-        if EventMesh.publish("get_sim_Status") != 1: #没sim,则不发送
+        if EventMesh.publish("network_state") == 0: #没注网,则不发送
             EventMesh.publish(constants.EVENT.SET_CONNECT, 0)#标记断网
             print("dataCall not connect")
             return
@@ -271,7 +267,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 #有数据,就认为是连接状态
@@ -287,8 +283,8 @@ class SockManager(Abstract):
                 
                 data = b''
             except Exception as e:
-                #print("TCP:ERROR:recv:")
-                #usys.print_exception(e)
+                print("TCP:ERROR:recv:")
+                usys.print_exception(e)
                 self.run_flag = False
                 self.reconnect()
                 
@@ -552,7 +548,7 @@ class UD_ProtoCol(ProtoCol):
         
         MD5_SIGN = self.pack_MD5_head(MD5_head_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
-        #EventMesh.txt_log("{}".format(data))
+        print("UD:data:{}".format(data))
         # wt_data = EventMesh.publish("get_weather_data")
         # # #如果没有天气数据,则获取天气数据
         # if wt_data != None or wt_data[0] == None :
@@ -685,7 +681,7 @@ class PHL_ProtoCol(ProtoCol):
             phonebook_oldtmp = phonebook_tmp
                 # print("phonebook_oldtmp!!!:{}".format(str(phonebook_oldtmp)))
         # print("phonebook!!!:{}".format(str(phonebook)))
-        with open("/ext/static/storage_file/phonebook.json","w",encoding="utf-8") as fd:
+        with open("/usr/static/storage_file/phonebook.json","w",encoding="utf-8") as fd:
             ujson.dump(phonebook,fd)
             print("创建电话簿")
         
@@ -779,41 +775,69 @@ class REMIND_ProtoCol(ProtoCol):
         msg_tmp = msg_tmp[1]
 
         alarm_new  = EventMesh.publish("read_alarminjson")
-        # print("alarm_list:{} msg_tmp:{}",alarm_new,msg_tmp)
+        print("alarm_list:{} msg_tmp:{}",alarm_new,msg_tmp)
 
-        k=0
+        
+        k=1
+        count = 0
+        
+        for i in range(len(str(msg_tmp))):#寻找有多少个,号
+            if msg_tmp[i] == ',':
+                k+=1
         if len(alarm_new) < 5 :
             alarm_new = []
             for i in range(5):
-                alarm_new.append({'hour': 16, 'repeart': 1, 'idx': i, 'enabled': 0, 'days': [], 'minute': 39}) 
-        for j in range(2,5):#0 1是开关机,234是闹钟
+                alarm_new.append({'hour': 8, 'repeart': 10, 'idx': i, 'enabled': 0, 'days': [], 'minute': 39}) 
+        for j in range(2,2+k):#0 1是开关机,234是闹钟
             alarm_day = []
             alarm_week = []
             alarm_total_data = []
-            alarm_total_data = msg_tmp.split(',')[k]
-            k+=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:#自定义
-                    for i in range(0,7):
-                        if alarm_week[i] != '0':
-                           alarm_day.append(i)
-                alarm_new[j] = {"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num}
-                
-        # print("self.alarm_list: {}".format(alarm_new))
-        with open("/ext/static/storage_file/alarm_msg.json", 'w',encoding='utf-8') as fd:
+            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[j] = {"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:#自定义
+                            for i in range(0,7):
+                                if alarm_week[i] != '0':
+                                    alarm_day.append(i)
+                        alarm_new[j] = {"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num}
+                        
+        print("k",k,alarm_new)
+        
+        with open("/usr/static/storage_file/alarm_msg.json", 'w',encoding='utf-8') as fd:
             ujson.dump(alarm_new,fd)
         EventMesh.publish("push_update_alarm_show")
         
@@ -1131,15 +1155,28 @@ class MONITOR_ProtoCol(ProtoCol):
         @param msg: 接收到的下行数据
         """
         # b'[SZKW*867387060319166*000A*MONITOR]'
-        read_data = EventMesh.publish("get_storage_config","center_dial")
-
-        if read_data != None: 
-            contact = read_data
-            if len(contact) > 0:
-                print("MONITOR RECV msg:{} {}".format(contact,type(contact)))
-                EventMesh.publish("save_phonename", contact)  
-                EventMesh.publish("save_phonenum", contact)  
-                voiceCall.callStart(contact)
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_tmp = msg_tmp.split('MONITOR')
+        msg_tmp = msg_tmp[1]
+        print("MONITOR_ProtoCol RECV msg:{} msg_:{}".format(msg,len(msg_tmp)))
+        if len(msg_tmp) != 0:
+            data = msg_tmp.split(",")
+            contact = data[1]
+            EventMesh.publish("save_phonename", contact)  
+            EventMesh.publish("save_phonenum", contact)  
+            EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"})
+            # voiceCall.callStart(contact)
+        else:
+            read_data = EventMesh.publish("get_storage_config","center_dial")
+
+            if read_data != None: 
+                contact = read_data
+                if len(contact) > 0:
+                    print("MONITOR RECV msg:{} {}".format(contact,type(contact)))
+                    EventMesh.publish("save_phonename", contact)  
+                    EventMesh.publish("save_phonenum", contact)  
+                    EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"})
         EventMesh.publish(constants.PROTOCOL.MONITOR_SEND)  
 
 #定时开关机
@@ -1244,7 +1281,7 @@ class LOWBAT_ProtoCol(ProtoCol):
         EventMesh.publish("set_low_bat_btn",on_bt)
         EventMesh.publish(constants.PROTOCOL.LOWBAT_SEND)  
 
-# 低电提醒
+# 
 #[XT*334588000000156*0008*LOWBAT,1]
 class Time_ProtoCol(ProtoCol):
     """设置系统时间"""
@@ -1304,6 +1341,101 @@ class WLKEY_ProtoCol(ProtoCol):
         # print("WLKEY!!!!!!!!!!!!!",msg)
         EventMesh.publish(constants.PROTOCOL.WLKEY_SEND)  
 
+# [SG*5678901234*0037* SILENCETIMEFS,21:10-7:30@0111110,21:10-7:30@0111110,21:10-7:30@0111110,21:10-7:30@0111110]
+
+#免打扰
+class SILENCETIMEFS_ProtoCol(ProtoCol):#云米
+    """上课禁用"""
+    TYPE = "SILENCETIMEFS"
+    def send(self, event, msg):
+        # [XT*334588000000156*0006*SILENCETIME2] a b c d
+        send_data = self.PID+"*%s*000D*SILENCETIMEFS"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        # print("KEYBRD:data:%s"%(data))
+        # print("SILENCETIME2!!!!!!!!!!!!!",msg)
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+    def recv(self, event, msg):
+        """
+        @param event:
+        @param msg: 接收到的下行数据
+        """
+        class_in_buf = {"1": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []},\
+        "0": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}, \
+        "3": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}, \
+        "2": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}}
+
+        # class_in_buf.append({'start_hour': "16:54", 'week': [], 'idx': 0, 'enabled': 0, 'end_hour': "18:39"}) 
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_tmp_d = str(msg_tmp.split('SILENCETIMEFS,')[1])
+        
+        count = 1
+        k = 0
+
+        for i in range(len(str(msg_tmp_d))):
+            if msg_tmp_d[i] == ',':
+                count+=1
+
+        for x in range(count):#21:10-7:30@0111110,21:10-7:30@0111110,21:10-7:30@0111110,21:10-7:30@0111110
+            week = []
+            if x >= 4:
+                break
+            if count > 1:
+
+                msg_data = msg_tmp_d.split(',')[x]
+                print("SILENCETIMEFS count",msg_data)
+                b = msg_data.find('-')
+                if b != -1:
+                    data = msg_data.split('-')#-作为分隔符
+                    time = data[1].split('@')#@作为分隔符
+                    print("data",data,time,data[0],time[0])
+                    start_time = data[0]#开始时间
+                    end_time = time[0]#结束时间
+                    enable = 1
+                    week_day = time[1]
+                    for i in range(0,7):
+                        if week_day[i] != '0':
+                            week.append(i)
+                    tmp={}
+                    tmp["start_time"] = start_time
+                    tmp["end_time"] = end_time
+                    tmp["week"] = week
+                    tmp["enable"] = enable
+                    class_in_buf["{}".format(x)] = tmp
+            else:
+                if len(msg_tmp_d) != 0:
+                    b = msg_tmp_d.find('-')
+                    if b != -1:
+                        
+                        data = msg_tmp_d.split('-')#-作为分隔符
+                        time = data[1].split('@')#@作为分隔符
+                        print("data",data,time,data[0],time[0])
+                        start_time = data[0]#开始时间
+                        end_time = time[0]#结束时间
+                        enable = 1
+                        week_day = time[1]
+                        for i in range(0,7):
+                            if week_day[i] != '0':
+                                week.append(i)
+                        tmp={}
+                        tmp["start_time"] = start_time
+                        tmp["end_time"] = end_time
+                        tmp["week"] = week
+                        tmp["enable"] = enable
+                        class_in_buf["{}".format(x)] = tmp
+
+        with open("/usr/static/storage_file/class_msg.json", 'w+',encoding='utf-8') as fd:
+            ujson.dump(class_in_buf,fd)
+
+
+        EventMesh.publish("set_class_time", class_in_buf)
+        EventMesh.publish(constants.PROTOCOL.SILENCETIMEFS_SEND)  
+        EventMesh.publish("get_class_in_time_page")
+
+
 #免打扰
 class SILENCETIME2_ProtoCol(ProtoCol):
     """免打扰"""
@@ -1323,9 +1455,70 @@ class SILENCETIME2_ProtoCol(ProtoCol):
         @param event:
         @param msg: 接收到的下行数据
         """
-        # b'[SZKW*867387060319166*000A*KEYBRD]'
-        # print("SILENCETIME2!!!!!!!!!!!!!",msg)
+        class_in_buf = {"1": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []},\
+        "0": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}, \
+        "3": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}, \
+        "2": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}}
+
+        # class_in_buf.append({'start_hour': "16:54", 'week': [], 'idx': 0, 'enabled': 0, 'end_hour': "18:39"}) 
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_tmp_d = str(msg_tmp.split('SILENCETIME2,')[1])
+        
+        count = 1
+        k = 0
+
+        for i in range(len(str(msg_tmp_d))):
+            if msg_tmp_d[i] == ',':
+                count+=1
+
+        for x in range(count):#08:00-17:00-1-0111110,08:00-17:00-1-0111110
+            week = []
+            if count > 1:
+                msg_data = msg_tmp_d.split(',')[k]
+                # print("SILENCETIME count",msg_data)
+                k+= 1
+                b = msg_data.find('-')
+                if b != -1:
+                    data = msg_data.split('-')#-作为分隔符
+                    start_time = data[0]
+                    end_time = data[1]
+                    enable = int(data[2])
+                    week_day = data[3]
+                    for i in range(0,7):
+                        if week_day[i] != '0':
+                            week.append(i)
+                    tmp={}
+                    tmp["start_time"] = start_time
+                    tmp["end_time"] = end_time
+                    tmp["week"] = week
+                    tmp["enable"] = enable
+                    class_in_buf["{}".format(x)] = tmp
+            else:
+                b = msg_tmp_d.find('-')
+                if b != -1:
+                    data = msg_tmp_d.split('-')#-作为分隔符
+                    start_time = data[0]
+                    end_time = data[1]
+                    enable = int(data[2])
+                    week_day = data[3]
+                    for i in range(0,7):
+                        if week_day[i] != '0':
+                            week.append(i)
+                    tmp={}
+                    tmp["start_time"] = start_time
+                    tmp["end_time"] = end_time
+                    tmp["week"] = week
+                    tmp["enable"] = enable
+                    class_in_buf["{}".format(x)] = tmp
+
+        with open("/usr/static/storage_file/class_msg.json", 'w+',encoding='utf-8') as fd:
+            ujson.dump(class_in_buf,fd)
+
+
+        EventMesh.publish("set_class_time", class_in_buf)
         EventMesh.publish(constants.PROTOCOL.SILENCETIME2_SEND)  
+        EventMesh.publish("get_class_in_time_page")
 
 #键盘开关
 class KEYBRD_ProtoCol(ProtoCol):
@@ -1361,7 +1554,7 @@ class ProtoColResolver(object):
     def handler(self, data):
         # 这里接收数据
         
-        # print("handler -> {}".format(data))
+        print("handler -> {}".format(data))
         # if data.startswith('Init;'):
         #     data = data[5:]
         #     EventMesh.publish(constants.EVENT.SET_KEY, {"value": ujson.loads(data)['KEY']})
index 84a1125..f9b9270 100644 (file)
@@ -4013,7 +4013,7 @@ class ContactsScreen(Screen):
 
                 #contact_btn_label_1 = lv.label(contact_btn)
                 self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_pos(5, 4)
-                self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_size(LCD_X-15, 20)
+                self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_size(LCD_X-15, 16)
                 self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_text(key_tmp[4:])
                 self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_long_mode(lv.label.LONG.DOT)
                 self.contact_detail_listt_dict[i]["contact_btn_label_1"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
@@ -4026,7 +4026,7 @@ class ContactsScreen(Screen):
 
                 #contact_btn_label_3 = lv.label(contact_btn)
                 self.contact_detail_listt_dict[i]["contact_btn_label_3"].set_pos(5, 24)
-                self.contact_detail_listt_dict[i]["contact_btn_label_3"].set_size(LCD_X-15, 21)
+                self.contact_detail_listt_dict[i]["contact_btn_label_3"].set_size(LCD_X-15, 16)
                 self.contact_detail_listt_dict[i]["contact_btn_label_3"].set_text(name)
                 self.contact_detail_listt_dict[i]["contact_btn_label_3"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
                 
@@ -6328,7 +6328,7 @@ class sosScreen(Screen):
 
 
             sos_screen_label = lv.label(sos_screen)
-            sos_screen_label.set_text("是否拨打求助电话?")
+            sos_screen_label.set_text("是否拨打求助电话")
             sos_screen_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
             sos_screen_label.set_size(128, 20)
             sos_screen_label.set_pos(0,2)
@@ -6939,6 +6939,12 @@ class classMgrPopupScreen(Screen):#上课禁用时间界面
             class_mgr_popup_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
             self.meta = class_mgr_popup_screen
 
+        sos_flag = EventMesh.publish("get_sos_flag")
+        if sos_flag == 1:
+            EventMesh.publish("set_sos_flag",0)
+            EventMesh.publish("set_sos_num",0)
+            EventMesh.publish("set_hangup_mode",0)
+
         data = RTC().datetime()
         hour = data[4]
         min = data[5]
@@ -6960,6 +6966,12 @@ class classMgrPopupScreen(Screen):#上课禁用时间界面
 
 
     def btn1_release(self):
+        state = EventMesh.publish("get_cur_class_time_state")
+        print("state:{}".format(state))
+        if state != None:
+            if state == 0:
+                EventMesh.publish("load_screen", {"screen": "main_menu"})
+                return
         flag = EventMesh.publish("get_lcd_state")
         if flag == 1:
             EventMesh.publish(constants.EVENT.SYSTEM_SLEEP)
@@ -6967,6 +6979,12 @@ class classMgrPopupScreen(Screen):#上课禁用时间界面
             EventMesh.publish(constants.EVENT.SYSTEM_UP)
 
     def btn8_press(self):
+        state = EventMesh.publish("get_cur_class_time_state")
+        print("state:{}".format(state))
+        if state != None:
+            if state == 0:
+                EventMesh.publish("load_screen", {"screen": "main_menu"})
+                return
         flag = EventMesh.publish("get_lcd_state")
         if flag == 1:
             EventMesh.publish(constants.EVENT.SYSTEM_SLEEP)
@@ -8852,10 +8870,10 @@ class restore_confirmScreen(Screen):
         self.timer1.start(1000,1,self.timer_cb_onescond)
         
         ret = 0
-        ret = ql_fs.path_exists("/ext/static/storage_file")#电话本
+        ret = ql_fs.path_exists("/usr/static/storage_file")#电话本
         if ret == True:
-            ql_fs.rmdirs("/ext/static/storage_file")
-            ql_fs.mkdirs("/ext/static/storage_file")
+            ql_fs.rmdirs("/usr/static/storage_file")
+            ql_fs.mkdirs("/usr/static/storage_file")
         
         if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#已连接服务器发指令恢复出厂
             EventMesh.publish(constants.PROTOCOL.DLT_SEND)
@@ -9193,21 +9211,38 @@ class UI(object):
     def load_screen_cb(self, topic, msg):
         EventMesh.publish("publish_message_event_ui",{"func":self.load_screen,"data":msg})  
 
+
+    #     "dialing_noplay_popup"
+    # "dial_no_connect_popup"
+    # "on_call"
+    # "dialing"
+    # "incoming_call"
+
     def load_screen(self, msg):
         print("msg1={} self.UI_high_priority_flag:{}".format(msg,self.UI_high_priority_flag))
+        if self.UI_high_priority_flag == 1:#电话界面屏蔽其他界面
+            return
         state = EventMesh.publish("get_cur_class_time_state")
+        print("state:{}".format(state))
         if state != None:
             if state == 1:
                 screen_NAME = EventMesh.publish("get_screen_NAME")
                 if screen_NAME != None:
-                    if screen_NAME == "class_time" :#在上课禁用界面打断其他操作界面
-                        print("class_time UI")
-                        if msg["screen"] == "countdown_end":
-                            print("countdown_end UI")
-                            EventMesh.publish("close_count_show_info")
-                        return
-        if self.UI_high_priority_flag == 1:#电话界面屏蔽其他界面
-            return
+                        if msg["screen"] == "charge_out" or  msg["screen"] == "charge_in":
+                                pass
+                        else:
+                            if screen_NAME == "class_time" :#在上课禁用界面打断其他操作界面
+                                print("class_time UI")
+                                if msg["screen"] == "countdown_end":
+                                    # print("countdown_end UI")
+                                    EventMesh.publish("close_count_show_info")
+                                return
+                            else:
+                                if screen_NAME != "dialing_noplay_popup" or  screen_NAME != "dial_no_connect_popup" or \
+                                screen_NAME != "on_call" or screen_NAME != "dialing" or screen_NAME != "incoming_call" or \
+                                screen_NAME != "charge_in" or screen_NAME != "charge_out":
+                                    EventMesh.publish("load_screen", {"screen": "class_time"}) 
+                            
         if self.screen :
             if self.screen.NAME == msg["screen"]:
                 return