From: d15521469561 Date: Mon, 10 Apr 2023 03:37:12 +0000 (+0800) Subject: 1.增加闹钟协议匹配闹钟界面 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=f14ec2e09813c0e1a5a2fe3331dd2cb5287df7ac;p=mirrors%2FASR1603_G5.git 1.增加闹钟协议匹配闹钟界面 2.开机界面优化 --- diff --git a/3.code/1.watch/2.code/alarm.py b/3.code/1.watch/2.code/alarm.py index 045bbf61..e413a979 100644 --- a/3.code/1.watch/2.code/alarm.py +++ b/3.code/1.watch/2.code/alarm.py @@ -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"] diff --git a/3.code/1.watch/2.code/constants.py b/3.code/1.watch/2.code/constants.py index 88424c87..76082ce6 100644 --- a/3.code/1.watch/2.code/constants.py +++ b/3.code/1.watch/2.code/constants.py @@ -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" diff --git a/3.code/1.watch/2.code/initTP.py b/3.code/1.watch/2.code/initTP.py index da530304..a2c80527 100644 --- a/3.code/1.watch/2.code/initTP.py +++ b/3.code/1.watch/2.code/initTP.py @@ -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") diff --git a/3.code/1.watch/2.code/lcd.py b/3.code/1.watch/2.code/lcd.py index 4acbcde2..20f8c821 100644 --- a/3.code/1.watch/2.code/lcd.py +++ b/3.code/1.watch/2.code/lcd.py @@ -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 index 00000000..2027e442 --- /dev/null +++ b/3.code/1.watch/2.code/main.py @@ -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"}) + diff --git a/3.code/1.watch/2.code/main_1.py b/3.code/1.watch/2.code/main_1.py index 10a8b528..2027e442 100644 --- a/3.code/1.watch/2.code/main_1.py +++ b/3.code/1.watch/2.code/main_1.py @@ -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"}) diff --git a/3.code/1.watch/2.code/protocol.py b/3.code/1.watch/2.code/protocol.py index 8ee4c675..055746a8 100644 --- a/3.code/1.watch/2.code/protocol.py +++ b/3.code/1.watch/2.code/protocol.py @@ -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): diff --git a/3.code/1.watch/2.code/test_sms.py b/3.code/1.watch/2.code/test_sms.py index d5af6fc9..3af2f46e 100644 --- a/3.code/1.watch/2.code/test_sms.py +++ b/3.code/1.watch/2.code/test_sms.py @@ -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) diff --git a/3.code/1.watch/2.code/ui.py b/3.code/1.watch/2.code/ui.py index 73fb3df5..ffbc3e06 100644 --- a/3.code/1.watch/2.code/ui.py +++ b/3.code/1.watch/2.code/ui.py @@ -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):