添加字体文件
authord15521469561 <d155214695615@qq.com>
Thu, 6 Apr 2023 02:51:10 +0000 (10:51 +0800)
committerd15521469561 <d155214695615@qq.com>
Thu, 6 Apr 2023 02:51:10 +0000 (10:51 +0800)
3.code/1.watch/2.code/constants.py
3.code/1.watch/2.code/main_1.py
3.code/1.watch/2.code/mgr.py
3.code/1.watch/2.code/test_sms.py
3.code/1.watch/2.code/ui.py
3.code/1.watch/3.font/ext_font.bin [new file with mode: 0644]
3.code/1.watch/3.font/font_bin_merge.py [new file with mode: 0644]
3.code/1.watch/ext_fs.bin [deleted file]

index f4e2ffc..b84670d 100644 (file)
@@ -29,6 +29,9 @@ class PROTOCOL:
     MESSAGE_SEND = "MESSAGE_SEND"
     MESSAGE_RECV = "MESSAGE_RECV"
 
+    WT_SEND = "WT_SEND"
+    WT_RECV = "WT_RECV"
+
 
 class EVENT:
     CHANNEL_SOCKET_SEND = "CHANNEL_SOCKET_SEND"
index 56db1e6..e0e2efa 100644 (file)
@@ -56,7 +56,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 PhoneScreen
+    from usr.test_sms import WeatherScreen,WT_ProtoCol
 
    #from usr.ui_wechat import WechatScreen,TK_ProtoCol
     btn_device = BtnDevice(tp_cst816)
@@ -74,7 +74,7 @@ if __name__ == '__main__':
     ui.add_screen(_ui.AlarmScreen()) 
     ui.add_screen(_ui.CountdownScreen()) 
     ui.add_screen(_ui.StopwatchScreen()) 
-    ui.add_screen(_ui.WeatherScreen()) 
+    ui.add_screen(WeatherScreen()) 
     ui.add_screen(_ui.Spo2Screen()) 
     ui.add_screen(_ui.TemperatureScreen()) 
     ui.add_screen(_ui.ContactsScreen()) 
@@ -146,6 +146,7 @@ if __name__ == '__main__':
     pcr.add_support(PHL_ProtoCol())
     pcr.add_support(TK_ProtoCol())
     pcr.add_support(MESSAGE_ProtoCol())
+    pcr.add_support(WT_ProtoCol())
     sm = SockManager()
     sm.add_support_resolver(pcr)
     app.append_manager(sm)
