1.增加闹钟协议匹配闹钟界面
authord15521469561 <d155214695615@qq.com>
Mon, 10 Apr 2023 03:37:12 +0000 (11:37 +0800)
committerd15521469561 <d155214695615@qq.com>
Mon, 10 Apr 2023 03:37:12 +0000 (11:37 +0800)
2.开机界面优化

3.code/1.watch/2.code/alarm.py
3.code/1.watch/2.code/constants.py
3.code/1.watch/2.code/initTP.py
3.code/1.watch/2.code/lcd.py
3.code/1.watch/2.code/main.py [new file with mode: 0644]
3.code/1.watch/2.code/main_1.py
3.code/1.watch/2.code/protocol.py
3.code/1.watch/2.code/test_sms.py
3.code/1.watch/2.code/ui.py

index 045bbf6..e413a97 100644 (file)
@@ -9,6 +9,7 @@ from ext.common import Abstract, LogAdapter
 from machine import RTC
 import ujson
 import ql_fs
+from ext.ui import style_img,style_screen,style_font_youyuan_20
 """
 可以添加/编辑闹钟时间、周期;
 最多添加三个闹钟;
@@ -27,22 +28,22 @@ MAX_ALARM = 3
 style_cont_alarm = lv.style_t()
 style_cont_alarm.init()
 style_cont_alarm.set_bg_color(lv.color_make(0x22, 0x28, 0x3D))
-style_cont_alarm.set_radius(5)
+style_cont_alarm.set_radius(0)
 style_cont_alarm.set_pad_left(0)
 style_cont_alarm.set_pad_right(0)
 style_cont_alarm.set_pad_top(0)
 style_cont_alarm.set_pad_bottom(0)
 
 #字体样式
-style_font_white = lv.style_t()
-style_font_white.init()
-style_font_white.set_text_color(lv.color_make(0xff, 0xff, 0xff))
-style_font_white.set_text_font_v2("font_20.bin",18,0)
-style_font_white.set_border_width(0)
-style_font_white.set_pad_left(0)
-style_font_white.set_pad_right(0)
-style_font_white.set_pad_top(0)
-style_font_white.set_pad_bottom(0)
+# style_font_white = lv.style_t()
+# style_font_white.init()
+# style_font_white.set_text_color(lv.color_make(0xff, 0xff, 0xff))
+# style_font_white.set_text_font_v2("font_20.bin",18,0)
+# style_font_white.set_border_width(0)
+# style_font_white.set_pad_left(0)
+# style_font_white.set_pad_right(0)
+# style_font_white.set_pad_top(0)
+# style_font_white.set_pad_bottom(0)
 
 style_font_yellow = lv.style_t()
 style_font_yellow.init()
@@ -64,35 +65,56 @@ clk_list_screen = lv.obj()
 clk_list_screen1 = lv.obj(clk_list_screen)
 clk_list_screen1.center()
 clk_list_screen1.set_size(240, 320)
-clk_list_screen1.add_style(style_alarm_screen_default, lv.PART.MAIN | lv.STATE.DEFAULT)
+clk_list_screen1.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
 
-clk_list_title = lv.label(clk_list_screen1)
+clk_list_title_bg= lv.btn(clk_list_screen1)
+clk_list_title_bg.set_size(220,40)
+clk_list_title_bg.set_pos(10,10)
+clk_list_title_bg.add_style(style_cont_alarm, lv.PART.MAIN | lv.STATE.DEFAULT)
+clk_list_title_bg.set_ext_click_area(40)
+
+clk_list_title = lv.label(clk_list_title_bg)
 clk_list_title.set_pos(0, 15)
 clk_list_title.set_size(240, 40)
 clk_list_title.set_text("闹钟列表")
 clk_list_title.set_long_mode(lv.label.LONG.WRAP)
 clk_list_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-clk_list_title.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-clk_list_add_btn = lv.btn(clk_list_screen1)
-clk_list_add_btn.set_pos(180,45)
-clk_list_add_btn.set_size(50,20)
-clk_list_add_btn.add_style(style_alarm_screen_default, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-clk_list_add = lv.label(clk_list_screen1)
-clk_list_add.set_pos(180, 45)
-clk_list_add.set_size(50, 20)
-clk_list_add.set_text("添加")
-clk_list_add.set_long_mode(lv.label.LONG.WRAP)
-clk_list_add.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-clk_list_add.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
-clk_list_add.set_ext_click_area(15)
+clk_list_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+# clk_list_add_btn = lv.btn(clk_list_screen1)
+# clk_list_add_btn.set_pos(180,45)
+# clk_list_add_btn.set_size(50,20)
+# clk_list_add_btn.add_style(style_alarm_screen_default, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# clk_list_add = lv.label(clk_list_screen1)
+# clk_list_add.set_pos(180, 45)
+# clk_list_add.set_size(50, 20)
+# clk_list_add.set_text("添加")
+# clk_list_add.set_long_mode(lv.label.LONG.WRAP)
+# clk_list_add.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+# clk_list_add.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+# clk_list_add.set_ext_click_area(15)
 
 clk_list_screen1_1 = lv.obj(clk_list_screen)
 clk_list_screen1_1.set_pos(0, 65)
 clk_list_screen1_1.set_size(240, 255)
 clk_list_screen1_1.add_style(style_alarm_screen_default, lv.PART.MAIN | lv.STATE.DEFAULT)
 
+
+
+no_add_alarm_img = lv.img(clk_list_screen1_1)
+no_add_alarm_img.set_pos(63, 0)
+no_add_alarm_img.set_size(113, 152)
+no_add_alarm_img.set_src("E:/static/IMAGE_IDLE_SCREEN_ALARM_ICON_NEW.jpg")
+no_add_alarm_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+#暂未添加闹钟
+no_add_alarm = lv.label(clk_list_screen1_1)
+no_add_alarm.set_pos(0, 170)
+no_add_alarm.set_size(240, 50)
+no_add_alarm.set_text("闹钟暂未设置")
+no_add_alarm.set_long_mode(lv.label.LONG.WRAP)
+no_add_alarm.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+no_add_alarm.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 # -------------------------------------------clk_edit screen----------------------------------------------------------
 
 clk_edit_screen = lv.obj()
@@ -106,7 +128,7 @@ clk_edit_title.set_size(240, TITLE_HEIGHT)
 clk_edit_title.set_text("编辑闹钟")
 clk_edit_title.set_long_mode(lv.label.LONG.WRAP)
 clk_edit_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-clk_edit_title.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
+clk_edit_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 clk_edit_time = lv.btn(clk_edit_screen)
 clk_edit_time.set_size(224,75)
@@ -118,7 +140,7 @@ clk_edit_time_label.set_size(100, 40)
 clk_edit_time_label.set_text("编辑时间")
 clk_edit_time_label.set_long_mode(lv.label.LONG.WRAP)
 clk_edit_time_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-clk_edit_time_label.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
+clk_edit_time_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 clk_edit_weekday = lv.btn(clk_edit_screen)
 clk_edit_weekday.set_size(224,75)
@@ -130,7 +152,7 @@ clk_edit_weekday_label.set_size(100, 40)
 clk_edit_weekday_label.set_text("编辑星期")
 clk_edit_weekday_label.set_long_mode(lv.label.LONG.WRAP)
 clk_edit_weekday_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-clk_edit_weekday_label.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
+clk_edit_weekday_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 clk_delete_alarm = lv.btn(clk_edit_screen)
 clk_delete_alarm.set_size(224,75)
@@ -142,7 +164,7 @@ clk_delete_alarm_label.set_size(100, 40)
 clk_delete_alarm_label.set_text("删除闹钟")
 clk_delete_alarm_label.set_long_mode(lv.label.LONG.WRAP)
 clk_delete_alarm_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-clk_delete_alarm_label.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
+clk_delete_alarm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 # -------------------------------------------clk_repeat screen----------------------------------------------------------
 clk_repeat_screen = lv.obj()
@@ -161,7 +183,7 @@ clk_repeat_label.set_pos(8, 10)
 clk_repeat_label.set_size(103, 40)
 clk_repeat_label.set_text("星期一")
 clk_repeat_label.set_long_mode(lv.label.LONG.DOT)
-clk_repeat_label.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
+clk_repeat_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 clk_repeat_label.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
 
 clk_repeat_switch = lv.switch(clk_repeat_btn)
@@ -184,7 +206,7 @@ clk_repeat_label1.set_pos(8, 10)
 clk_repeat_label1.set_size(103, 40)
 clk_repeat_label1.set_text("星期二")
 clk_repeat_label1.set_long_mode(lv.label.LONG.DOT)
-clk_repeat_label1.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
+clk_repeat_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 clk_repeat_label1.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
 
 clk_repeat_switch1 = lv.switch(clk_repeat_btn1)
@@ -208,7 +230,7 @@ clk_repeat_label2.set_pos(8, 10)
 clk_repeat_label2.set_size(103, 40)
 clk_repeat_label2.set_text("星期三")
 clk_repeat_label2.set_long_mode(lv.label.LONG.DOT)
-clk_repeat_label2.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
+clk_repeat_label2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 clk_repeat_label2.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
 
 
@@ -232,7 +254,7 @@ clk_repeat_label3.set_pos(8, 10)
 clk_repeat_label3.set_size(103, 40)
 clk_repeat_label3.set_text("星期四")
 clk_repeat_label3.set_long_mode(lv.label.LONG.DOT)
-clk_repeat_label3.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
+clk_repeat_label3.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 clk_repeat_label3.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
 
 clk_repeat_switch3 = lv.switch(clk_repeat_btn3)
@@ -255,7 +277,7 @@ clk_repeat_label4.set_pos(8, 10)
 clk_repeat_label4.set_size(103, 40)
 clk_repeat_label4.set_text("星期五")
 clk_repeat_label4.set_long_mode(lv.label.LONG.DOT)
-clk_repeat_label4.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
+clk_repeat_label4.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 clk_repeat_label4.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
 
 clk_repeat_switch4 = lv.switch(clk_repeat_btn4)
@@ -278,7 +300,7 @@ clk_repeat_label5.set_pos(8, 10)
 clk_repeat_label5.set_size(103, 40)
 clk_repeat_label5.set_text("星期六")
 clk_repeat_label5.set_long_mode(lv.label.LONG.DOT)
-clk_repeat_label5.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
+clk_repeat_label5.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 clk_repeat_label5.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
 
 clk_repeat_switch5 = lv.switch(clk_repeat_btn5)
@@ -301,7 +323,7 @@ clk_repeat_label6.set_pos(8, 10)
 clk_repeat_label6.set_size(103, 40)
 clk_repeat_label6.set_text("星期日")
 clk_repeat_label6.set_long_mode(lv.label.LONG.DOT)
-clk_repeat_label6.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
+clk_repeat_label6.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 clk_repeat_label6.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
 
 clk_repeat_switch6 = lv.switch(clk_repeat_btn6)
@@ -370,7 +392,7 @@ label_ok.set_pos(30, 20)
 label_ok.set_size(100, 40)
 label_ok.set_text("完成")
 label_ok.set_long_mode(lv.label.LONG.DOT)
-label_ok.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
+label_ok.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 label_ok.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
 
 #闹钟信息
@@ -557,80 +579,114 @@ class ClkListScreen(Screen):
         super().__init__()
         self.meta = clk_list_screen
         self.clock_list = []
-        clk_list_add_btn.add_event_cb(lambda e: self.add_alarm_btn(e),
-                                     lv.EVENT.PRESSED, None)
+        # clk_list_add_btn.add_event_cb(lambda e: self.add_alarm_btn(e),
+        #                              lv.EVENT.PRESSED, None)
         self.weekdays_list = ["日","一","二","三","四","五","六"]
+        EventMesh.subscribe("push_update_alarm_show", self.update_show_info)
+        self.alarm_show_list = lv.obj()
+        self.timer=osTimer()
+
+
     def initialization(self): 
         EventMesh.publish("read_alarminjson")
         EventMesh.publish("set_rtc_alarm")
-
         print("n闹钟列表初始化!!")
         self.alarm_draw_btn()
         
-    def alarm_draw_btn(self):
+    def update_show_info(self,event,msg):
+        EventMesh.publish("read_alarminjson")
+        self.timer.start(1*1000,0,self.alarm_draw_btn)
+
+    def alarm_draw_btn(self,*agrs):
         global alarm_list 
         self.clock_list = alarm_list  
-        if self.clock_list:
-            print("菜单的孩子个数:",clk_list_screen1.get_child_cnt())
-            for i ,each in enumerate(self.clock_list):
-                print("------刷新闹钟列表噢:",each)
-                _btn = lv.btn(clk_list_screen1_1)
-                _btn.set_size(224,75)
-                _btn.set_pos(8,79*i)
-                _btn.add_style(style_cont_alarm, lv.PART.MAIN | lv.STATE.DEFAULT)
-                _btn.add_event_cb(lambda e: self.edit_alarm(e),
-                                        lv.EVENT.PRESSED, None)
-
-                _btn_label1 = lv.label(_btn)
-                _btn_label1.set_pos(50, 0)
-                _btn_label1.set_long_mode(lv.label.LONG.DOT)
-                _btn_label1.set_size(0, 0)
-                _btn_label1.set_text(str(i))
-
-                _btn_label2 = lv.label(_btn)
-                _btn_label2.set_pos(8, 10)
-                _btn_label2.set_size(97, 40)
-                _btn_label2.set_text("%02d" % each["hour"] + ":"+"%02d" % each["minute"])
-                # _btn_label2.set_text(str(each["days"]))
-
-                _btn_label2.set_long_mode(lv.label.LONG.DOT)
-                _btn_label2.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
-                _btn_label2.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-
-                _new_list = sorted(each["days"])
-                _output = [self.weekdays_list[x] for x in _new_list]
-                _btn_label3 = lv.label(_btn)
-                _btn_label3.set_pos(10, 40)
-                _btn_label3.set_size(200, 40)
-                _btn_label3.set_text(",".join(_output))
-                _btn_label3.set_long_mode(lv.label.LONG.DOT)
-                _btn_label3.add_style(style_font_white, lv.PART.MAIN | lv.STATE.DEFAULT)
-                _btn_label3.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
-
-                _btn_switch = lv.switch(_btn)
-                _btn_switch.set_pos(174, 29)
-                _btn_switch.set_size(34, 17)
-                _btn_switch.set_style_bg_color(lv.color_make(0xff, 0xff, 0xff),lv.PART.INDICATOR)
-                _btn_switch.set_style_bg_color(lv.color_make(0xff, 0xff, 0xff),lv.PART.INDICATOR| lv.STATE.CHECKED)
-                _btn_switch.add_event_cb(lambda e:
-                                        self.switch_event_cb(e),
-                                        lv.EVENT.VALUE_CHANGED,
-                                        None)
-
-                _btn_switch.set_style_bg_color(lv.color_make(0xf1, 0xa3, 0x3b),lv.PART.KNOB| lv.STATE.CHECKED)
-                _btn_switch.set_style_bg_color(lv.color_make(0x3d, 0x3d, 0x3d),lv.PART.KNOB)
-
-                _btn_switch.set_ext_click_area(20)
-                if each["enabled"]:
-                    _btn_switch.add_state(lv.STATE.CHECKED)
-                else:
-                    _btn_switch.clear_state(lv.STATE.CHECKED)
-
-    def edit_alarm(self, e):
+        IFEXIST = ql_fs.path_exists("/ext/static/storage_file/alarm_msg.json")    
+        if IFEXIST == True:
+            if self.clock_list:
+                # 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)
+                self.alarm_show_list.delete()#先删除一次控件
+                self.alarm_show_list = lv.obj(clk_list_screen)
+                self.alarm_show_list.set_pos(0, 65)
+                self.alarm_show_list.set_size(240, 255)
+                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())
+                num = 0
+                for i ,each in enumerate(self.clock_list):
+                    
+                    _btn = lv.btn(self.alarm_show_list)
+                    _btn.set_size(230,75)
+                    _btn.set_pos(8,79*i)
+                    _btn.add_style(style_cont_alarm, lv.PART.MAIN | lv.STATE.DEFAULT)
+                    _btn.add_event_cb(lambda e: self.edit_alarm(e),
+                                            lv.EVENT.CLICKED, None)
+
+                    num = each["idx"]
+                    # print("------刷新闹钟列表噢:{} num:{}",each,num)
+                    _btn_label1 = lv.label(_btn)
+                    _btn_label1.set_pos(50, 0)
+                    _btn_label1.set_size(0, 0)
+                    _btn_label1.set_text(str(num))
+
+                    _btn_label2 = lv.label(_btn)
+                    _btn_label2.set_pos(8, 10)
+                    _btn_label2.set_size(97, 40)
+                    _btn_label2.set_text("%02d" % each["hour"] + ":"+"%02d" % each["minute"])
+                    # _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)
+                    _btn_label2.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
+
+                    _new_list = sorted(each["days"])
+                    _output = [self.weekdays_list[x] for x in _new_list]
+                    _btn_label3 = lv.label(_btn)
+                    _btn_label3.set_pos(10, 40)
+                    _btn_label3.set_size(200, 40)
+                    if len(_new_list) >= 7:
+                        _btn_label3.set_text("每天")
+                    else:
+                        _btn_label3.set_text(",".join(_output))
+                    _btn_label3.set_long_mode(lv.label.LONG.DOT)
+                    _btn_label3.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+                    _btn_label3.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
+
+                    _btn_switch = lv.switch(_btn)
+                    _btn_switch.set_pos(174, 29)
+                    _btn_switch.set_size(50, 25)
+                    _btn_switch.set_style_bg_color(lv.color_make(0xff, 0xff, 0xff),lv.PART.INDICATOR)
+                    _btn_switch.set_style_bg_color(lv.color_make(0xff, 0xff, 0xff),lv.PART.INDICATOR| lv.STATE.CHECKED)
+                    _btn_switch.add_event_cb(lambda e:
+                                            self.switch_event_cb(e),
+                                            lv.EVENT.VALUE_CHANGED,
+                                            None)
+
+                    _btn_switch.set_style_bg_color(lv.color_make(0xf1, 0xa3, 0x3b),lv.PART.KNOB| lv.STATE.CHECKED)
+                    _btn_switch.set_style_bg_color(lv.color_make(0x3d, 0x3d, 0x3d),lv.PART.KNOB)
+
+                    _btn_switch.set_ext_click_area(40)
+                    if each["enabled"]:
+                        _btn_switch.add_state(lv.STATE.CHECKED)
+                    else:
+                        _btn_switch.clear_state(lv.STATE.CHECKED)
+            else:
+                no_add_alarm_img.clear_flag(lv.obj.FLAG.HIDDEN)
+                no_add_alarm.clear_flag(lv.obj.FLAG.HIDDEN) 
+                self.alarm_show_list.add_flag(lv.obj.FLAG.HIDDEN)
+        else:
+            no_add_alarm_img.clear_flag(lv.obj.FLAG.HIDDEN)
+            no_add_alarm.clear_flag(lv.obj.FLAG.HIDDEN) 
+            self.alarm_show_list.add_flag(lv.obj.FLAG.HIDDEN)
+            
+    def edit_alarm(self, e):#暂时屏蔽
+        return
         idx = int(e.get_target().get_child(0).get_text())
         print("edit!!!!!!!!!!!!:",idx)
         clock_info = self.clock_list[idx]
         clock_info["idx"] = idx
+
         EventMesh.publish("load_screen", {"screen": "new_edit_clk","meta": clock_info})
 
     def add_alarm_btn(self, e):
@@ -674,20 +730,17 @@ class NewEditClk(Screen):
     def __init__(self):
         super().__init__()
         self.meta = clk_edit_screen
-        clk_edit_weekday.add_event_cb(lambda e: self.edit_weekday(e), lv.EVENT.PRESSED, None)
-        clk_edit_time.add_event_cb(lambda e: self.edit_time(e), lv.EVENT.PRESSED, None)
-        clk_delete_alarm.add_event_cb(lambda e: self.delete_alarm(e), lv.EVENT.PRESSED, None)
+        clk_edit_weekday.add_event_cb(lambda e: self.edit_weekday(e), lv.EVENT.CLICKED, None)
+        clk_edit_time.add_event_cb(lambda e: self.edit_time(e), lv.EVENT.CLICKED, None)
+        clk_delete_alarm.add_event_cb(lambda e: self.delete_alarm(e), lv.EVENT.CLICKED, None)
 
     def initialization(self):  
         print("hahahahh",self.meta_info["idx"])
 
     def delete_alarm(self, e):
-           
-        clk_list_screen1_1.clean()
-
         EventMesh.publish("remove_alarm",self.meta_info)
 
-        self.load_screen(e, {"screen": "clk_list"})
+        EventMesh.publish("load_screen", {"screen": "clk_list"})
 
 
     def edit_weekday(self,e):
@@ -713,7 +766,7 @@ class CLKTimeScreen(Screen):
     def __init__(self):
         super().__init__()
         self.meta = clk_time_screen
-        alarm_ok.add_event_cb(lambda e: self.handler(e), lv.EVENT.PRESSED, None)
+        # alarm_ok.add_event_cb(lambda e: self.handler(e), lv.EVENT.PRESSED, None)
 
     def initialization(self):
         roll_1_v = self.meta_info["hour"]
index 88424c8..76082ce 100644 (file)
@@ -32,6 +32,9 @@ class PROTOCOL:
     WT_SEND = "WT_SEND"
     WT_RECV = "WT_RECV"
 
+    REMIND_SEND = "REMIND_SEND"
+    REMIND_RECV = "REMIND_RECV"
+
 
 class EVENT:
     CHANNEL_SOCKET_SEND = "CHANNEL_SOCKET_SEND"
index da53030..a2c8052 100644 (file)
@@ -59,7 +59,7 @@ def cst816d_update(startAddr, length, data):
     global x
     while 1:
         x += 1
-        #print("烧录次数:",str(x))
+        print("烧录次数:",str(x))
         if sum_len >= length:
             print("sum_len >= length,退出循环")
             return
@@ -72,24 +72,24 @@ def cst816d_update(startAddr, length, data):
         i2c_obj = I2C(I2C.I2C2, I2C.STANDARD_MODE)
 
         ret = i2c_obj.write(TP_HYN_I2C_UPDATE_WRITE_ADDR>>1, bytearray([0xa0,0x14]), 2, bytearray(cmd), 2)
-        utime.sleep(1)
+        utime.sleep_ms(100)
         #print("烧写固件第一次写命令 ret:{} cmd[0]:{:#X} cmd[1]:{:#X}".format(ret,cmd[0],cmd[1]))
 
         ret = i2c_obj.write(TP_HYN_I2C_UPDATE_WRITE_ADDR>>1, bytearray([0xa0,0x18]), 2, bytearray(data), PER_LEN)
-        utime.sleep(1)
+        utime.sleep_ms(100)
         #print("烧写固件包 ret : ",ret)
         #print("data[0]:{:#X} data[1]:{:#X} data[2]:{:#X} data[510]:{:#X} data[511]:{:#X}".format(data[0],data[1],data[2],data[510],data[511]))
 
         cmd[0] = 0xEE
         ret = i2c_obj.write(TP_HYN_I2C_UPDATE_WRITE_ADDR>>1, bytearray([0xa0,0x04]), 2, bytearray(cmd), 1)
         #print("烧写固件第二次写命令 ret:{} cmd[0]:{:#X} ".format(ret,cmd[0]))
-        utime.sleep(1)
+        utime.sleep_ms(100)
 
         retrycnt = 51
         for i in range (retrycnt):
             r_data = bytearray(1)
             ret = i2c_obj.read(TP_HYN_I2C_UPDATE_READ_ADDR>>1, bytearray([0xa0,0x05]), 2, r_data, 1, 0)
-            utime.sleep(1)
+            utime.sleep_ms(100)
             #print("烧写固件读数据 ret:{} r_data[0]:{:#X} ".format(ret,r_data[0]))
             if r_data[0] == 0x55:
                 print("r_data[0] = 0x55,break")
index 4acbcde..20f8c82 100644 (file)
@@ -141,7 +141,7 @@ displayon = bytearray(init_data4)
 lcd_ctrl = Pin(Pin.GPIO18, Pin.OUT, Pin.PULL_DISABLE, 1)
 lcd.lcd_init(init_buf, 240, 320, 52000, 1, 4, 0, invalid, displayon, displayoff, None,TESel = True,TEPin = 5)
 gpio_backlight = Pin(Pin.GPIO37, Pin.OUT, Pin.PULL_DISABLE, 0)
-gpio_backlight.write(1)
+gpio_backlight.write(0)
 
 LCD_SIZE_W = 240
 LCD_SIZE_H = 320
@@ -196,3 +196,34 @@ gpio4 = Pin(Pin.GPIO33, Pin.OUT, Pin.PULL_PU, 0)
 # 启动lvgv线程
 lv.tick_inc(5)
 lv.task_handler()
+style_screen = lv.style_t()
+style_screen.init()
+style_screen.set_radius(0)
+style_screen.set_bg_color(lv.color_make(0x00, 0x00, 0x00))
+style_screen.set_bg_opa(255)
+style_screen.set_border_width(0)
+style_screen.set_pad_left(0)
+style_screen.set_pad_right(0)
+style_screen.set_pad_top(0)
+style_screen.set_pad_bottom(0)
+#开机画面
+style_font_youyuan_40 = lv.style_t()
+style_font_youyuan_40.init()
+style_font_youyuan_40.set_text_color(lv.color_make(0xff, 0xff, 0xff))
+style_font_youyuan_40.set_text_font_v2("font_40.bin",40,0)
+
+power_on_screen = lv.obj()
+power_on = lv.obj(power_on_screen)
+power_on.center()
+power_on.set_size(240, 320)
+power_on.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+power_on_label = lv.label(power_on)
+power_on_label.set_text("WELCOME")
+power_on_label.align(lv.ALIGN.CENTER, 0, 0)
+power_on_label.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
+print("power_on_screen init...")
+lv.scr_load(power_on_screen)
+#utime.sleep_ms(2000)
+print("power_on_screen end...")
+gpio_backlight.write(1)
diff --git a/3.code/1.watch/2.code/main.py b/3.code/1.watch/2.code/main.py
new file mode 100644 (file)
index 0000000..2027e44
--- /dev/null
@@ -0,0 +1,169 @@
+
+
+
+class App(object):
+    def __init__(self):
+        self.managers = []
+
+    def append_manager(self, manager):
+        if isinstance(manager, Abstract):
+            manager.post_processor_after_instantiation()
+            self.managers.append(manager)
+        return self
+
+    def start(self):
+        for manager in self.managers:
+            manager.post_processor_before_initialization()
+            manager.initialization()
+            manager.post_processor_after_initialization()
+
+
+class watchApp(App):
+    def __init__(self):
+        super(watchApp, self).__init__()
+        self.__ui = None
+
+    def set_ui(self, ui):
+        self.__ui = ui
+
+    def start(self):
+        if self.__ui is not None:
+            self.__ui.start()
+        super().start()
+
+
+
+if __name__ == '__main__':
+    import uos
+    import ql_fs
+    if ql_fs.path_exists("/ext") == False:
+        ldev = uos.VfsLfs1(32, 32, 32, "ext_fs",0,3)
+        uos.mount(ldev,'/ext')
+    res = uos.statvfs("/ext")
+    res = list(res)
+    print('总ext空间:{} MB,剩余空间:{} MB'.format((((res[0] * res[2]) / 1024 / 1024)),((res[0] * res[3]) / 1024 / 1024)))
+
+    from ext import EventMesh
+    from ext.common import Abstract
+    from ext.lcd import gpio_backlight,tp_cst816
+    from ext.btn_device_ec800m import BtnDevice
+    from ext.protocol import LK_ProtoCol,PING_ProtoCol,WT_ProtoCol,UD_ProtoCol,REMIND_ProtoCol, CR_ProtoCol,KA_ProtoCol,FIND_ProtoCol,POWEROFF_ProtoCol,ProtoColResolver,PHL_ProtoCol
+    import ext.mgr as mgr
+    import ext.ui as _ui
+    from ext.mgr import ConfigStoreManager, LocationManager, SockManager, \
+    NetManager,AddrBookManager,MsgdetailManager,PhoneCallingManager,getOldHrDataManager
+    from ext.appAlipay import Alipay ,AlipayOpenScreen,Alipay_1_1,Alipay_invite,Alipay_inviting,\
+    Alipay_success,Alipay_paycode,Alipay_pay_success,Alipay_collect,Alipay_parent
+    from ext.ui_WatchFaceScreen import WatchFaceScreen
+    from ext.alarm import ClkListScreen,ClockManager,NewEditClk,CLKTimeScreen,ClkPeriod
+    from ext.ui_main_menu import MainMenuScreen
+    from ext.appWechat import WechatScreen,TK_ProtoCol,MESSAGE_ProtoCol
+    import ext.ui_setting as _ui_setting
+    # from usr.test_sms import REMIND_ProtoCol
+
+   #from usr.ui_wechat import WechatScreen,TK_ProtoCol
+    btn_device = BtnDevice(tp_cst816)
+    btn_device.start()
+
+    ui = _ui.UI(gpio_backlight)
+    ui.add_screen(WatchFaceScreen()) 
+    ui.add_screen(_ui.PopupScreen()) 
+    ui.add_screen(_ui.PhoneScreen()) 
+    ui.add_screen(MainMenuScreen()) 
+    ui.add_screen(_ui.HeartrateScreen()) 
+    ui.add_screen(_ui_setting.SettingScreen()) 
+    ui.add_screen(_ui.ToolboxScreen()) 
+    ui.add_screen(_ui.StepScreen()) 
+    ui.add_screen(_ui.AlarmScreen()) 
+    ui.add_screen(_ui.CountdownScreen()) 
+    ui.add_screen(_ui.StopwatchScreen()) 
+    ui.add_screen(_ui.WeatherScreen()) 
+    ui.add_screen(_ui.Spo2Screen()) 
+    ui.add_screen(_ui.TemperatureScreen()) 
+    ui.add_screen(_ui.ContactsScreen()) 
+    ui.add_screen(WechatScreen()) 
+    ui.add_screen(ClkListScreen()) 
+
+    ui.add_screen(NewEditClk()) 
+    ui.add_screen(CLKTimeScreen()) 
+    ui.add_screen(ClkPeriod()) 
+  
+    # ui.add_screen(_ui_setting.LanguageScreen()) 
+    ui.add_screen(_ui_setting.DialswitchScreen()) 
+    # ui.add_screen(_ui.ThemeswitchScreen()) 
+    ui.add_screen(_ui_setting.ImeiScreen()) 
+    ui.add_screen(_ui_setting.AppScreen()) 
+    ui.add_screen(_ui_setting.BrightnessScreen()) 
+    ui.add_screen(_ui_setting.VolumeScreen()) 
+    ui.add_screen(_ui_setting.RestoreScreen()) 
+    ui.add_screen(_ui_setting.PoweroffScreen()) 
+    ui.add_screen(_ui_setting.VersionScreen()) 
+    ui.add_screen(_ui_setting.UpdateScreen()) 
+    ui.add_screen(_ui_setting.AlarmvolumeScreen()) 
+    ui.add_screen(_ui_setting.MsgvolumeScreen()) 
+    ui.add_screen(_ui_setting.PhoneringScreen()) 
+    ui.add_screen(_ui.DialingScreen()) 
+    ui.add_screen(_ui.CallLogScreen()) 
+    ui.add_screen(AlipayOpenScreen()) 
+    ui.add_screen(Alipay_1_1())
+    ui.add_screen(Alipay_invite())  
+    ui.add_screen(Alipay_inviting()) 
+    ui.add_screen(Alipay_success()) 
+    ui.add_screen(Alipay_paycode()) 
+    ui.add_screen(Alipay_pay_success()) 
+    ui.add_screen(Alipay_collect()) 
+    ui.add_screen(Alipay_parent()) 
+    ui.add_screen(_ui.UIFINDScreen())
+    ui.add_screen(_ui.MsgDetailScreen())
+    ui.add_screen(_ui.IncomingCallScreen())
+    ui.add_screen(_ui.OnCallScreen())
+    # ui.add_screen(_ui.PowerOnScreen())
+    # ui.add_screen(_ui.Setting2Screen())
+    # ui.add_screen(_ui.Setting3Screen())  
+
+
+    app = watchApp()
+    app.set_ui(ui)
+    app.append_manager(mgr.BrightNessLevelManager()) \
+        .append_manager(mgr.AlarmVolumeLevelManager()) \
+        .append_manager(mgr.MsgVolumeLevelManager()) \
+        .append_manager(mgr.PhoneVolumeLevelManager()) \
+        .append_manager(mgr.DeviceInfoManager()) \
+        .append_manager(mgr.BatteryManager()) \
+           
+        # .append_manager(mgr.StopwatchManager()) \
+        # .append_manager(mgr.CountdownManager()) \
+
+    app.append_manager(Alipay()) 
+    app.append_manager(ConfigStoreManager())
+    app.append_manager(NetManager())
+    app.append_manager(LocationManager())
+    app.append_manager(AddrBookManager())
+    app.append_manager(mgr.MsgManager())
+    app.append_manager(MsgdetailManager())
+    app.append_manager(mgr.CallLogManager())
+    app.append_manager(mgr.getWeatherDataManager())
+    app.append_manager(PhoneCallingManager())
+    app.append_manager(ClockManager())
+    app.append_manager(getOldHrDataManager())
+        
+    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())
+    sm = SockManager()
+    sm.add_support_resolver(pcr)
+    app.append_manager(sm)
+    app.start()
+
+    EventMesh.publish("load_screen", {"screen": "watchface"})
+
index 10a8b52..2027e44 100644 (file)
@@ -47,7 +47,7 @@ if __name__ == '__main__':
     from ext.common import Abstract
     from ext.lcd import gpio_backlight,tp_cst816
     from ext.btn_device_ec800m import BtnDevice
-    from ext.protocol import LK_ProtoCol,PING_ProtoCol,WT_ProtoCol,UD_ProtoCol, CR_ProtoCol,KA_ProtoCol,FIND_ProtoCol,POWEROFF_ProtoCol,ProtoColResolver,PHL_ProtoCol
+    from ext.protocol import LK_ProtoCol,PING_ProtoCol,WT_ProtoCol,UD_ProtoCol,REMIND_ProtoCol, CR_ProtoCol,KA_ProtoCol,FIND_ProtoCol,POWEROFF_ProtoCol,ProtoColResolver,PHL_ProtoCol
     import ext.mgr as mgr
     import ext.ui as _ui
     from ext.mgr import ConfigStoreManager, LocationManager, SockManager, \
@@ -59,7 +59,7 @@ if __name__ == '__main__':
     from ext.ui_main_menu import MainMenuScreen
     from ext.appWechat import WechatScreen,TK_ProtoCol,MESSAGE_ProtoCol
     import ext.ui_setting as _ui_setting
-    # from usr.test_sms import WeatherScreen
+    # from usr.test_sms import REMIND_ProtoCol
 
    #from usr.ui_wechat import WechatScreen,TK_ProtoCol
     btn_device = BtnDevice(tp_cst816)
@@ -117,7 +117,7 @@ if __name__ == '__main__':
     ui.add_screen(_ui.MsgDetailScreen())
     ui.add_screen(_ui.IncomingCallScreen())
     ui.add_screen(_ui.OnCallScreen())
-    ui.add_screen(_ui.PowerOnScreen())
+    # ui.add_screen(_ui.PowerOnScreen())
     # ui.add_screen(_ui.Setting2Screen())
     # ui.add_screen(_ui.Setting3Screen())  
 
@@ -159,10 +159,11 @@ if __name__ == '__main__':
     pcr.add_support(TK_ProtoCol())
     pcr.add_support(MESSAGE_ProtoCol())
     pcr.add_support(WT_ProtoCol())
+    pcr.add_support(REMIND_ProtoCol())
     sm = SockManager()
     sm.add_support_resolver(pcr)
     app.append_manager(sm)
     app.start()
 
-    EventMesh.publish("load_screen", {"screen": "PowerOn"})
+    EventMesh.publish("load_screen", {"screen": "watchface"})
 
index 8ee4c67..055746a 100644 (file)
@@ -507,13 +507,75 @@ class WT_ProtoCol(ProtoCol):
         msg_weather_content = UnicodeHexStr_To_Utf8Str(msg_weather_content)
         # print("msg_date:{} msg_time:{} msg_weather_content:{} msg_type:{} msg_temp:{} msg_min_temp:{} msg_max_temp:{} msg_city:{}".format(msg_date,msg_time,\
         #     msg_weather_content,msg_type,msg_temp,msg_min_temp,msg_max_temp,msg_city))
-        # print("WT_ProtoCol RECV msg:%s"%(msg))
+        print("WT_ProtoCol RECV msg:%s"%(msg))
 
         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")
         EventMesh.publish(constants.PROTOCOL.WT_SEND)
 
- 
+class REMIND_ProtoCol(ProtoCol):
+    """闹钟数据"""
+    TYPE = "REMIND"
+
+
+    def send(self, event, msg):
+        # [SZKW*867387060319491*0008*REMIND]
+        send_data = "SZKW*%s*003*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))
+        # 通过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))
+        self.alarm_list = []
+
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_tmp = msg_tmp.split('REMIND,')
+        msg_tmp = msg_tmp[1]
+        num = 0
+        j=0
+        for j in range(0,3):
+            self.alarm_day = []
+            self.alarm_week = []
+            self.alarm_total_data = []
+            self.alarm_total_data = msg_tmp.split(',')[j]
+
+            b = self.alarm_total_data.find('-')
+            if b != -1:
+                alarm_data = self.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:
+                    self.alarm_week = alarm_data[3]#星期
+
+                if alarm_day_num == 2:#每一天
+                    self.alarm_day = [1,2,3,4,5,6,0]
+                elif alarm_day_num == 3:#自定义
+                    for i in range(0,7):
+                        if self.alarm_week[i] != '0':
+                            self.alarm_day.append(i)
+                self.alarm_list.append({"idx": num, "hour": alarm_time_hour, "minute": alarm_time_min, "days": self.alarm_day, "enabled": alarm_switch})
+                with open("/ext/static/storage_file/alarm_msg.json", 'w',encoding='utf-8') as fd:
+                    ujson.dump(self.alarm_list,fd) 
+                num+=1
+                if num >= 2:
+                    num = 2
+        EventMesh.publish("push_update_alarm_show")
+        EventMesh.publish(constants.PROTOCOL.REMIND_SEND)
+
+
 
 class ProtoColResolver(object):
     def __init__(self):
index d5af6fc..3af2f46 100644 (file)
@@ -15,143 +15,200 @@ import osTimer
 import utime
 
 #-------------------------------------weather-----------------#
-weather_screen = lv.obj()
-weather = lv.obj(weather_screen)
-weather.center()
-weather.set_size(240, 320)
-weather.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-weather_img = lv.img(weather)
-weather_img.set_pos(10, 10)
-weather_img.set_size(135, 120)
-
-weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-no_weather_img = lv.img(weather)
-no_weather_img.set_pos(10, 10)
-no_weather_img.set_size(135, 120)
-no_weather_img.set_src("E:/static/update.jpg")
-no_weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-weather_tem_label = lv.label(weather)
-weather_tem_label.set_pos(155, 40)
-weather_tem_label.set_size(85, 50)
-weather_tem_label.set_text("_ _C")
-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)
-
-weather_detail_label = lv.label(weather)
-weather_detail_label.set_pos(155, 80)
-weather_detail_label.set_size(85, 50)
-weather_detail_label.set_text("-/-")
-weather_detail_label.set_long_mode(lv.label.LONG.WRAP)
-weather_detail_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-weather_detail_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-weather_location_label = lv.label(weather)
-weather_location_label.set_pos(0, 200)
-weather_location_label.set_size(240, 50)
-weather_location_label.set_text("--")
-weather_location_label.set_long_mode(lv.label.LONG.WRAP)
-weather_location_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-weather_location_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-no_connect_label = lv.label(weather)
-no_connect_label.set_pos(0, 200)
-no_connect_label.set_size(240, 40)
-no_connect_label.set_text("找不到服务器")
-no_connect_label.set_long_mode(lv.label.LONG.WRAP)
-no_connect_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-no_connect_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-no_connect_label1 = lv.label(weather)
-no_connect_label1.set_pos(0, 250)
-no_connect_label1.set_size(240, 70)
-no_connect_label1.set_text("请联网后重试")
-no_connect_label1.set_long_mode(lv.label.LONG.WRAP)
-no_connect_label1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-no_connect_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-class WeatherScreen(Screen):
-    NAME = "weather"
-
-    def __init__(self):
-        super().__init__()
-        self.meta = weather_screen
-        self.weather_data = {}
-        EventMesh.subscribe("updata_weather_show", self.update_weather_data)
-
-
-    def post_processor_after_initialization(self):
-        EventMesh.publish("updata_weather_show")
-
-
-    def update_weather_data(self, event, msg):
-
-        connect = EventMesh.publish(constants.EVENT.GET_CONNECT) #获取网络状态
-        self.weather_data = EventMesh.publish("get_weather_data")
-        if connect != 0:
-            no_data = self.weather_data[8]
-            if no_data != 0:
-                no_weather_img.add_flag(lv.obj.FLAG.HIDDEN)
-                weather_img.clear_flag(lv.obj.FLAG.HIDDEN)
-                no_connect_label.set_text(" ")
-                no_connect_label1.set_text(" ")
-                # print("self.weather_data:{}".format(self.weather_data))
-                type = self.weather_data[3]
-                if type == None:
-                    weather_img.set_src("E:/static/update.jpg")#天气类型
-                else:
-                    weather_img.set_src("E:/static/{}_weather.jpg".format(type))#天气类型
-
-                temp = self.weather_data[4]
-                if temp == None:
-                    weather_tem_label.set_text("_ _C")
-                else:
-                    weather_tem_label.set_text("{}C".format(temp))
-
-                date = self.weather_data[0]
-                if date != '{}':
-                    date_month = date.split('-')[1]
-                    date_day = date.split('-')[2]
-                    weather_detail_label.set_text("{}/{}".format(date_month,date_day))#天气更新时间
-                else:
-                    weather_detail_label.set_text("-/-")
-
-                city = self.weather_data[7]
-                if city != '{}':
-                    weather_location_label.set_text("{}".format(city))#城市
-                else:
-                    weather_location_label.set_text("--")
-            else:#已联网未获取到天气数据
-                weather_location_label.set_text(" ")
-                weather_detail_label.set_text("-/-")
-                weather_tem_label.set_text("_ _C")
-                no_connect_label.set_text("未获取网络数据")
-                no_connect_label1.set_text("请稍候重试")
-
-        else:
-            weather_location_label.set_text(" ")
-            weather_detail_label.set_text("-/-")
-            weather_tem_label.set_text("_ _C")
+# weather_screen = lv.obj()
+# weather = lv.obj(weather_screen)
+# weather.center()
+# weather.set_size(240, 320)
+# weather.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# weather_img = lv.img(weather)
+# weather_img.set_pos(10, 10)
+# weather_img.set_size(135, 120)
+
+# weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# no_weather_img = lv.img(weather)
+# no_weather_img.set_pos(10, 10)
+# no_weather_img.set_size(135, 120)
+# no_weather_img.set_src("E:/static/update.jpg")
+# no_weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# weather_tem_label = lv.label(weather)
+# weather_tem_label.set_pos(155, 40)
+# weather_tem_label.set_size(85, 50)
+# weather_tem_label.set_text("_ _C")
+# 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)
+
+# weather_detail_label = lv.label(weather)
+# weather_detail_label.set_pos(155, 80)
+# weather_detail_label.set_size(85, 50)
+# weather_detail_label.set_text("-/-")
+# weather_detail_label.set_long_mode(lv.label.LONG.WRAP)
+# weather_detail_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+# weather_detail_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# weather_location_label = lv.label(weather)
+# weather_location_label.set_pos(0, 200)
+# weather_location_label.set_size(240, 50)
+# weather_location_label.set_text("--")
+# weather_location_label.set_long_mode(lv.label.LONG.WRAP)
+# weather_location_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+# weather_location_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# no_connect_label = lv.label(weather)
+# no_connect_label.set_pos(0, 200)
+# no_connect_label.set_size(240, 40)
+# no_connect_label.set_text("找不到服务器")
+# no_connect_label.set_long_mode(lv.label.LONG.WRAP)
+# no_connect_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+# no_connect_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# no_connect_label1 = lv.label(weather)
+# no_connect_label1.set_pos(0, 250)
+# no_connect_label1.set_size(240, 70)
+# no_connect_label1.set_text("请联网后重试")
+# no_connect_label1.set_long_mode(lv.label.LONG.WRAP)
+# no_connect_label1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+# no_connect_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# class WeatherScreen(Screen):
+#     NAME = "weather"
+
+#     def __init__(self):
+#         super().__init__()
+#         self.meta = weather_screen
+#         self.weather_data = {}
+#         EventMesh.subscribe("updata_weather_show", self.update_weather_data)
+
+
+#     def post_processor_after_initialization(self):
+#         EventMesh.publish("updata_weather_show")
+
+
+#     def update_weather_data(self, event, msg):
+
+#         connect = EventMesh.publish(constants.EVENT.GET_CONNECT) #获取网络状态
+#         self.weather_data = EventMesh.publish("get_weather_data")
+#         if connect != 0:
+#             no_data = self.weather_data[8]
+#             if no_data != 0:
+#                 no_weather_img.add_flag(lv.obj.FLAG.HIDDEN)
+#                 weather_img.clear_flag(lv.obj.FLAG.HIDDEN)
+#                 no_connect_label.set_text(" ")
+#                 no_connect_label1.set_text(" ")
+#                 # print("self.weather_data:{}".format(self.weather_data))
+#                 type = self.weather_data[3]
+#                 if type == None:
+#                     weather_img.set_src("E:/static/update.jpg")#天气类型
+#                 else:
+#                     weather_img.set_src("E:/static/{}_weather.jpg".format(type))#天气类型
+
+#                 temp = self.weather_data[4]
+#                 if temp == None:
+#                     weather_tem_label.set_text("_ _C")
+#                 else:
+#                     weather_tem_label.set_text("{}C".format(temp))
+
+#                 date = self.weather_data[0]
+#                 if date != '{}':
+#                     date_month = date.split('-')[1]
+#                     date_day = date.split('-')[2]
+#                     weather_detail_label.set_text("{}/{}".format(date_month,date_day))#天气更新时间
+#                 else:
+#                     weather_detail_label.set_text("-/-")
+
+#                 city = self.weather_data[7]
+#                 if city != '{}':
+#                     weather_location_label.set_text("{}".format(city))#城市
+#                 else:
+#                     weather_location_label.set_text("--")
+#             else:#已联网未获取到天气数据
+#                 weather_location_label.set_text(" ")
+#                 weather_detail_label.set_text("-/-")
+#                 weather_tem_label.set_text("_ _C")
+#                 no_connect_label.set_text("未获取网络数据")
+#                 no_connect_label1.set_text("请稍候重试")
+
+#         else:
+#             weather_location_label.set_text(" ")
+#             weather_detail_label.set_text("-/-")
+#             weather_tem_label.set_text("_ _C")
             
-            no_weather_img.clear_flag(lv.obj.FLAG.HIDDEN)
-            weather_img.add_flag(lv.obj.FLAG.HIDDEN)
-            no_connect_label.set_text("找不到服务器")
-            no_connect_label1.set_text("请联网后重试")
+#             no_weather_img.clear_flag(lv.obj.FLAG.HIDDEN)
+#             weather_img.add_flag(lv.obj.FLAG.HIDDEN)
+#             no_connect_label.set_text("找不到服务器")
+#             no_connect_label1.set_text("请联网后重试")
 
-    def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "toolbox"})
+#     def done_return(self):
+#         EventMesh.publish("load_screen", {"screen": "toolbox"})
 
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "watchface"})
+#     def btn1_release(self):
+#         EventMesh.publish("load_screen", {"screen": "watchface"})
         
-    def btn8_press(self):
-        EventMesh.publish("load_screen", {"screen": "watchface"})
-
-
-
-
-
+#     def btn8_press(self):
+#         EventMesh.publish("load_screen", {"screen": "watchface"})
+
+class REMIND_ProtoCol(ProtoCol):
+    """闹钟数据"""
+    TYPE = "REMIND"
+
+
+    def send(self, event, msg):
+        # [SZKW*867387060319491*0008*REMIND]
+        send_data = "SZKW*%s*003*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))
+        # 通过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))
+        self.alarm_list = []
+
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_tmp = msg_tmp.split('REMIND,')
+        msg_tmp = msg_tmp[1]
+        num = 0
+        j=0
+        for j in range(0,3):
+            self.alarm_day = []
+            self.alarm_week = []
+            self.alarm_total_data = []
+            self.alarm_total_data = msg_tmp.split(',')[j]
+
+            b = self.alarm_total_data.find('-')
+            if b != -1:
+                alarm_data = self.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:
+                    self.alarm_week = alarm_data[3]#星期
+
+                if alarm_day_num == 2:#每一天
+                    self.alarm_day = [1,2,3,4,5,6,0]
+                elif alarm_day_num == 3:#自定义
+                    for i in range(0,7):
+                        if self.alarm_week[i] != '0':
+                            self.alarm_day.append(i)
+                self.alarm_list.append({"idx": num, "hour": alarm_time_hour, "minute": alarm_time_min, "days": self.alarm_day, "enabled": alarm_switch})
+                with open("/ext/static/storage_file/alarm_msg.json", 'w',encoding='utf-8') as fd:
+                    ujson.dump(self.alarm_list,fd) 
+                num+=1
+                if num >= 2:
+                    num = 2
+        EventMesh.publish("push_update_alarm_show")
+        EventMesh.publish(constants.PROTOCOL.REMIND_SEND)
 
index 73fb3df..ffbc3e0 100644 (file)
@@ -2902,37 +2902,22 @@ class StopwatchScreen(Screen):
             self.timer.stop()
         EventMesh.publish("load_screen", {"screen": "watchface"})
        
-#开机画面
-style_font_youyuan_40 = lv.style_t()
-style_font_youyuan_40.init()
-style_font_youyuan_40.set_text_color(lv.color_make(0xff, 0xff, 0xff))
-style_font_youyuan_40.set_text_font_v2("font_40.bin",40,0)
 
-power_on_screen = lv.obj()
-power_on = lv.obj(power_on_screen)
-power_on.center()
-power_on.set_size(240, 320)
-power_on.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
 
-power_on_label = lv.label(power_on)
-power_on_label.set_text("WELCOME")
-power_on_label.align(lv.ALIGN.CENTER, 0, 0)
-power_on_label.add_style(style_font_youyuan_40, lv.PART.MAIN | lv.STATE.DEFAULT)
 
+# class PowerOnScreen(Screen):
+#     NAME = "PowerOn"
 
-class PowerOnScreen(Screen):
-    NAME = "PowerOn"
+#     def __init__(self):
+#         super().__init__()
+#         self.meta = power_on_screen
+#         self.timer = osTimer()
+#     def post_processor_after_initialization(self):
+#         self.timer.start(2*1000,0,self.update_show)
 
-    def __init__(self):
-        super().__init__()
-        self.meta = power_on_screen
-        self.timer = osTimer()
-    def post_processor_after_initialization(self):
-        self.timer.start(3*1000,0,self.update_show)
-
-    def update_show(self,*agrs):
+#     def update_show(self,*agrs):
 
-        EventMesh.publish("load_screen", {"screen": "watchface"})
+#         EventMesh.publish("load_screen", {"screen": "watchface"})
 
 
 class UIFINDScreen(Screen):