index 5651908..683b0ad 100644 (file)
@@ -663,8 +663,9 @@ class DeviceInfoManager(Abstract):
         :return: HH:MM 格式
         """
         rtc_time = self.rtc.datetime()
+        print("rtc_time:{}".format(rtc_time))
         date = ("%d月%d日" % (rtc_time[1], rtc_time[2]))
-        year = ("%o4d" % (rtc_time[0]))
+        year = ("%04d年" % (rtc_time[0]))
         week = ("星期%s"%(self.get_week(rtc_time[3])))
         time = [rtc_time[4], rtc_time[5]]
         time_quantum = ("%s" % (self.get_time_bucket(rtc_time[4])))
index a9a3181..c7129e7 100644 (file)
@@ -17,389 +17,230 @@ import utime
 
 ######################拨号盘##################################
 
-# -------------------------------------------phone screen----------------------------------------------------------
-phone_screen = lv.obj()
-phone = lv.obj(phone_screen)
-phone.center()
-phone.set_size(240, 320)
-phone.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-
-line_points = [{"x":0,"y":0},{"x":0,"y":20}]
-phone_line = lv.line(phone)
-phone_line.set_points(line_points,2)
-phone_line.set_pos(235,74)
-phone_line.set_size(2,20)
-phone_line.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-phone_line.add_style(style_line,0)
-
-phone_label = lv.label(phone)
-phone_label.set_pos(0, 76)
-phone_label.set_size(0, 30)
-phone_label.set_text(" ")
-phone_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_label.set_long_mode(lv.label.LONG.CLIP)
-phone_label.set_style_text_align(lv.TEXT_ALIGN.RIGHT, 0)
-
-phone_one = lv.img(phone)
-phone_one.set_src("E:/static/IMAGE_NUMBER_KEY1_ICON.jpg")
-phone_one.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_one.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_one.set_pos(3, 100)
-
-phone_two = lv.img(phone)
-phone_two.set_size(76, 40)
-phone_two.set_src("E:/static/IMAGE_NUMBER_KEY2_ICON.jpg")
-phone_two.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_two.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_two.set_pos(82, 100)
-
-phone_three = lv.img(phone)
-phone_three.set_size(76, 40)
-phone_three.set_src("E:/static/IMAGE_NUMBER_KEY3_ICON.jpg")
-phone_three.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_three.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_three.set_pos(161, 100)
-
-phone_four = lv.img(phone)
-phone_four.set_size(76, 40)
-phone_four.set_src("E:/static/IMAGE_NUMBER_KEY4_ICON.jpg")
-phone_four.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_four.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_four.set_pos(3, 142)
-
-phone_five = lv.img(phone)
-phone_five.set_size(76, 40)
-phone_five.set_src("E:/static/IMAGE_NUMBER_KEY5_ICON.jpg")
-phone_five.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_five.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_five.set_pos(82, 142)
-
-phone_six = lv.img(phone)
-phone_six.set_size(76, 40)
-phone_six.set_src("E:/static/IMAGE_NUMBER_KEY6_ICON.jpg")
-phone_six.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_six.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_six.set_pos(161, 142)
-
-phone_seven = lv.img(phone)
-phone_seven.set_size(76, 40)
-phone_seven.set_src("E:/static/IMAGE_NUMBER_KEY7_ICON.jpg")
-phone_seven.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_seven.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_seven.set_pos(3, 184)
-
-phone_eight = lv.img(phone)
-phone_eight.set_size(76, 40)
-phone_eight.set_src("E:/static/IMAGE_NUMBER_KEY8_ICON.jpg")
-phone_eight.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_eight.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_eight.set_pos(82, 184)
-
-phone_nine = lv.img(phone)
-phone_nine.set_size(76, 40)
-phone_nine.set_src("E:/static/IMAGE_NUMBER_KEY9_ICON.jpg")
-phone_nine.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_nine.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_nine.set_pos(161, 184)
-
-phone_start = lv.img(phone)
-phone_start.set_size(76, 40)
-phone_start.set_src("E:/static/IMAGE_NUMBER_KEYSTAR_ICON.jpg")
-phone_start.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_start.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_start.set_pos(3, 226)
-
-phone_zero = lv.img(phone)
-phone_zero.set_size(76, 40)
-phone_zero.set_src("E:/static/IMAGE_NUMBER_KEY0_ICON.jpg")
-phone_zero.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_zero.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_zero.set_pos(82, 226)
-
-phone_hash = lv.img(phone)
-phone_hash.set_size(76, 40)
-phone_hash.set_src("E:/static/IMAGE_NUMBER_KEYHASH_ICON.jpg")
-phone_hash.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_hash.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_hash.set_pos(161, 226)
-
-phone_call = lv.img(phone)
-phone_call.set_size(76, 40)
-phone_call.set_src("E:/static/IMAGE_BUTTON_DIAL.jpg")
-phone_call.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_call.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_call.set_pos(3, 268)
-
-phone_call_btn = lv.img(phone)
-phone_call_btn.set_size(76, 52)
-phone_call_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_call_btn.set_pos(3, 268)
-
-phone_contact = lv.img(phone)
-phone_contact.set_size(64, 40)
-phone_contact.set_src("E:/static/IMAGE_BUTTON_DIAL_CONTACT.jpg")
-phone_contact.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_contact.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_contact.set_pos(87, 268)
-
-phone_contact_btn = lv.img(phone)
-phone_contact_btn.set_size(76, 52)
-phone_contact_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_contact_btn.set_pos(87, 268)
-
-phone_delete = lv.img(phone)
-phone_delete.set_size(76, 40)
-phone_delete.set_src("E:/static/IMAGE_BUTTON_DELKEY.jpg")
-phone_delete.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_delete.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-phone_delete.set_pos(161, 268)
-
-phone_delete_btn = lv.img(phone)
-phone_delete_btn.set_size(76, 52)
-phone_delete_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-phone_delete_btn.set_pos(161, 268)
-
-PHONE_CALL_MAX_DATA = 22
-
-class PhoneScreen(Screen):
-    NAME = "Phone"
+# -------------------------------------------血氧----------------------------------------------------------
+
+
+# spo2_screen = lv.obj()
+# spo2 = lv.obj(spo2_screen)
+# spo2.center()
+# spo2.set_size(240, 320)
+# spo2.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# spo2_label = lv.label(spo2)
+# spo2_label.set_pos(0, 10)
+# spo2_label.set_size(240, 40)
+# spo2_label.set_text("血氧")
+# spo2_label.set_long_mode(lv.label.LONG.WRAP)
+# spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+# spo2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# spo2_done_img = lv.img(spo2)
+# spo2_done_img.set_pos(0, 50)
+# spo2_done_img.set_size(240, 96)
+# spo2_done_img.set_src("E:/static/IMAGE_SPO2_ONLY_TEST_DONE.jpg")
+
+# # spo2_finish_gif = lv.gif(spo2)
+# # spo2_finish_gif.set_pos(0, 40)
+# # spo2_finish_gif.set_size(240, 120)
+# # #spo2_finish_img.add_flag(lv.obj.FLAG.CLICKABLE)
+# # spo2_finish_gif.set_src("E:/static/IMAGE_SPO2_ONLY_ANI.gif")
+# # #spo2_finish_gif.set_opa(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# spo2_label = lv.label(spo2)
+# spo2_label.set_size(240,30)
+# spo2_label.set_pos(0,160)
+# spo2_label.set_text(" ")
+# spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+# spo2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# spo2_label_1 = lv.label(spo2)
+# spo2_label_1.set_size(240,40)
+# spo2_label_1.set_pos(0,200)
+# spo2_label_1.set_text(" ")
+# spo2_label_1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+# spo2_label_1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+
+# line_points = [{"x":0,"y":0},{"x":240,"y":0}]
+# spo2_line = lv.line(spo2)
+# spo2_line.set_points(line_points,2)
+# spo2_line.set_pos(0,240)
+# spo2_line.set_size(240,10)
+# spo2_line.add_style(style_line,0)
+
+
+
+
+# spo2_last_time = lv.label(spo2)
+# spo2_last_time.set_size(240, 15)
+# spo2_last_time.set_pos(0, 250)
+# spo2_last_time.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+# spo2_last_time.set_text(" ")
+# spo2_last_time.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+
+# spo2_last_value = lv.label(spo2)
+# spo2_last_value.set_size(240, 15)
+# spo2_last_value.set_pos(0, 280)
+# spo2_last_value.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+# spo2_last_value.set_text(" ")
+# spo2_last_value.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+
+
+# class Spo2Screen(Screen):
+#     NAME = "spo2"
+
+#     def __init__(self):
+#         super().__init__()
+#         self.meta = spo2_screen
+#         self.timer = osTimer()
+#         self.point = 0
+#         self.old_spo2_value = 0
+#         self.spo2_value = 0
+
+#     def post_processor_after_initialization(self):
+#         self.point = 0
+#         self.spo2_value = 0
+#         self.timer.start(1*1000, 1, self.start_measure)
+
+#     def start_measure(self,*args):
+#         self.point = self.point + 1
+#         if self.point == 1:
+#             self.spo2_value = 96
+#             spo2_label.set_text("96 %")
+#             spo2_label_1.set_text("测量中")
+
+#         if self.point == 2:
+#             self.spo2_value = 97
+#             spo2_label.set_text("97 %")
+#             spo2_label_1.set_text("测量中")
+
+#         if self.point == 3:
+#             self.spo2_value = 98
+#             spo2_label.set_text("98 %")
+#             spo2_label_1.set_text("测量中")
+
+#         if self.point == 4:
+#             self.spo2_value = 99
+#             spo2_label.set_text("99 %")
+#             spo2_label_1.set_text("测量完成")
+#             self.timer.stop()
+#             self.point = 0
+#             self.old_spo2_value = self.spo2_value
+#             time = EventMesh.publish("screen_get_time")#获取系统时间
+
+#             # result = [time, time_quantum, date , week,year]
+            
+#             time_tmp = "{}:{}".format("%02d"%(time[0][0]),"%02d"%(time[0][1]))#时间
+#             date_year = time[4]#年份
+#             date_month = time[2]#日期 04月05日
+#             print("date_year:{} date_month:{} time_tmp:{}".format(date_year,date_month,time_tmp))
+#             spo2_last_time.set_text(str(date_year)+str(date_month)+" {}".format(str(time_tmp)))
+#             spo2_last_value.set_text(str(self.old_spo2_value)+'%')
+            
+#     def done_return(self):
+#         self.timer.stop()
+#         EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+#     def btn1_release(self):
+#         EventMesh.publish("load_screen", {"screen": "watchface"})
+#         self.timer.stop()
+        
+#     def btn8_press(self):
+#         EventMesh.publish("load_screen", {"screen": "watchface"})
+#         self.timer.stop()
+
+#-------------------------------------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)
+
+
+weather_tem_label = lv.label(weather)
+weather_tem_label.set_pos(140, 40)
+weather_tem_label.set_size(50, 50)
+weather_tem_label.set_text("19°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(140, 80)
+weather_detail_label.set_size(50, 50)
+weather_detail_label.set_text("01/30")
+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(100, 200)
+weather_location_label.set_size(80, 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)
+
+
+class WeatherScreen(Screen):
+    NAME = "weather"
 
     def __init__(self):
-
         super().__init__()
-        self.meta = phone_screen
-        self.phone_num = ''
-        self.phone_list = []
-        self.button = 0
-        self.timer = osTimer()
-        self.count = 0
-        phone_one.add_event_cb(lambda e: self.one(e),
-                                     lv.EVENT.CLICKED, None)
-        phone_two.add_event_cb(lambda e: self.two(e),
-                                     lv.EVENT.CLICKED, None)
-        phone_three.add_event_cb(lambda e: self.three(e),
-                                     lv.EVENT.CLICKED, None)
-        phone_four.add_event_cb(lambda e: self.four(e),
-                                     lv.EVENT.CLICKED, None)
-        phone_five.add_event_cb(lambda e: self.five(e),
-                                     lv.EVENT.CLICKED, None)
-        phone_six.add_event_cb(lambda e: self.six(e),
-                                     lv.EVENT.CLICKED, None)
-        phone_seven.add_event_cb(lambda e: self.seven(e),
-                                     lv.EVENT.CLICKED, None)
-        phone_eight.add_event_cb(lambda e: self.eight(e),
-                                     lv.EVENT.CLICKED, None)
-        phone_nine.add_event_cb(lambda e: self.nine(e),
-                                     lv.EVENT.CLICKED, None)
-        phone_zero.add_event_cb(lambda e: self.zero(e),
-                                     lv.EVENT.CLICKED, None)
-
-        phone_call_btn.add_event_cb(lambda e: self.call(e),
-                                     lv.EVENT.CLICKED, None)
-        phone_contact_btn.add_event_cb(lambda e: self.contact(e),
-                                     lv.EVENT.CLICKED, None)
-        phone_delete_btn.add_event_cb(lambda e: self.delete(e),
-                                     lv.EVENT.CLICKED, None)
-        
-        phone_start.add_event_cb(lambda e: self.start(e),
-                                     lv.EVENT.CLICKED, None)#短按显示* 
-        
-        phone_start.add_event_cb(lambda e: self.pressed_start(e),
-                                     lv.EVENT.LONG_PRESSED, None)#长按显示+
-        
-        phone_start.add_event_cb(lambda e: self.endpressed_start(e),
-                                     lv.EVENT.RELEASED, None)#释放按键
-        
+        self.meta = weather_screen
 
-        phone_hash.add_event_cb(lambda e: self.hash(e),
-                                     lv.EVENT.CLICKED, None)
-    def post_processor_after_instantiation(self):
-        self.phone_num=''
-        self.phone_list = []
-
-    def initialization(self):
-        self.phone_num=''
-        self.phone_list = []
-        self.count = 0
-        phone_label.set_text(" ")
-        # print("self.phone_list :{} self.phone_num:{}".format(self.phone_list,self.phone_num))
-        self.timer.start(1000,1,self.refresh_line)   
-
-    def refresh_line(self,e):
+    def post_processor_after_initialization(self):
+        EventMesh.publish(constants.PROTOCOL.WT_SEND)
+        #weather_img.set_src(name)
         
-        if self.count > 2 :
-            self.count = 1
-        if (self.count%2) == 0:
-            phone_line.clear_flag(lv.obj.FLAG.HIDDEN)
-        else:
-            phone_line.add_flag(lv.obj.FLAG.HIDDEN)
-        self.count+=1
-    def one(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            return
-        self.phone_list.append("1")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-    
-    def two(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            return
-        self.phone_list.append("2")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def three(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            return
-        self.phone_list.append("3")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def four(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            return
-        self.phone_list.append("4")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def five(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            return
-        self.phone_list.append("5")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def six(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            return
-        self.phone_list.append("6")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def seven(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            return
-        self.phone_list.append("7")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def eight(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            return
-        self.phone_list.append("8")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def nine(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:
-            return
-        self.phone_list.append("9")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-    def zero(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:#限制拨号数量20个数字
-            return
-        self.phone_list.append("0")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-    
-    def start(self,e):
-        self.button = 0
-
-    def pressed_start(self,e):
-        self.button = 1
-
-    def endpressed_start(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:#限制拨号数量20个数字
-            return
-  
-        if self.button == 1:#长按
-            self.phone_list.append("+")  
-        else:#短按
-            self.phone_list.append("*")  
-                      
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-    
-    def hash(self,e):
-        if len(self.phone_list) >= PHONE_CALL_MAX_DATA:#限制拨号数量20个数字
-            return
-        self.phone_list.append("#")                
-        self.phone_num = ''.join(self.phone_list)
-        self.show_num()
-
-
-    def delete(self,e):
-        if len(self.phone_list) != 0:
-            self.phone_list.pop()
-            self.phone_num = ''.join(self.phone_list)
-            self.show_num()
-
-    def contact(self,e):
-        EventMesh.publish("load_screen", {"screen": "contacts"})
-
-    def call(self,e):
-        self.name = None
-        self.phonebook = {}
-        self.number_tmp = {}
-        if len(self.phone_list) != 0:
-            data = EventMesh.publish("get_phonebook_list")
-            check = data[0]
-            self.phonebook = data[1]
-            # print("check :{}".format(check))
-            if check == 1:#检查通讯录
-                phonebook_keys = sorted(self.phonebook.keys())
-                b = str(self.phone_num) in self.phonebook.values()#查找key中是否包含content电话号码 True 包含在里面 False不包含在里面
-                j = 0
-                if b == True:
-                    for i in range(len(self.phonebook)): #字典 key value
-                        #'001:张三':15521469561
-                        name = self.phonebook[phonebook_keys[j]]
-                        name_value = phonebook_keys[j]
-                        number_tmp = str(self.phone_num)
-                        # print("name :{} number_tmp:{}".format(name,number_tmp))
-                        if name.find(number_tmp) != -1:#查找电话号码是否在通讯录里面
-                            number_f= name_value
-                            name_s = number_f.split(':')
-                            name_s = name_s[1]
-                            self.name = name_s
-                            break
-                        j+=1
-                else:
-                    self.name = self.phone_num
-            else:
-                self.name = self.phone_num
-
-            EventMesh.publish("save_phonenum",self.phone_num)
-            EventMesh.publish("save_phonename",self.name)#
-            voiceCall.callStart(self.phone_num)
-        
-    def show_num(self):
-        len_t = len(self.phone_list)*20
-        if len_t > 230:
-            len_t = 230
-        phone_label.set_size(len_t,30)
-        phone_label.set_pos(230-len_t,76)
-        phone_label.set_text(self.phone_num)
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("load_screen", {"screen": "toolbox"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "watchface"})
-
+        
     def btn8_press(self):
         EventMesh.publish("load_screen", {"screen": "watchface"})
 
 
 
 
+class WT_ProtoCol(ProtoCol):
+    """温度数据"""
+    TYPE = "WT"
 
 
+    def send(self, event, msg):
+        # [SZKW*867387060319491*0008*PHL]
+        send_data = "SZKW*%s*0003*WT"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        print("WT_ProtoCol:send:%s"%(data))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
 
+    def recv(self, event, msg):
+        """
 
+        @param event: 温度数据下发
+        @param msg: 接收到的下行数据
+        """
+        msg = msg[1:-1]
+        print("WT_ProtoCol RECV msg:%s"%(msg))
+        # UnicodeHexStr_To_Utf8Str(phonebook_tmp)
+
+        
+        # EventMesh.publish(constants.PROTOCOL.WT_SEND)
+        # EventMesh.publish("set_phonebook_list",[1,phonebook])
+        # EventMesh.publish("contact_updata_list_show")
 
 
 
index 0fa243f..9e94bcd 100644 (file)
@@ -701,72 +701,7 @@ temperature_wrist_value_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv
 # temperature_notice_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
 # temperature_notice_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 
-# -------------------------------------------spo2 screen----------------------------------------------------------
-spo2_screen = lv.obj()
-spo2 = lv.obj(spo2_screen)
-spo2.center()
-spo2.set_size(240, 320)
-spo2.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
 
-spo2_label = lv.label(spo2)
-spo2_label.set_pos(0, 10)
-spo2_label.set_size(240, 40)
-spo2_label.set_text("血氧")
-spo2_label.set_long_mode(lv.label.LONG.WRAP)
-spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-spo2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-spo2_done_img = lv.img(spo2)
-spo2_done_img.set_pos(0, 50)
-spo2_done_img.set_size(240, 96)
-spo2_done_img.set_src("E:/static/IMAGE_SPO2_ONLY_TEST_DONE.jpg")
-
-# spo2_finish_gif = lv.gif(spo2)
-# spo2_finish_gif.set_pos(0, 40)
-# spo2_finish_gif.set_size(240, 120)
-# #spo2_finish_img.add_flag(lv.obj.FLAG.CLICKABLE)
-# spo2_finish_gif.set_src("E:/static/IMAGE_SPO2_ONLY_ANI.gif")
-# #spo2_finish_gif.set_opa(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-spo2_label = lv.label(spo2)
-spo2_label.set_size(240,30)
-spo2_label.set_pos(0,160)
-spo2_label.set_text(" ")
-spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-spo2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-spo2_label_1 = lv.label(spo2)
-spo2_label_1.set_size(240,40)
-spo2_label_1.set_pos(0,200)
-spo2_label_1.set_text(" ")
-spo2_label_1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-spo2_label_1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-
-
-line_points = [{"x":0,"y":0},{"x":240,"y":0}]
-spo2_line = lv.line(spo2)
-spo2_line.set_points(line_points,2)
-spo2_line.set_pos(0,240)
-spo2_line.set_size(240,10)
-spo2_line.add_style(style_line,0)
-
-
-
-
-spo2_last_time = lv.label(spo2)
-spo2_last_time.set_size(240, 15)
-spo2_last_time.set_pos(0, 250)
-spo2_last_time.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-spo2_last_time.set_text(" ")
-spo2_last_time.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-
-spo2_last_value = lv.label(spo2)
-spo2_last_value.set_size(240, 15)
-spo2_last_value.set_pos(0, 280)
-spo2_last_value.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-spo2_last_value.set_text("96%")
-spo2_last_value.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
 
 
 
@@ -2442,6 +2377,73 @@ class TemperatureScreen(Screen):
         EventMesh.publish("load_screen", {"screen": "watchface"})
 
 
+spo2_screen = lv.obj()
+spo2 = lv.obj(spo2_screen)
+spo2.center()
+spo2.set_size(240, 320)
+spo2.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+spo2_label = lv.label(spo2)
+spo2_label.set_pos(0, 10)
+spo2_label.set_size(240, 40)
+spo2_label.set_text("血氧")
+spo2_label.set_long_mode(lv.label.LONG.WRAP)
+spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+spo2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+spo2_done_img = lv.img(spo2)
+spo2_done_img.set_pos(0, 50)
+spo2_done_img.set_size(240, 96)
+spo2_done_img.set_src("E:/static/IMAGE_SPO2_ONLY_TEST_DONE.jpg")
+
+# spo2_finish_gif = lv.gif(spo2)
+# spo2_finish_gif.set_pos(0, 40)
+# spo2_finish_gif.set_size(240, 120)
+# #spo2_finish_img.add_flag(lv.obj.FLAG.CLICKABLE)
+# spo2_finish_gif.set_src("E:/static/IMAGE_SPO2_ONLY_ANI.gif")
+# #spo2_finish_gif.set_opa(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+spo2_label = lv.label(spo2)
+spo2_label.set_size(240,30)
+spo2_label.set_pos(0,160)
+spo2_label.set_text(" ")
+spo2_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+spo2_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+spo2_label_1 = lv.label(spo2)
+spo2_label_1.set_size(240,40)
+spo2_label_1.set_pos(0,200)
+spo2_label_1.set_text(" ")
+spo2_label_1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+spo2_label_1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+
+line_points = [{"x":0,"y":0},{"x":240,"y":0}]
+spo2_line = lv.line(spo2)
+spo2_line.set_points(line_points,2)
+spo2_line.set_pos(0,240)
+spo2_line.set_size(240,10)
+spo2_line.add_style(style_line,0)
+
+
+
+
+spo2_last_time = lv.label(spo2)
+spo2_last_time.set_size(240, 15)
+spo2_last_time.set_pos(0, 250)
+spo2_last_time.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+spo2_last_time.set_text(" ")
+spo2_last_time.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+
+spo2_last_value = lv.label(spo2)
+spo2_last_value.set_size(240, 15)
+spo2_last_value.set_pos(0, 280)
+spo2_last_value.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+spo2_last_value.set_text(" ")
+spo2_last_value.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+
+
 class Spo2Screen(Screen):
     NAME = "spo2"
 
@@ -2466,20 +2468,32 @@ class Spo2Screen(Screen):
             spo2_label_1.set_text("测量中")
 
         if self.point == 2:
+            self.spo2_value = 97
             spo2_label.set_text("97 %")
             spo2_label_1.set_text("测量中")
 
         if self.point == 3:
+            self.spo2_value = 98
             spo2_label.set_text("98 %")
             spo2_label_1.set_text("测量中")
 
         if self.point == 4:
+            self.spo2_value = 99
             spo2_label.set_text("99 %")
             spo2_label_1.set_text("测量完成")
             self.timer.stop()
             self.point = 0
             self.old_spo2_value = self.spo2_value
-            # spo2_last_time.set_text()
+            time = EventMesh.publish("screen_get_time")#获取系统时间
+
+            # result = [time, time_quantum, date , week,year]
+            
+            time_tmp = "{}:{}".format("%02d"%(time[0][0]),"%02d"%(time[0][1]))#时间
+            date_year = time[4]#年份
+            date_month = time[2]#日期 04月05日
+            print("date_year:{} date_month:{} time_tmp:{}".format(date_year,date_month,time_tmp))
+            spo2_last_time.set_text(str(date_year)+str(date_month)+" {}".format(str(time_tmp)))
+            spo2_last_value.set_text(str(self.old_spo2_value)+'%')
             
     def done_return(self):
         self.timer.stop()
@@ -2493,6 +2507,8 @@ class Spo2Screen(Screen):
         EventMesh.publish("load_screen", {"screen": "watchface"})
         self.timer.stop()
 
+
+
 class CountdownScreen(Screen):
     NAME = "countdown"
     
diff --git a/3.code/1.watch/3.font/ext_font.bin b/3.code/1.watch/3.font/ext_font.bin
new file mode 100644 (file)
index 0000000..03a3913
Binary files /dev/null and b/3.code/1.watch/3.font/ext_font.bin differ
diff --git a/3.code/1.watch/3.font/font_bin_merge.py b/3.code/1.watch/3.font/font_bin_merge.py
new file mode 100644 (file)
index 0000000..05db77b
--- /dev/null
@@ -0,0 +1,46 @@
+from struct import *
+
+
+def bin_create(*args):
+    if len(args) < 1:
+        print("wrong params number!")
+        return -1
+    # bin header :one byte for font_num, font_num bytes for bin_size
+    # 大端1,小端2
+    # endian = input("输入大小端:")
+    with open("ext_font.bin","wb") as dest_file:
+        # start
+        start = "s"
+        end = "e"
+
+        font_num = len(args)
+        bin_data = []
+        bin_size = []
+        font_name = ""
+
+        for i in range(font_num):
+            with open(args[i], "rb") as bin_file:
+                data = bin_file.read()
+            padding = "\0" * (128 - len(args[i]))
+            string_padded = args[i] + padding
+            font_name += string_padded
+            bin_size.append(len(data))
+            bin_data.append(data)
+
+        # # 大端
+        # if endian == "1":
+        #     write_data = pack(">B%ds%dI"% (font_num*128, font_num), font_num, font_name.encode(), *bin_size)
+        # # 小端
+        # else:
+        write_data = pack("<B%ds%dI"% (font_num*128, font_num), font_num, font_name.encode(), *bin_size)
+
+        dest_file.write(start.encode())
+        dest_file.write(write_data)
+        for i in range(font_num):
+            dest_file.write(bin_data[i])
+        dest_file.write(end.encode())
+
+
+if __name__ == "__main__":
+    bin_create("font_20.bin","font_18.bin","font_40.bin")
+    # bin_create("1.bin")
\ No newline at end of file
diff --git a/3.code/1.watch/ext_fs.bin b/3.code/1.watch/ext_fs.bin
deleted file mode 100644 (file)
index 60e379f..0000000
Binary files a/3.code/1.watch/ext_fs.bin and /dev/null differ