K01:
authordxy15521469561 <1731678236@qq.com>
Thu, 11 Jul 2024 07:43:36 +0000 (15:43 +0800)
committerdxy15521469561 <1731678236@qq.com>
Thu, 11 Jul 2024 07:43:36 +0000 (15:43 +0800)
bug修复 优化界面

19 files changed:
2.sdk-ZY/project/K01/new.bat
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui.py
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py
2.sdk-ZY/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/images/firmware_base_release_pack.zip
2.sdk-ZY/project/K01/usr/static/IMAGE_ONE_PAGE_FRIEND.png [deleted file]
2.sdk-ZY/project/K01/usr/static/menu_upgrade.png [deleted file]
2.sdk-ZY/project/K01/usr/static/menustyle_select.png [new file with mode: 0644]
2.sdk-ZY/project/K01/usr/static/poweroff_icon.png [deleted file]
2.sdk-ZY/project/K01/usr/static/pp_friend01.png [deleted file]
2.sdk-ZY/project/K01/usr/static/pp_friend02.png [deleted file]
2.sdk-ZY/project/K01/usr/static/pp_friend03.png [deleted file]
2.sdk-ZY/project/K01/usr/static/pp_friend04.png [deleted file]
2.sdk-ZY/project/K01/usr/static/setting_power_restart.png [deleted file]
2.sdk-ZY/project/K01/usr/static/setting_poweroff.png [deleted file]
2.sdk-ZY/project/K01/usr/static/setting_poweroff_bg.png
2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/aigcdial.py [new file with mode: 0644]

index 27d7bf8..c7b80b1 100644 (file)
@@ -13,7 +13,7 @@ if errorlevel 0 (
 )
 :STEP1
 
-..\..\Helios_SDK\tools\ASR_1606\win32\mklfs.exe -c usr -b 4096 -r 4096 -p 4096 -s 757760 -i .\images\customer_fs.bin
+..\..\Helios_SDK\tools\ASR_1606\win32\mklfs.exe -c usr -b 4096 -r 4096 -p 4096 -s 696320 -i .\images\customer_fs.bin
 if errorlevel 1 (
     echo "customer_fs.bin生成失败 请检查usr目录是否大于316K!!!!!!!!!!!!!!!"
     goto exit
index 5b476e4..7835500 100644 (file)
@@ -875,6 +875,7 @@ class AIScreen(Screen):#AI_GUI
         self.scroll_timer_count = 0
         self.play_flag = 0
         self.play_flag_init = 0
+        self.play_end = 0 #是否播放完成标识
         AI_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,0)),
                                       lv.EVENT.GESTURE, None)
         AI_talk_end_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,0)),
@@ -1238,7 +1239,7 @@ class AIScreen(Screen):#AI_GUI
 
     def ai_talk_end(self):#语言识别完 思考结束显示最后的文本和音频数据
         
-        
+        self.play_end = 0
         self.play_flag = 1
         self.AI_label_answer = ""
         AI_end_screen_list_screen.scroll_to(0, 0, lv.ANIM.OFF)
@@ -1366,6 +1367,7 @@ class AIScreen(Screen):#AI_GUI
         pass
     def initialization(self):
         self.play_flag = 1
+        self.play_end = 0
         self.TTS_PRO_TYPE = 0
         AI_listen_screen.add_flag(lv.obj.FLAG.HIDDEN)
         AI_think_screen.add_flag(lv.obj.FLAG.HIDDEN) #先隐藏
@@ -1399,7 +1401,7 @@ class AIScreen(Screen):#AI_GUI
         elif event == 7:
             self.audio_play_state = 0
             EventMesh.publish("set_audio_state", 0)   
-            print('audio-play finish.')
+            print('audio-play finish.!!!!!!')
     def AI_init(self):
         self.AI_audio_queue_thread_id = _thread.start_new_thread(self.AI_audio_queue_thread, ())
         self.AI_send_data_queue_thread_id = _thread.start_new_thread(self.AI_send_data_queue_thread, ())
@@ -1590,10 +1592,12 @@ class AIScreen(Screen):#AI_GUI
         else:
             pass
     def _1S_timer_cb(self,*argc):
-        if EventMesh.publish("get_lcd_state") == 0:
-            self.lcd_off()
-            return
-        # EventMesh.publish("system_sleep_rest")#防止黑屏
+        # print("get_audio_state !!!!!{} {} {}\r\n".format(self.play_end,EventMesh.publish("get_audio_state"),self.play_flag))
+        if (self.play_end == 1 and EventMesh.publish("get_audio_state") == 0 ) or self.play_flag == 0: #字符串为0 或者暂停需要自动熄屏
+            # print("self.play_end!!!!!\r\n")
+            pass
+        else:
+            EventMesh.publish("system_sleep_rest")#防止黑屏
         if self.scroll_timer_count > 0:
             self.scroll_timer_count-=1
         
@@ -1603,7 +1607,7 @@ class AIScreen(Screen):#AI_GUI
         Record_read_buf = bytearray(self.Audio_buf_size)
         Record_len = self.record.stream_read(Record_read_buf, self.Audio_buf_size)
         print("record_timer_cb:{}".format(Record_len))
-        if Record_len >0:
+        if Record_len > 0:
             read_buf = bytes(Record_read_buf[:Record_len])
             self.AI_client_asr_send(read_buf)
     #获取trace_id
@@ -2093,10 +2097,13 @@ class AIScreen(Screen):#AI_GUI
                             try:
                                 if self.play_flag == 1:
                                     tmp= self.aud.playStream(3, data[0])#播放音频流
-                                    print("出:{},{}!!!".format(len(data[0]),self.AI_client_tts_data_len))
+                                    
                                     if tmp != 0:
                                         print("2playStream:error tmp:{} data len:{}!!!!!!!!!!!!".format(tmp,len(data[0])))
                                     self.AI_client_tts_data_len -=len(data[0])
+                                    if len(self.AI_client_chat_play_str) == 0: #播放完了
+                                        self.play_end = 1
+                                    print("出:{},{}!!!".format(len(data[0]),self.AI_client_tts_data_len))
                                     mem = gc.mem_free()
                                     print('1剩余内存RAM:{} KB'.format(mem / 1024))
                             except Exception as e:
index 1aa8d5d..ebe6a2d 100644 (file)
@@ -2715,7 +2715,7 @@ class getWeatherDataManager(Abstract):
         self.max_temp = msg[6]
         self.city = msg[7]
         self.no_data = msg[8]
-
+        EventMesh.publish("updata_refresh_weather")
 
 class getHrTimeManager(Abstract):
     def __init__(self):
index 24bf8a4..6f3347b 100644 (file)
@@ -6557,7 +6557,7 @@ class UIFINDScreen(Screen):
         self.meta_type = "popup"
 
     def initialization(self):
-        global FIND_screen ,findphone_img 
+        global FIND_screen
         
         if FIND_screen ==None:
             FIND_screen = lv.obj()
@@ -6583,32 +6583,38 @@ class UIFINDScreen(Screen):
 
 
             self.meta = FIND_screen
-        
+        self.aud.play(1, 1, 'U:/static/R_VOLUME_SET_1.mp3')  #播放声音
 
     def post_processor_after_initialization(self):
         utime.sleep_ms(200)#不加延时会切屏
         self.FIND_timer_count = 0
         print("self.FIND_timer_count:{}".format(self.FIND_timer_count))
         self.FIND_timer.start(2000, 1, self.FIND_timer_cb)
-        self.aud.play(1, 1, 'U:/static/R_VOLUME_SET_1.mp3')  #播放声音
+        
 
     def FIND_timer_cb(self, *args):
+        print("FIND_timer_cb!!!\r\n")
         EventMesh.publish("system_sleep_rest")
-        self.aud.play(1, 1, 'U:/static/R_VOLUME_SET_1.mp3') 
+        
         self.FIND_timer_count += 1
         if self.FIND_timer_count > 20: #120秒
             self.stop_FIND()
+            return
+        self.aud.play(1, 1, 'U:/static/R_VOLUME_SET_1.mp3') 
     
     def stop_FIND(self) :
+        self.FIND_timer_count = 0
         self.FIND_timer.stop()
-        self.aud.stop()  #播放声音
+        self.aud.stopAll()
         EventMesh.publish("return_prev_screen")
         # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def Close(self):
+        self.FIND_timer_count = 0
         print("self.FIND_timer_Close")
         self.FIND_timer.stop()
-        self.aud.stop() #播放声音
+        self.aud.stopAll()
+        print("self.FIND_timer_Close")
 
     def done_left_to_right(self):
         self.stop_FIND()
index a3ee08f..c9f38c7 100644 (file)
@@ -169,6 +169,7 @@ class WatchFace1():
     # # #表盘1
     def __init__(self,main_menu): 
         print("Watchface1:__init__")
+        EventMesh.subscribe("updata_refresh_weather",self.updata_refresh_weather)
         self.meta = Watchface1
         Watchface1.set_parent(main_menu)#设置父控件
         watchface1_long_press_event_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,1)),
@@ -241,6 +242,9 @@ class WatchFace1():
 
         weather_data = EventMesh.publish("get_weather_data")
         self.__weather(None,weather_data)
+    def updata_refresh_weather(self,event,msg):
+        weather_data = EventMesh.publish("get_weather_data")
+        self.__weather(None,weather_data)
 
     def __weather(self, event, msg):
         # print("weather_data",msg)
index a9f57a0..4b43dd3 100644 (file)
@@ -997,7 +997,7 @@ restart_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 screen_slider_1 = lv.slider(restart_screen)
 screen_slider_1.set_pos(int(4),int(55))
-screen_slider_1.set_size(120,40)
+screen_slider_1.set_size(120,26)
 screen_slider_1.set_scrollbar_mode(lv.SCROLLBAR_MODE.ON)
 screen_slider_1.set_range(0, 100)
 screen_slider_1.set_value(0, False)
@@ -1070,15 +1070,15 @@ screen_slider_1.add_style(style_screen_slider_1_main_knob_default, lv.PART.KNOB|
 
 
 screen_slider_img_bg = lv.img(restart_screen)
-screen_slider_img_bg.set_size(120,40)
-screen_slider_img_bg.set_pos(4,55)
+screen_slider_img_bg.set_size(120,26)
+screen_slider_img_bg.set_pos(5,55)
 screen_slider_img_bg.set_src("U:/static/setting_poweroff_bg.png")
 screen_slider_img_bg.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 screen_slider_img = lv.img(restart_screen)
-screen_slider_img.set_size(30,30)
-screen_slider_img.set_pos(10,65)
-screen_slider_img.set_src("U:/static/setting_power_restart.png")
+screen_slider_img.set_size(25,25)
+screen_slider_img.set_pos(6,56)
+screen_slider_img.set_src("U:/static/menu_restart.png")
 # screen_slider_img.add_flag(lv.obj.FLAG.CLICKABLE)
 screen_slider_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
 
@@ -1104,7 +1104,7 @@ class RestartScreen(Screen):
     
     def initialization(self):
         screen_slider_1.set_value(10, False)
-        screen_slider_img.set_pos(10,60)
+        screen_slider_img.set_pos(6,56)
         screen_slider_1.set_style_bg_color(lv.color_make(0x00,0x00,0x00), lv.PART.INDICATOR|lv.STATE.DEFAULT)
 
     def save_choice(self,e):
@@ -1114,35 +1114,35 @@ class RestartScreen(Screen):
         code = e.get_code()
         value_slider = screen_slider_1.get_value()
         total_len = 0+value_slider
-        if total_len >= 100-20:
-            total_len = 100-20
-        if total_len <= 10:
-            total_len = 10
+        if total_len >= 100-15:
+            total_len = 100-15
+        if total_len <= 6:
+            total_len = 6
         
-        if total_len >= 100-20:
+        if total_len >= 100-15:
             screen_slider_1.set_value(100, False)
 
         if total_len >= 20:
             if total_len > 80:
-                screen_slider_img.set_pos(total_len,60)
+                screen_slider_img.set_pos(total_len,56)
             else:
-                screen_slider_img.set_pos(total_len-5,60)
+                screen_slider_img.set_pos(total_len-5,56)
         else:
-            screen_slider_img.set_pos(total_len,60)
+            screen_slider_img.set_pos(total_len,56)
         screen_slider_1.set_style_bg_color(lv.color_make(0x80,0x80,0x80), lv.PART.INDICATOR|lv.STATE.DEFAULT)
 
         # print("RELEASED save_choice!!!!!!",code,total_len,value_slider,state_offset)
         if code == lv.EVENT.RELEASED:
             value_slider = screen_slider_1.get_value()
             # print("RELEASED save_choice1111111!!!!!!",total_len,value_slider,state_on)
-            if total_len < 100-20:
+            if total_len < 100-15:
                 screen_slider_1.set_value(10, False)
-                screen_slider_img.set_pos(10,60)
+                screen_slider_img.set_pos(6,56)
                 screen_slider_1.set_style_bg_color(lv.color_make(0x00,0x00,0x00), lv.PART.INDICATOR|lv.STATE.DEFAULT)
             else:
-                screen_slider_img.set_pos(90,60)
+                screen_slider_img.set_pos(100,56)
                 screen_slider_1.set_value(100, False)
-                self.timer.start(100,0,self.start_cb)
+                self.timer.start(50,0,self.start_cb)
                 
     def start_cb(self,*argc):
         self.confirm(0)
@@ -1279,7 +1279,7 @@ poweroff_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 poweroff_screen_slider_1 = lv.slider(poweroff_screen)
 poweroff_screen_slider_1.set_pos(int(4),int(55))
-poweroff_screen_slider_1.set_size(120,40)
+poweroff_screen_slider_1.set_size(120,26)
 poweroff_screen_slider_1.set_scrollbar_mode(lv.SCROLLBAR_MODE.ON)
 poweroff_screen_slider_1.set_range(0, 100)
 poweroff_screen_slider_1.set_value(10, False)
@@ -1305,15 +1305,15 @@ poweroff_screen_slider_1.add_style(style_screen_slider_1_main_knob_default, lv.P
 
 
 poweroff_screen_slider_img_bg = lv.img(poweroff_screen)
-poweroff_screen_slider_img_bg.set_size(120,40)
-poweroff_screen_slider_img_bg.set_pos(4,55)
+poweroff_screen_slider_img_bg.set_size(120,26)
+poweroff_screen_slider_img_bg.set_pos(5,55)
 poweroff_screen_slider_img_bg.set_src("U:/static/setting_poweroff_bg.png")
 poweroff_screen_slider_img_bg.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 poweroff_screen_slider_img = lv.img(poweroff_screen)
-poweroff_screen_slider_img.set_size(30,30)
-poweroff_screen_slider_img.set_pos(10,65)
-poweroff_screen_slider_img.set_src("U:/static/setting_poweroff.png")
+poweroff_screen_slider_img.set_size(25,25)
+poweroff_screen_slider_img.set_pos(6,56)
+poweroff_screen_slider_img.set_src("U:/static/menu_poweroff.png")
 # screen_slider_img.add_flag(lv.obj.FLAG.CLICKABLE)
 poweroff_screen_slider_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
 
@@ -1340,39 +1340,40 @@ class PoweroffScreen(Screen):
     
     def initialization(self):
         poweroff_screen_slider_1.set_value(10, False)
-        poweroff_screen_slider_img.set_pos(10,60)
+        poweroff_screen_slider_img.set_pos(6,56)
         poweroff_screen_slider_1.set_style_bg_color(lv.color_make(0x00,0x00,0x00), lv.PART.INDICATOR|lv.STATE.DEFAULT)
 
     def save_choice(self,e):
         EventMesh.publish("system_sleep_rest")#防止黑屏
         code = e.get_code()
         value_slider = poweroff_screen_slider_1.get_value()
+        # print("save_choice!!!!!!",value_slider)
         total_len = 0+value_slider
-        if total_len >= 100-20:
-            total_len = 100-20
-        if total_len <= 10:
-            total_len = 10
+        if total_len >= 100-15:
+            total_len = 100-15
+        if total_len <= 6:
+            total_len = 6
         
-        if total_len >= 100-20:
+        if total_len >= 100-15:
             poweroff_screen_slider_1.set_value(100, False)
 
         if total_len >= 20:
             if total_len > 80:
-                poweroff_screen_slider_img.set_pos(total_len,60)
+                poweroff_screen_slider_img.set_pos(total_len,56)
             else:
-                poweroff_screen_slider_img.set_pos(total_len-5,60)
+                poweroff_screen_slider_img.set_pos(total_len-5,56)
         else:
-            poweroff_screen_slider_img.set_pos(total_len,60)
+            poweroff_screen_slider_img.set_pos(total_len,56)
         poweroff_screen_slider_1.set_style_bg_color(lv.color_make(0x80,0x80,0x80), lv.PART.INDICATOR|lv.STATE.DEFAULT)
        
         if code == lv.EVENT.RELEASED:
             value_slider = poweroff_screen_slider_1.get_value()
-            if total_len < 100-20:
+            if total_len < 100-15:
                 poweroff_screen_slider_1.set_value(10, False)
-                poweroff_screen_slider_img.set_pos(10,60)
+                poweroff_screen_slider_img.set_pos(6,56)
                 poweroff_screen_slider_1.set_style_bg_color(lv.color_make(0x00,0x00,0x00), lv.PART.INDICATOR|lv.STATE.DEFAULT)
             else:
-                poweroff_screen_slider_img.set_pos(90,60)
+                poweroff_screen_slider_img.set_pos(100,56)
                 poweroff_screen_slider_1.set_value(100, False)
                 self.confirm(0) 
             pass
index bc20a8d..60e665d 100644 (file)
Binary files a/2.sdk-ZY/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/images/firmware_base_release_pack.zip and b/2.sdk-ZY/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/images/firmware_base_release_pack.zip differ
diff --git a/2.sdk-ZY/project/K01/usr/static/IMAGE_ONE_PAGE_FRIEND.png b/2.sdk-ZY/project/K01/usr/static/IMAGE_ONE_PAGE_FRIEND.png
deleted file mode 100644 (file)
index b68bc47..0000000
Binary files a/2.sdk-ZY/project/K01/usr/static/IMAGE_ONE_PAGE_FRIEND.png and /dev/null differ
diff --git a/2.sdk-ZY/project/K01/usr/static/menu_upgrade.png b/2.sdk-ZY/project/K01/usr/static/menu_upgrade.png
deleted file mode 100644 (file)
index e5b4bed..0000000
Binary files a/2.sdk-ZY/project/K01/usr/static/menu_upgrade.png and /dev/null differ
diff --git a/2.sdk-ZY/project/K01/usr/static/menustyle_select.png b/2.sdk-ZY/project/K01/usr/static/menustyle_select.png
new file mode 100644 (file)
index 0000000..4831b49
Binary files /dev/null and b/2.sdk-ZY/project/K01/usr/static/menustyle_select.png differ
diff --git a/2.sdk-ZY/project/K01/usr/static/poweroff_icon.png b/2.sdk-ZY/project/K01/usr/static/poweroff_icon.png
deleted file mode 100644 (file)
index 0c05af3..0000000
Binary files a/2.sdk-ZY/project/K01/usr/static/poweroff_icon.png and /dev/null differ
diff --git a/2.sdk-ZY/project/K01/usr/static/pp_friend01.png b/2.sdk-ZY/project/K01/usr/static/pp_friend01.png
deleted file mode 100644 (file)
index e7a58ce..0000000
Binary files a/2.sdk-ZY/project/K01/usr/static/pp_friend01.png and /dev/null differ
diff --git a/2.sdk-ZY/project/K01/usr/static/pp_friend02.png b/2.sdk-ZY/project/K01/usr/static/pp_friend02.png
deleted file mode 100644 (file)
index 72ee28e..0000000
Binary files a/2.sdk-ZY/project/K01/usr/static/pp_friend02.png and /dev/null differ
diff --git a/2.sdk-ZY/project/K01/usr/static/pp_friend03.png b/2.sdk-ZY/project/K01/usr/static/pp_friend03.png
deleted file mode 100644 (file)
index 6afe183..0000000
Binary files a/2.sdk-ZY/project/K01/usr/static/pp_friend03.png and /dev/null differ
diff --git a/2.sdk-ZY/project/K01/usr/static/pp_friend04.png b/2.sdk-ZY/project/K01/usr/static/pp_friend04.png
deleted file mode 100644 (file)
index 663cfcd..0000000
Binary files a/2.sdk-ZY/project/K01/usr/static/pp_friend04.png and /dev/null differ
diff --git a/2.sdk-ZY/project/K01/usr/static/setting_power_restart.png b/2.sdk-ZY/project/K01/usr/static/setting_power_restart.png
deleted file mode 100644 (file)
index 6bf2cca..0000000
Binary files a/2.sdk-ZY/project/K01/usr/static/setting_power_restart.png and /dev/null differ
diff --git a/2.sdk-ZY/project/K01/usr/static/setting_poweroff.png b/2.sdk-ZY/project/K01/usr/static/setting_poweroff.png
deleted file mode 100644 (file)
index 359d37b..0000000
Binary files a/2.sdk-ZY/project/K01/usr/static/setting_poweroff.png and /dev/null differ
index 16457c6..b42028a 100644 (file)
Binary files a/2.sdk-ZY/project/K01/usr/static/setting_poweroff_bg.png and b/2.sdk-ZY/project/K01/usr/static/setting_poweroff_bg.png differ
diff --git a/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/aigcdial.py b/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/aigcdial.py
new file mode 100644 (file)
index 0000000..863c481
--- /dev/null
@@ -0,0 +1,1598 @@
+import utime
+import audio
+from machine import Pin
+import osTimer
+import _thread
+from queue import Queue
+import uwebsocket
+import usys
+import EventMesh
+import constants
+import ujson
+import lvgl as lv
+import urandom
+import uhashlib
+import ubinascii
+from ui import style_font_youyuan_20,style_screen,Screen,style_img
+LCD_SIZE_H = 282
+LCD_SIZE_W = 240 
+##########################
+import uwebsocket
+import urandom
+import uhashlib
+import ubinascii
+import base64
+import request
+import ql_fs
+import usys
+import uos
+
+aigc_create_screen = lv.obj()
+aigc_create_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_create_title_screen = lv.obj(aigc_create_screen)
+aigc_create_title_screen.set_pos(0, 0)
+aigc_create_title_screen.set_size(LCD_SIZE_W, LCD_SIZE_H)
+aigc_create_title_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
+aigc_create_title_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_create_title = lv.label(aigc_create_title_screen)
+aigc_create_title.set_pos(0, 10)
+aigc_create_title.set_size(LCD_SIZE_W, 30)
+aigc_create_title.set_text("说出你想要的表盘")
+aigc_create_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_create_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_create_main_img = lv.img(aigc_create_title_screen)
+aigc_create_main_img.set_size(130,130)
+aigc_create_main_img.set_pos((LCD_SIZE_W-130)//2,40)
+aigc_create_main_img.set_src("E:/static/AI/AI_THINK001.png")
+aigc_create_main_img.add_flag(lv.obj.FLAG.CLICKABLE)
+aigc_create_main_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+ai_talk_bt = lv.btn(aigc_create_title_screen)
+ai_talk_bt.set_pos(int(5),int(210))
+ai_talk_bt.set_size(230,58)
+ai_talk_bt.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
+screen_btn_1_label = lv.label(ai_talk_bt)
+screen_btn_1_label.set_text("点击说话")
+ai_talk_bt.set_style_pad_all(0, lv.STATE.DEFAULT)
+screen_btn_1_label.align(lv.ALIGN.CENTER,0,0)
+# create style style_screen_btn_1_main_main_default
+style_screen_btn_1_main_main_default = lv.style_t()
+style_screen_btn_1_main_main_default.init()
+style_screen_btn_1_main_main_default.set_radius(30)
+style_screen_btn_1_main_main_default.set_bg_color(lv.color_make(0x37,0xbf,0x12))
+style_screen_btn_1_main_main_default.set_bg_grad_color(lv.color_make(0x37,0xbf,0x12))
+style_screen_btn_1_main_main_default.set_bg_grad_dir(lv.GRAD_DIR.NONE)
+style_screen_btn_1_main_main_default.set_bg_opa(255)
+style_screen_btn_1_main_main_default.set_border_color(lv.color_make(0x37,0xbf,0x12))
+style_screen_btn_1_main_main_default.set_border_width(0)
+style_screen_btn_1_main_main_default.set_border_opa(255)
+style_screen_btn_1_main_main_default.set_text_color(lv.color_make(0xff,0xff,0xff))
+style_screen_btn_1_main_main_default.set_text_font_v2("font_28.bin",28,0)
+style_screen_btn_1_main_main_default.set_text_align(lv.TEXT_ALIGN.CENTER)
+
+# add style for screen_btn_1
+ai_talk_bt.add_style(style_screen_btn_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT)
+
+
+# ai_talk_bt = lv.img(aigc_create_title_screen)
+# ai_talk_bt.set_size(120,25)
+# ai_talk_bt.set_pos((128-120)//2,96)
+# ai_talk_bt.set_src("U:/static/AI/ai_talk_bt.png")
+# ai_talk_bt.add_flag(lv.obj.FLAG.CLICKABLE)
+# ai_talk_bt.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# ai_talk_bt_label = lv.label(aigc_create_title_screen)
+# ai_talk_bt_label.set_text(" ")
+# ai_talk_bt_label.set_size(120, 38)
+# ai_talk_bt_label.set_pos(0,90)
+# ai_talk_bt_label.add_flag(lv.obj.FLAG.CLICKABLE)
+
+# ai_talk_bt_label2 = lv.label(ai_talk_bt)
+# ai_talk_bt_label2.set_pos(0, 4)
+# ai_talk_bt_label2.set_size(120, 33)
+# ai_talk_bt_label2.set_text("点击说话")
+# ai_talk_bt_label2.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+# ai_talk_bt_label2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+
+
+aigc_create_listen_screen = lv.obj(aigc_create_screen)
+print("aigc_create_listen_screen")
+aigc_create_listen_screen.set_pos(0, 0)
+aigc_create_listen_screen.set_size(LCD_SIZE_W, LCD_SIZE_H)
+aigc_create_listen_screen.add_flag(lv.obj.FLAG.HIDDEN)
+aigc_create_listen_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_create_listen_title = lv.label(aigc_create_listen_screen)
+aigc_create_listen_title.set_pos(0, 10)
+aigc_create_listen_title.set_size(LCD_SIZE_W, 30)
+aigc_create_listen_title.set_text("正在聆听中...")
+aigc_create_listen_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_create_listen_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_create_listen_img = lv.img(aigc_create_listen_screen)
+aigc_create_listen_img.set_size(130,130)
+aigc_create_listen_img.set_pos((LCD_SIZE_W-130)//2,40)
+aigc_create_listen_img.set_src("E:/static/AI/AI_THINK001.png")
+aigc_create_listen_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+ai_talk_listen_bt = lv.btn(aigc_create_listen_screen)
+ai_talk_listen_bt.set_pos(int(5),int(210))
+ai_talk_listen_bt.set_size(230,58)
+ai_talk_listen_bt.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
+ai_talk_bt_listen_label2 = lv.label(ai_talk_listen_bt)
+ai_talk_bt_listen_label2.set_text("30S")
+ai_talk_listen_bt.set_style_pad_all(0, lv.STATE.DEFAULT)
+ai_talk_bt_listen_label2.align(lv.ALIGN.CENTER,0,0)
+# create style style_screen_btn_1_main_main_default
+style_screen_btn_1_main_main_default = lv.style_t()
+style_screen_btn_1_main_main_default.init()
+style_screen_btn_1_main_main_default.set_radius(30)
+style_screen_btn_1_main_main_default.set_bg_color(lv.color_make(0x37,0xbf,0x12))
+style_screen_btn_1_main_main_default.set_bg_grad_color(lv.color_make(0x37,0xbf,0x12))
+style_screen_btn_1_main_main_default.set_bg_grad_dir(lv.GRAD_DIR.NONE)
+style_screen_btn_1_main_main_default.set_bg_opa(255)
+style_screen_btn_1_main_main_default.set_border_color(lv.color_make(0x37,0xbf,0x12))
+style_screen_btn_1_main_main_default.set_border_width(0)
+style_screen_btn_1_main_main_default.set_border_opa(255)
+style_screen_btn_1_main_main_default.set_text_color(lv.color_make(0xff,0xff,0xff))
+style_screen_btn_1_main_main_default.set_text_font_v2("font_28.bin",28,0)
+style_screen_btn_1_main_main_default.set_text_align(lv.TEXT_ALIGN.CENTER)
+
+# add style for screen_btn_1
+ai_talk_listen_bt.add_style(style_screen_btn_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT)
+
+
+# ai_talk_listen_bt = lv.img(aigc_create_listen_screen)
+# ai_talk_listen_bt.set_size(120,25)
+# ai_talk_listen_bt.set_pos((128-120)//2,96)
+# ai_talk_listen_bt.set_src("U:/static/AI/ai_talk_bt.png")
+# ai_talk_listen_bt.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# ai_talk_bt_listen_label = lv.label(aigc_create_listen_screen)
+# ai_talk_bt_listen_label.set_text(" ")
+# ai_talk_bt_listen_label.set_size(120, 38)
+# ai_talk_bt_listen_label.set_pos(0,90)
+# ai_talk_bt_listen_label.add_flag(lv.obj.FLAG.CLICKABLE)
+
+# ai_talk_bt_listen_label2 = lv.label(ai_talk_listen_bt)
+# ai_talk_bt_listen_label2.set_pos(0, 4)
+# ai_talk_bt_listen_label2.set_size(120, 33)
+# ai_talk_bt_listen_label2.set_text("30s")
+# ai_talk_bt_listen_label2.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+# ai_talk_bt_listen_label2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_success_text_screen = lv.obj(aigc_create_screen)
+print("aigc_success_text_screen")
+aigc_success_text_screen.set_pos(0, 0)
+aigc_success_text_screen.set_size(LCD_SIZE_W, LCD_SIZE_H)
+aigc_success_text_screen.add_flag(lv.obj.FLAG.HIDDEN)
+aigc_success_text_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_success_text_screen_title = lv.label(aigc_success_text_screen)
+aigc_success_text_screen_title.set_pos(0, 40)
+aigc_success_text_screen_title.set_size(LCD_SIZE_W, 40)
+aigc_success_text_screen_title.set_text(" ")
+aigc_success_text_screen_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_success_text_screen_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_success_text_screen_title1 = lv.label(aigc_success_text_screen)
+aigc_success_text_screen_title1.set_pos(0, 160)
+aigc_success_text_screen_title1.set_size(LCD_SIZE_W, 20)
+aigc_success_text_screen_title1.set_text("是否生成表盘?")
+aigc_success_text_screen_title1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_success_text_screen_title1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_success_text_screen_comfir_btn = lv.label(aigc_success_text_screen)
+aigc_success_text_screen_comfir_btn.set_pos(0, 244)
+aigc_success_text_screen_comfir_btn.set_size(LCD_SIZE_W//2, 38)
+aigc_success_text_screen_comfir_btn.set_text(" ")
+aigc_success_text_screen_comfir_btn.add_flag(lv.obj.FLAG.CLICKABLE)
+aigc_success_text_screen_comfir_btn.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_success_text_screen_comfir_btn.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_success_text_screen_comfir = lv.label(aigc_success_text_screen)
+aigc_success_text_screen_comfir.set_pos(0, 240)
+aigc_success_text_screen_comfir.set_size(LCD_SIZE_W//2,33)
+aigc_success_text_screen_comfir.set_text("确定")
+aigc_success_text_screen_comfir.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_success_text_screen_comfir.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_success_text_screen_can_btn = lv.label(aigc_success_text_screen)
+aigc_success_text_screen_can_btn.set_pos(LCD_SIZE_W//2, 244)
+aigc_success_text_screen_can_btn.set_size(LCD_SIZE_W//2, 38)
+aigc_success_text_screen_can_btn.set_text(" ")
+aigc_success_text_screen_can_btn.add_flag(lv.obj.FLAG.CLICKABLE)
+aigc_success_text_screen_can_btn.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_success_text_screen_can_btn.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_success_text_screen_can = lv.label(aigc_success_text_screen)
+aigc_success_text_screen_can.set_pos(LCD_SIZE_W//2, 240)
+aigc_success_text_screen_can.set_size(LCD_SIZE_W//2, 33)
+aigc_success_text_screen_can.set_text("取消")
+aigc_success_text_screen_can.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_success_text_screen_can.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+
+aigc_create_img_dial_screen = lv.obj(aigc_create_screen)
+print("aigc_create_img_dial_screen")
+aigc_create_img_dial_screen.set_pos(0, 0)
+aigc_create_img_dial_screen.set_size(LCD_SIZE_W, LCD_SIZE_H)
+aigc_create_img_dial_screen.add_flag(lv.obj.FLAG.HIDDEN)
+aigc_create_img_dial_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_create_ing_img = lv.img(aigc_create_img_dial_screen)
+aigc_create_ing_img.set_size(130,130)
+aigc_create_ing_img.set_pos((LCD_SIZE_W-130)//2,40)
+aigc_create_ing_img.set_src("E:/static/AI/AI_THINK001.png")
+aigc_create_ing_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_create_img_dial_title1 = lv.label(aigc_create_img_dial_screen)
+aigc_create_img_dial_title1.set_pos(0, 5)
+aigc_create_img_dial_title1.set_size(LCD_SIZE_W, 20)
+aigc_create_img_dial_title1.set_text(" ")
+aigc_create_img_dial_title1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_create_img_dial_title1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_create_img_dial_can_btn = lv.btn(aigc_create_img_dial_screen)
+aigc_create_img_dial_can_btn.set_pos(int(5),int(210))
+aigc_create_img_dial_can_btn.set_size(230,58)
+aigc_create_img_dial_can_btn.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
+al_no_sim_popup_screen_icon1_label = lv.label(aigc_create_img_dial_can_btn)
+al_no_sim_popup_screen_icon1_label.set_text("取消")
+aigc_create_img_dial_can_btn.set_style_pad_all(0, lv.STATE.DEFAULT)
+al_no_sim_popup_screen_icon1_label.align(lv.ALIGN.CENTER,0,0)
+# create style style_screen_btn_1_main_main_default
+al_no_sim_popup_screen_icon1_label_default = lv.style_t()
+al_no_sim_popup_screen_icon1_label_default.init()
+al_no_sim_popup_screen_icon1_label_default.set_radius(30)
+al_no_sim_popup_screen_icon1_label_default.set_bg_color(lv.color_make(0x19,0x19,0x19))
+al_no_sim_popup_screen_icon1_label_default.set_bg_grad_color(lv.color_make(0x19,0x19,0x19))
+al_no_sim_popup_screen_icon1_label_default.set_bg_grad_dir(lv.GRAD_DIR.NONE)
+al_no_sim_popup_screen_icon1_label_default.set_bg_opa(255)
+al_no_sim_popup_screen_icon1_label_default.set_border_color(lv.color_make(0x19,0x19,0x19))
+al_no_sim_popup_screen_icon1_label_default.set_border_width(0)
+al_no_sim_popup_screen_icon1_label_default.set_border_opa(255)
+al_no_sim_popup_screen_icon1_label_default.set_text_color(lv.color_make(253, 82, 19))
+al_no_sim_popup_screen_icon1_label_default.set_text_font_v2("font_28.bin",28,0)
+al_no_sim_popup_screen_icon1_label_default.set_text_align(lv.TEXT_ALIGN.CENTER)
+
+# add style for screen_btn_1
+aigc_create_img_dial_can_btn.add_style(al_no_sim_popup_screen_icon1_label_default, lv.PART.MAIN|lv.STATE.DEFAULT)
+
+# aigc_create_img_dial_can_btn = lv.img(aigc_create_img_dial_screen)
+# aigc_create_img_dial_can_btn.set_size(120,25)
+# aigc_create_img_dial_can_btn.set_pos((LCD_SIZE_W-120)//2,95)
+# aigc_create_img_dial_can_btn.set_src("U:/static/AI/ai_confirm_bt.png")
+# aigc_create_img_dial_can_btn.add_flag(lv.obj.FLAG.CLICKABLE)
+# aigc_create_img_dial_can_btn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+# style_font_youyuan_aigc_red = lv.style_t()
+# style_font_youyuan_aigc_red.init()
+# style_font_youyuan_aigc_red.set_text_color(lv.color_make(253, 82, 19))
+# style_font_youyuan_aigc_red.set_text_font(lv.K01_font_16_ALL)
+
+# aigc_create_img_dial_can_btn_title4 = lv.label(aigc_create_img_dial_can_btn)
+# aigc_create_img_dial_can_btn_title4.set_pos(0, 3)
+# aigc_create_img_dial_can_btn_title4.set_size(120, 33)
+# aigc_create_img_dial_can_btn_title4.set_text("取消")
+# aigc_create_img_dial_can_btn_title4.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+# aigc_create_img_dial_can_btn_title4.add_style(style_font_youyuan_aigc_red, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+
+
+aigc_create_img_dial_title = lv.label(aigc_create_img_dial_screen)
+aigc_create_img_dial_title.set_pos(0, 10)
+aigc_create_img_dial_title.set_size(LCD_SIZE_W, 30)
+aigc_create_img_dial_title.set_text("表盘制作中...")
+aigc_create_img_dial_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_create_img_dial_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+
+
+aigc_create_show_new_img_dial_screen = lv.obj(aigc_create_screen)
+print("aigc_create_show_new_img_dial_screen")
+aigc_create_show_new_img_dial_screen.set_pos(0, 0)
+aigc_create_show_new_img_dial_screen.set_size(LCD_SIZE_W, LCD_SIZE_H)
+aigc_create_show_new_img_dial_screen.add_flag(lv.obj.FLAG.HIDDEN)
+aigc_create_show_new_img_dial_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+style_watchface_img_default = lv.style_t()
+style_watchface_img_default.init()
+style_watchface_img_default.set_img_recolor(lv.color_make(0xff,0xff,0xff))
+style_watchface_img_default.set_img_recolor_opa(0)
+style_watchface_img_default.set_img_opa(255)
+
+aigc_create_show_new_img = lv.img(aigc_create_show_new_img_dial_screen)
+aigc_create_show_new_img.set_size(LCD_SIZE_W,LCD_SIZE_H)
+aigc_create_show_new_img.set_pos(0,0)
+aigc_create_show_new_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+style_font_red_20 = lv.style_t()
+style_font_red_20.init()
+style_font_red_20.set_text_color(lv.color_make(0xff, 0, 0))
+#style_font_red_20.set_text_font_v2("font_28.bin",28,0)
+style_font_red_20.set_text_font_v2("font_28.bin",28,0)
+
+
+aigc_create_show_new_img_title_btn = lv.label(aigc_create_show_new_img_dial_screen)
+aigc_create_show_new_img_title_btn.set_pos(0, 244)
+aigc_create_show_new_img_title_btn.set_size(LCD_SIZE_W//2, 38)
+aigc_create_show_new_img_title_btn.set_text(" ")
+aigc_create_show_new_img_title_btn.add_flag(lv.obj.FLAG.CLICKABLE)
+aigc_create_show_new_img_title_btn.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_create_show_new_img_title_btn.add_style(style_font_red_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_create_show_new_img_title = lv.label(aigc_create_show_new_img_dial_screen)
+aigc_create_show_new_img_title.set_pos(0, 240)
+aigc_create_show_new_img_title.set_size(LCD_SIZE_W//2, 33)
+aigc_create_show_new_img_title.set_text("确定")
+aigc_create_show_new_img_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_create_show_new_img_title.add_style(style_font_red_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_create_show_new_img_title1_btn = lv.label(aigc_create_show_new_img_dial_screen)
+aigc_create_show_new_img_title1_btn.set_pos(LCD_SIZE_W//2, 244)
+aigc_create_show_new_img_title1_btn.set_size(LCD_SIZE_W//2, 38)
+aigc_create_show_new_img_title1_btn.add_flag(lv.obj.FLAG.CLICKABLE)
+aigc_create_show_new_img_title1_btn.set_text(" ")
+aigc_create_show_new_img_title1_btn.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_create_show_new_img_title1_btn.add_style(style_font_red_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_create_show_new_img_title1 = lv.label(aigc_create_show_new_img_dial_screen)
+aigc_create_show_new_img_title1.set_pos(64, 240)
+aigc_create_show_new_img_title1.set_size(64, 33)
+aigc_create_show_new_img_title1.set_text("取消")
+aigc_create_show_new_img_title1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_create_show_new_img_title1.add_style(style_font_red_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_record_faile_screen = lv.obj(aigc_create_screen)
+print("aigc_record_faile_screen")
+aigc_record_faile_screen.set_pos(0, 0)
+aigc_record_faile_screen.set_size(LCD_SIZE_W, LCD_SIZE_H)
+aigc_record_faile_screen.add_flag(lv.obj.FLAG.HIDDEN)
+aigc_record_faile_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_record_faile_screen_title = lv.label(aigc_record_faile_screen)
+aigc_record_faile_screen_title.set_pos(0, 30)
+aigc_record_faile_screen_title.set_size(LCD_SIZE_W, 50)
+aigc_record_faile_screen_title.set_text("录音失败请重试")
+aigc_record_faile_screen_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_record_faile_screen_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_record_faile_screen_comfir_btn = lv.label(aigc_record_faile_screen)
+aigc_record_faile_screen_comfir_btn.set_pos(0, 244)
+aigc_record_faile_screen_comfir_btn.set_size(LCD_SIZE_W//2, 38)
+aigc_record_faile_screen_comfir_btn.set_text(" ")
+aigc_record_faile_screen_comfir_btn.add_flag(lv.obj.FLAG.CLICKABLE)
+aigc_record_faile_screen_comfir_btn.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_record_faile_screen_comfir_btn.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_record_faile_screen_comfir = lv.label(aigc_record_faile_screen)
+aigc_record_faile_screen_comfir.set_pos(0, 240)
+aigc_record_faile_screen_comfir.set_size(LCD_SIZE_W//2, 33)
+aigc_record_faile_screen_comfir.set_text("确定")
+aigc_record_faile_screen_comfir.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_record_faile_screen_comfir.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_record_faile_screen_can_btn = lv.label(aigc_record_faile_screen)
+aigc_record_faile_screen_can_btn.set_pos(LCD_SIZE_W//2, 244)
+aigc_record_faile_screen_can_btn.set_size(LCD_SIZE_W//2, 38)
+aigc_record_faile_screen_can_btn.add_flag(lv.obj.FLAG.CLICKABLE)
+aigc_record_faile_screen_can_btn.set_text(" ")
+aigc_record_faile_screen_can_btn.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_record_faile_screen_can_btn.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_record_faile_screen_can = lv.label(aigc_record_faile_screen)
+aigc_record_faile_screen_can.set_pos(LCD_SIZE_W//2, 240)
+aigc_record_faile_screen_can.set_size(LCD_SIZE_W//2, 33)
+aigc_record_faile_screen_can.set_text("取消")
+aigc_record_faile_screen_can.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_record_faile_screen_can.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+
+class CreateScreen(Screen):#aigc表盘生成
+    NAME = "aigc_create"
+    
+    def __init__(self):
+        super().__init__()
+        self.meta = aigc_create_screen
+        self.timer = osTimer()
+        self.timer_test = osTimer()
+        self.aigc_defaultStyle = "anime" #默认是日漫系都风格表盘
+        read_data = EventMesh.publish("get_storage_config","dial_style") #获取默认的表盘风格
+        if read_data != None:
+            self.aigc_defaultStyle = read_data
+        self.Audio_buf_size = 8*1024
+        self.record_timer = osTimer()
+        self.timerOut = osTimer()
+        self.record = audio.Record()
+        #self.record.end_callback(self.record_callback)
+        self.record.gain_set(4,10)
+        self.aud = audio.Audio(0)
+        self.audio_play_state = 1 #音频播放完状态
+        
+        self.TTS_PRO_TYPE = 0 #TTS协议类型,=0:用长文本合成接口,=1用音频流合成接口
+        self.AI_audio_queue_thread_id = 0
+        self.AI_send_data_queue_thread_id = 0
+        self.AI_client_asr_recv_id = 0
+        self.AI_client_asr = None
+        self.AI_client_asr_isconnect = 0 #是否连接成功
+        self.AI_client_asr_num = 0
+
+        self.tts_time_count = 0
+        self.tts_time_outcount = 0
+        self.timer_out_count = 0
+        self.img_show_count = 0
+        self.img_show_count_tmp = 0
+        self.img_show_count_flag = 0
+        self.tts_data_tmp = bytes()
+        self.press_state = 0
+        self.AI_label_answer = ""
+        self.sbuject_text = ""
+        self.AI_label_str = ""
+        self.refresh_texttimer = osTimer()
+        self.AI_listen_text = ""
+        self.AI_listen_end = 0 #语音识别完成
+        self.refresh_count = 0
+        self.AI_send_data_queue = Queue(100)
+        self.AI_audio_queue = Queue(100)
+        self.countDown = 0
+        self.count = 0
+        self.mode = 0
+        self.img_success_init = 0
+        self.img_name = 0
+        self.task_id = ""
+        ai_talk_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,1)),lv.EVENT.SHORT_CLICKED, None)
+        # ai_talk_bt_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,1)),lv.EVENT.SHORT_CLICKED, None)
+        ai_talk_listen_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,2)),lv.EVENT.SHORT_CLICKED, None)
+        # ai_talk_bt_listen_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,2)),lv.EVENT.SHORT_CLICKED, None)
+        aigc_create_show_new_img_title_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,3)),lv.EVENT.SHORT_CLICKED, None)
+        aigc_create_show_new_img_title1_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,4)),lv.EVENT.SHORT_CLICKED, None)
+        aigc_record_faile_screen_comfir_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,5)),lv.EVENT.SHORT_CLICKED, None)
+        aigc_record_faile_screen_can_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,6)),lv.EVENT.SHORT_CLICKED, None)
+        aigc_success_text_screen_comfir_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,7)),lv.EVENT.SHORT_CLICKED, None)
+        aigc_success_text_screen_can_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,8)),lv.EVENT.SHORT_CLICKED, None)
+        aigc_create_img_dial_can_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,9)),lv.EVENT.SHORT_CLICKED, None)
+    # {'data': [{'code': 'auto', 'name': '默认', 'url': ''}, {'code': '3d', 'name': '3D卡通', 'url': ''}, {'code': 'anime', 'name': '⽇漫⻛', 'url': ''}, {'code': 'oil', 'name': '油画', 'url': ''}, {'code': 'watercolor', 'name': '水彩', 'url': ''}, {'code': 'sketch', 'name': '素描', 'url': ''}, {'code': 'chinese-painting', 'name': '中国画', 'url': ''}, {'code': 'flat-illustration', 'name': '扁平插画', 'url': ''}], 'status': 0}
+        EventMesh.subscribe("publish_start_event",self.publish_start_event)
+
+    def initialization(self):
+        aigc_create_listen_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_img_dial_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_record_faile_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_show_new_img_dial_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_success_text_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_title_screen.clear_flag(lv.obj.FLAG.HIDDEN)
+        self.countDown = 30
+        self.aud.setVolume(11)#设置最大声录音
+        print("self.meta_info:{} {}\r\n".format(self.meta_info,type(self.meta_info)))
+    def publish_start_event(self,event,msg):
+        self.start_listen_data()
+
+    def AI_init(self):
+        # self.AI_audio_queue_thread_id = _thread.start_new_thread(self.AI_audio_queue_thread, ())
+        self.AI_send_data_queue_thread_id = _thread.start_new_thread(self.AI_send_data_queue_thread, ())
+
+    def button_cb(self,e,msg):
+        code = e.get_code()
+        indev = lv.indev_get_act()
+        lv.indev_t.wait_release(indev)
+        dir = lv.indev_t.get_gesture_dir(indev)
+        if code == lv.EVENT.GESTURE:
+            if dir == lv.DIR.RIGHT:
+                pass
+                # EventMesh.publish("load_screen", {"screen": "main_menu"})
+        elif  code == lv.EVENT.SHORT_CLICKED:
+            if msg == 1:
+                EventMesh.publish("system_sleep_rest")#防止黑屏
+                self.start_listen_data()
+            elif msg == 2:
+                pass
+            elif msg == 3: #确定
+                # check_txt = ql_fs.path_exists("/usr/static/storage_file/aigc_dial.jpg")
+                # if check_txt == True :
+                #     uos.remove("/usr/static/storage_file/aigc_dial.jpg")
+                check_txt = ql_fs.path_exists("/ext/static/storage_file/{}.jpg".format(self.img_name))
+                if check_txt == True:
+                    uos.rename("/ext/static/storage_file/{}.jpg".format(self.img_name), "/ext/static/storage_file/aigc_dial.jpg") #将临时文件重命名为新的作为显示
+                check_txt = ql_fs.path_exists("/ext/static/storage_file/{}.jpg".format(self.img_name))
+                # if check_txt == True :
+                #     uos.remove("/usr/static/storage_file/{}.jpg".format(self.img_name))
+                EventMesh.publish("system_sleep_rest")#防止黑屏
+                EventMesh.publish("update_dial_file")
+                EventMesh.publish("watch_top_show")
+                EventMesh.publish("load_screen", {"screen": "main_menu"})
+                pass
+            elif msg == 4:#取消移除文件
+                
+                # check_txt = ql_fs.path_exists("/usr/static/storage_file/{}.jpg".format(self.img_name))
+                # if check_txt == True :
+                #     uos.remove("/usr/static/storage_file/{}.jpg".format(self.img_name))
+                EventMesh.publish("system_sleep_rest")#防止黑屏
+                self.start_listen_data()
+            elif msg == 5: #确定 回到开始录音界面
+                EventMesh.publish("system_sleep_rest")#防止黑屏
+                self.start_listen_data() 
+            elif msg == 6: #取消回到主页面
+                EventMesh.publish("system_sleep_rest")#防止黑屏
+                EventMesh.publish("load_screen", {"screen": "main_menu"})
+            
+            elif msg == 7: #确定生成表盘
+                EventMesh.publish("system_sleep_rest")#防止黑屏
+                self.create_img_cb(self.sbuject_text) 
+            elif msg == 8: #取消生成表盘 不是想要的表盘文字重新录音
+                
+                EventMesh.publish("system_sleep_rest")#防止黑屏
+                self.start_listen_data()
+            elif msg == 9:
+                self.timerOut.start(20,0,self.timout_close)
+                self.initialization()
+
+    
+    def start_listen_data(self): #开始录音
+        aigc_create_title_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_show_new_img_dial_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_img_dial_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_success_text_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_record_faile_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_listen_screen.clear_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_listen_img.set_src("E:/static/AI/AI_THINK001.png")
+       
+        try:
+            print("talking2")
+            self.close_data()
+            self.AI_init() 
+            print("talking3")
+        except Exception as e:
+            usys.print_exception(e)  
+        
+        self.aud.setVolume(11)#设置最大声录音
+        self.record.stream_start(audio.Record.AMRNB, 8000, 60)
+        self.record_timer.start(1*1000,1,self.record_timer_cb)
+        self.countDown = 30
+        self.count = 0
+        self.img_show_count = 0
+        self.img_show_count_tmp = 0
+        ai_talk_bt_listen_label2.set_text("{}S".format(self.countDown))
+        EventMesh.publish("system_sleep_rest")#防止黑屏
+        self.timer.start(500,1,self.update_label_show)
+        self.press_state = 1
+        self.AI_client_asr_start()
+        
+    def record_faile(self,msg):
+        self.count = 0
+        EventMesh.publish("system_sleep_rest")#防止黑屏
+        self.timer.start(200,0,self.record_failecb)
+        self.mode = msg
+
+    def record_failecb(self,*argc):
+        EventMesh.publish("system_sleep_rest")#防止黑屏
+        self.close_data()
+        self.timer.stop()
+        aigc_create_title_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_listen_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_show_new_img_dial_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_img_dial_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_success_text_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_record_faile_screen.clear_flag(lv.obj.FLAG.HIDDEN)
+        if self.mode == 1: #录音失败请重试
+            aigc_record_faile_screen_title.set_text("录音失败请重试")
+        elif self.mode == 2: #网络异常请重试
+            aigc_record_faile_screen_title.set_text("网络异常请重试")
+        elif self.mode == 3:
+            aigc_record_faile_screen_title.set_text("表盘生成失败请重试")
+        
+    
+
+    def update_label_show(self,*argc):
+        EventMesh.publish("publish_message_event_ui",{"func":self.update_label_showcb,"data":0})
+        
+    def update_label_showcb(self,data): #刷新图片和文字
+        EventMesh.publish("system_sleep_rest")#防止黑屏
+        self.countDown-=1
+        if self.countDown <= 0: #录音失败
+            self.record_faile(1) #录音失败请重试
+            return
+        
+        ai_talk_bt_listen_label2.set_text("{}S".format(self.countDown))
+        self.count+=1
+        if self.count > 3:
+            self.count = 1
+        if self.count == 1:
+            aigc_create_listen_title.set_text("正在聆听中.")
+            pass
+        elif self.count == 2:
+            aigc_create_listen_title.set_text("正在聆听中..")
+            pass
+        else:
+            aigc_create_listen_title.set_text("正在聆听中...")
+            pass
+
+        if self.img_show_count > 10:
+            self.img_show_count_tmp+=1
+            self.img_show_count_tmp = self.img_show_count-self.img_show_count_tmp
+            if self.img_show_count_tmp >= 10:
+                self.img_show_count = 1
+            aigc_create_listen_img.set_src("E:/static/AI/AI_THINK{}.png".format("%03d"%(self.img_show_count_tmp)))
+        else:
+            self.img_show_count+=1
+            self.img_show_count_tmp = 0
+            aigc_create_listen_img.set_src("E:/static/AI/AI_THINK{}.png".format("%03d"%(self.img_show_count)))
+        pass
+    def stop_record_text(self,msg): #停止录音有ASR返回
+        self.sbuject_text = ""
+        self.sbuject_text = str(msg)
+        print("stop_record_text!!!!\r\n")
+        self.record.stop()#关闭录音
+        self.record_timer.stop()#关闭定时器
+        self.timer_out_count = 0
+        self.timer.stop() 
+        self.AI_send_data_queue.clear()
+        try:
+            self.websocket_deconnect_asr()
+        except Exception as e:
+            usys.print_exception(e)
+        self.timerOut.start(20,0,self.timout_close) 
+        aigc_create_title_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_listen_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_show_new_img_dial_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_record_faile_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_img_dial_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_success_text_screen_title.set_text(msg)
+        aigc_success_text_screen.clear_flag(lv.obj.FLAG.HIDDEN)
+    def timout_close(self,*argc):
+        self.close_data()
+        self.timer.start(500,1,self.lcd_update)
+        pass
+
+    def create_img_cb(self,msg):
+        self.timer.stop()
+        aigc_create_title_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_listen_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_show_new_img_dial_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_record_faile_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_success_text_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_img_dial_screen.clear_flag(lv.obj.FLAG.HIDDEN)
+        # aigc_create_img_dial_title1.set_text("{}".format(msg))
+        aigc_create_ing_img.set_src("E:/static/AI/AI_THINK001.png")
+        aigc_create_img_dial_title.set_text("表盘制作中...")
+        gresult = 0
+        self.task_id = ""
+        url = "http://118.145.158.207/aigc/create-image" 
+        data_tmp ={
+            "subject": msg, 
+            "type": 0, #0 文生图
+            "algorithm": self.aigc_defaultStyle #表盘风格 
+        }
+        print("url {} data_tmp:{}\r\n".format(url,data_tmp))
+        try:
+            response = request.post(url,data = ujson.dumps(data_tmp))
+            if response.status_code == 200:
+                result = response.json()
+                print(result)
+                if "status" in result:
+                    status = result["status"]
+                    if status == 0:
+                        if "data" in result:
+                            data = result["data"]
+                            if "task_id" in data:
+                                if len(data["task_id"]) != 0:
+                                    self.task_id = data["task_id"]
+                                    gresult = 1
+                                # else:
+                                #     self.record_faile(2) 
+                                #     return
+            else: #网络异常 请重试 连接出错
+                pass
+                # self.record_faile(2) 
+                # return
+                
+        except Exception as e:
+            usys.print_exception(e) 
+            print("connect error!!!!\r\n")
+            # self.record_faile(2)
+            return
+        if gresult == 0:
+            self.record_faile(2)
+            return
+        print("create_img_cb!!!!!!!!!!1111111\r\n")
+        self.count = 0
+        self.img_show_count =0
+        self.img_show_count_tmp = 0
+        self.img_success_init = 0
+        
+        self.timer.start(500,1,self.get_img_result)
+
+        pass
+    def get_img_result(self,*argc):
+        EventMesh.publish("publish_message_event_ui",{"func":self.get_img_resultcb,"data":0})
+
+    def get_img_resultcb(self,data):
+
+        gresult = 0
+        EventMesh.publish("system_sleep_rest")#防止黑屏
+        url = "http://118.145.158.207/aigc/get-result" #一秒获取返回的结果
+        data_tmp = {
+            "task_id":self.task_id,
+            "bit_depth": 32, #位数 8 16 24 32
+            "compression_quality":80, #压缩率80
+            "format":"jpg", #图片格式 支持png jepg jpg
+            "width": 128, #分辨率的宽度 最大是512
+            "height":128 #分辨率的高度 最大是512
+        }
+        try:
+            response = request.post(url,data = ujson.dumps(data_tmp))
+            if response.status_code == 200:
+                result = response.json()
+                if "status" in result:
+                    status = result["status"]
+                    if status == 0:
+                        if "data" in result:
+                            data = result["data"]
+                            # print("data break{}\r\n".format(data))
+                            if "status" in data:
+                                state = data["status"]
+                                if state == "SUCCEEDED": #生成图片成功标识
+                                    self.timer.stop()
+                                    data_bmp = str(result["data"]["result"])
+                                    # print("data_bmp  :{}\r\n".format(data_bmp))
+                                    data = data_bmp.split(",")[1]
+                                    self.dial_create_success(data)
+                    else:
+                        self.record_faile(2) 
+                        return
+            else:
+                self.record_faile(2) 
+                return
+        
+        except Exception as e:
+            usys.print_exception(e) 
+            self.record_faile(2) 
+            return
+ 
+        self.count+=1
+        if self.count > 3:
+            self.count = 1
+        if self.count == 1:
+            aigc_create_img_dial_title.set_text("表盘制作中.")
+        elif self.count == 2:
+            aigc_create_img_dial_title.set_text("表盘制作中..")
+            pass
+        else:
+            aigc_create_img_dial_title.set_text("表盘制作中...")
+            pass
+        if self.img_show_count > 10:
+            self.img_show_count_tmp+=1
+            self.img_show_count_tmp = self.img_show_count-self.img_show_count_tmp
+            if self.img_show_count_tmp >= 10:
+                self.img_show_count = 1
+            aigc_create_ing_img.set_src("E:/static/AI/AI_THINK{}.png".format("%03d"%(self.img_show_count_tmp)))
+        else:
+            self.img_show_count+=1
+            self.img_show_count_tmp = 0
+            aigc_create_ing_img.set_src("E:/static/AI/AI_THINK{}.png".format("%03d"%(self.img_show_count)))
+        
+    def dial_create_success(self,data):  #生产表盘成功
+        if self.img_success_init == 1:
+            return
+        self.img_success_init = 1
+        # EventMesh.publish("load_screen", {"screen": "aigc_img","meta":data})
+        # return
+        
+        self.close_data()
+        self.timer.start(500,1,self.lcd_update)
+        binary_data = base64.b64decode(data)
+        check_txt = ql_fs.path_exists("/ext/static/storage_file/{}.jpg".format(str(self.img_name)))
+        # if check_txt == True :
+        #     uos.remove("/usr/static/storage_file/{}.jpg".format(str(self.img_name)))
+        # self.img_name+=1
+        # if self.img_name >= 2:
+        #     self.img_name = 0
+        print("self.img_name:{}\r\n".format(self.img_name))
+
+        check_txt = ql_fs.path_exists("/ext/static/storage_file/{}.jpg".format(str(self.img_name)))
+        print("check_txt:{} data:{}\r\n".format(check_txt,data))
+        path = "/ext/static/storage_file/{}.jpg".format(str(self.img_name))
+        try:
+            try:
+                # with open(path,"w+") as fd:
+                #     fd.write(binary_data)
+                fd = open(path,"w+")
+                fd.write(binary_data)
+                
+                fd.close()
+                print(binary_data_read)
+                fd = open(path,"r")
+                binary_data_read = fd.read()
+                print(binary_data_read)
+                fd.close()
+                aigc_create_title_screen.add_flag(lv.obj.FLAG.HIDDEN)
+                aigc_record_faile_screen.add_flag(lv.obj.FLAG.HIDDEN)
+                aigc_create_listen_screen.add_flag(lv.obj.FLAG.HIDDEN)
+                aigc_success_text_screen.add_flag(lv.obj.FLAG.HIDDEN)
+                
+                check_txt = ql_fs.path_exists("/ext/static/storage_file/{}.jpg".format(str(self.img_name))) #生成临时的图片文件
+                if check_txt == True :
+                    print("check_txt111111:{}\r\n".format(check_txt))
+                    #uos.rename()
+                    aigc_create_show_new_img.set_src("E:/static/AI_MAIN_ICON.png")
+                    aigc_create_show_new_img.set_src("E:/static/storage_file/{}.jpg".format(str(self.img_name)))
+                    aigc_create_img_dial_screen.add_flag(lv.obj.FLAG.HIDDEN)
+                    aigc_create_show_new_img_dial_screen.clear_flag(lv.obj.FLAG.HIDDEN)
+                    
+            except Exception as e:
+                #表盘生产失败
+                print("表盘生产失败!!!!!\r\n")
+                self.record_faile(3)
+                return
+        except Exception as e:
+            #表盘生产失败
+            self.record_faile(3)
+    def timer_out_show_img(self,*argc):
+        aigc_create_title_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_record_faile_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_create_listen_screen.add_flag(lv.obj.FLAG.HIDDEN)
+        aigc_success_text_screen.add_flag(lv.obj.FLAG.HIDDEN)
+
+        check_txt = ql_fs.path_exists("/ext/static/storage_file/aigc_dial_tmp.jpg") #生成临时的图片文件
+        if check_txt == True :
+            aigc_create_img_dial_screen.add_flag(lv.obj.FLAG.HIDDEN)
+            aigc_create_show_new_img.set_src("E:/static/storage_file/aigc_dial_tmp.jpg")
+            aigc_create_show_new_img_dial_screen.clear_flag(lv.obj.FLAG.HIDDEN)
+            
+        self.timer.start(500,1,self.lcd_update)
+
+    def lcd_update(self,*argc):  
+        EventMesh.publish("system_sleep_rest")#防止黑屏
+        
+            
+    #定时器
+    def record_timer_cb(self,*argc):
+        EventMesh.publish("system_sleep_rest")#防止黑屏
+        Record_read_buf = bytearray(self.Audio_buf_size)
+        Record_len = self.record.stream_read(Record_read_buf, self.Audio_buf_size)
+        print("record_timer_cb:{}".format(Record_len))
+        if Record_len > 0:
+            read_buf = bytes(Record_read_buf[:Record_len])
+            self.AI_client_asr_send(read_buf)
+    #获取trace_id
+    def get_trace_id(self):
+        t = utime.mktime(utime.localtime())
+        t = t*1000+urandom.randint(0, 1000)
+        md5_data = "{}".format(t)#md5签名
+        sign_data = ""
+        hash_obj = uhashlib.md5(md5_data)
+        res = hash_obj.digest()
+
+        # 转成十六进制表示
+        sign_data = ubinascii.hexlify(res)
+        sign_data = sign_data.decode('ascii')
+        return sign_data
+#####################################################
+    #语音转文字链路
+    def websocket_connect_asr(self):
+        print("websocket_connect_asr:{} {}!!!!!!!!!!!!!!!!!!!!".format(self.AI_client_asr_isconnect,self.AI_client_asr_recv_id))
+        try:
+            self.websocket_deconnect_asr()#先断一次,预防出错
+        except Exception as e:
+            usys.print_exception(e)   
+            self.record_faile(2)
+            return
+        try:
+            self.AI_client_asr = uwebsocket.Client.connect('ws://118.145.158.207:80/asr/ws', debug=False)
+        except Exception as e: #网络连接异常
+            usys.print_exception(e)
+            self.record_faile(2)
+            return
+        # 线程接收数据
+        if self.AI_client_asr_recv_id != 0:
+            try:
+                _thread.stop_thread(self.AI_client_asr_recv_id)
+            except Exception as e:
+                usys.print_exception(e)
+            self.AI_client_asr_recv_id = 0
+        self.AI_client_asr_recv_id = _thread.start_new_thread(self.AI_client_asr_recv, (self.AI_client_asr,))
+        self.AI_client_asr_isconnect = 1
+
+    def websocket_deconnect_asr(self):
+        if self.AI_client_asr_isconnect == 1:
+            self.AI_client_asr_isconnect = 0
+            self.AI_client_asr.close()
+    def AI_client_asr_send(self,data_bytes):
+        #self.AI_client_asr.send(data_bytes)
+        print("AI_client_asr_send:{} {}\r\n".format(len(data_bytes),self.AI_send_data_queue_thread_id))
+        if len(data_bytes) != 0:
+            self.AI_send_data_queue.put([self.AI_client_asr_num,data_bytes]) 
+            # print("init 333333333333333333333333333333333333333")
+    def AI_client_asr_start(self):
+        
+        self.AI_send_data_queue.put([self.AI_client_asr_num,"{\"header\":{\"event\":\"StartTranscription\",\"trace_id\":\"%s\"},\"payload\":{\"format\":\"amr\",\"sample_rate\":8000}}"%(self.get_trace_id())]) 
+    #语音转文字链路读数据       
+    def AI_client_asr_recv(self,cli):
+        
+        while True:
+            try:
+                # 死循环接收数据
+                recv_data = cli.recv()
+                if not recv_data:
+                    # 服务器关闭连接或客户端关闭连接
+                    print("AI_client_asr_recv close")
+                    #self.AI_client_asr_isconnect = 0
+                    #self.websocket_deconnect_asr()
+                    break
+                try:
+                    if isinstance(recv_data, str):
+                        jsload_data =  ujson.loads(recv_data)
+                        print("jsload_data = {}".format(jsload_data))
+                        if jsload_data["result"] == None:
+                            continue 
+                        if jsload_data["result"]["result"]:
+                            self.AI_listen_text = str(jsload_data["result"]["result"])
+
+                            # AI_listen_text.set_text(str(jsload_data["result"]["result"]))
+                            if jsload_data["result"]["is_end"] == True:  #{"type":"chat","content":"你好"}
+                                self.AI_listen_end = 1
+                                EventMesh.publish("publish_message_event_ui",{"func":self.stop_record_text,"data":self.AI_listen_text})
+                                # self.create_img_cb(self.AI_listen_text) #语音识别完成 正在生成表盘中...
+                                break
+                            elif jsload_data["result"]["is_end"] == False:
+                                self.AI_listen_end = 0
+                                # AI_label.set_text("语音识别中...")
+                except Exception as e:
+                    print("error recv_data:{}".format(recv_data))
+                    usys.print_exception(e)
+                
+            except Exception as e:
+                usys.print_exception(e)
+                break
+
+        # print("AI_client_asr_recv end:{} {}\r\n".format(self.AI_client_asr_isconnect,self.AI_client_asr_recv_id))
+        self.AI_client_asr_isconnect = 0
+        self.AI_client_asr_recv_id = 0    
+    
+    
+    
+    ###############################################        
+    #发送数据队列
+    def AI_send_data_queue_thread(self):
+        while True:
+            data = self.AI_send_data_queue.get()
+            if data != None:
+                try: 
+                    if data[0] == self.AI_client_asr_num:
+                        print("asr send_data self.AI_client_asr_isconnect:{}".format(self.AI_client_asr_isconnect))
+                        if self.AI_client_asr_isconnect == 0:
+                            try:
+                                self.websocket_connect_asr()
+                            except Exception as e: #网络连接异常
+                                usys.print_exception(e)
+                        print("asr send_data:{}".format(len(data[1])))
+                        if self.AI_client_asr != None:
+                            self.AI_client_asr.send(data[1])
+                   
+                except Exception as e:
+                    print("DeviceInfo_queue_thread:ERROR:{}".format(e))
+                    usys.print_exception(e)
+                    
+                    if data[0] == self.AI_client_asr_num:
+                        self.AI_client_asr_isconnect = 0
+                        try:
+                            self.websocket_connect_asr()
+                        except Exception as e: #网络连接异常
+                            usys.print_exception(e)
+               
+        
+    def play_label_cb(self,e):
+        
+        pass
+
+    def set_enter_pp_page(self, event, msg):
+        self.state = msg
+    
+    def get_enter_pp_page(self, event, msg):
+        
+        return self.state 
+    def close_data(self):
+        print("close:!!!!111 {} {}\r\n".format(self.AI_send_data_queue_thread_id,self.AI_client_asr_recv_id))
+        try:
+            self.websocket_deconnect_asr()
+
+        except Exception as e:
+            usys.print_exception(e)
+        try:
+        #销毁线程
+
+            if self.AI_send_data_queue_thread_id != 0:
+                try:
+                    _thread.stop_thread(self.AI_send_data_queue_thread_id)
+                    print("close:!!!!111\r\n")
+                except Exception as e:
+                    usys.print_exception(e)
+                self.AI_send_data_queue_thread_id = 0
+                print("close:!!!!2333\r\n")
+
+            
+            if self.AI_client_asr_recv_id != 0:
+                try:
+                    print("close:!!!!555\r\n")
+                    _thread.stop_thread(self.AI_client_asr_recv_id)
+                    print("close:!!!!222\r\n")
+                except Exception as e:
+                    usys.print_exception(e)
+                self.AI_client_asr_recv_id = 0
+        except Exception as e:
+            usys.print_exception(e)
+        print("close:AI_send_data_queue:size1111:{}".format(self.AI_send_data_queue.size()))
+        self.AI_send_data_queue.clear()
+        print("close:AI_send_data_queue:size:{}".format(self.AI_send_data_queue.size()))
+        self.record_timer.stop()
+        self.aud.stopPlayStream()
+        self.aud.stopAll()
+        self.record.stop()#关闭录音
+        self.timer.stop()
+        self.record_timer.stop()
+        self.clear_flag()
+        Record_read_buf = bytearray(self.Audio_buf_size)
+        for i in range(10):
+            Record_len = self.record.stream_read(Record_read_buf, self.Audio_buf_size)
+            print("Record_len:!!!!!!{}\r\n".format(Record_len))
+            if Record_len <= 0:
+                break
+        
+    def Close(self):
+        print("close:!!!!111 {} {}\r\n".format(self.AI_send_data_queue_thread_id,self.AI_client_asr_recv_id))
+        try:
+            self.websocket_deconnect_asr()
+
+        except Exception as e:
+            usys.print_exception(e)
+        try:
+        #销毁线程
+
+            if self.AI_send_data_queue_thread_id != 0:
+                try:
+                    _thread.stop_thread(self.AI_send_data_queue_thread_id)
+                    print("close:!!!!111\r\n")
+                except Exception as e:
+                    usys.print_exception(e)
+                self.AI_send_data_queue_thread_id = 0
+                print("close:!!!!2333\r\n")
+
+            
+            if self.AI_client_asr_recv_id != 0:
+                try:
+                    print("close:!!!!555\r\n")
+                    _thread.stop_thread(self.AI_client_asr_recv_id)
+                    print("close:!!!!222\r\n")
+                except Exception as e:
+                    usys.print_exception(e)
+                self.AI_client_asr_recv_id = 0
+        except Exception as e:
+            usys.print_exception(e)
+        print("close:AI_send_data_queue:size1111:{}".format(self.AI_send_data_queue.size()))
+        self.AI_send_data_queue.clear()
+        print("close:AI_send_data_queue:size:{}".format(self.AI_send_data_queue.size()))
+        self.record_timer.stop()
+        self.aud.stopPlayStream()
+        self.aud.stopAll()
+        self.record.stop()#关闭录音
+        self.timer.stop()
+        self.record_timer.stop()
+        self.clear_flag()
+        Record_read_buf = bytearray(self.Audio_buf_size)
+        for i in range(10):
+            Record_len = self.record.stream_read(Record_read_buf, self.Audio_buf_size)
+            print("Record_len:!!!!!!{}\r\n".format(Record_len))
+            if Record_len <= 0:
+                break
+        
+        num = EventMesh.publish("get_volum_size")
+        if num == None:
+            num = 8
+        self.aud.setVolume(num)#恢复原始音量
+
+        check_txt = ql_fs.path_exists("/ext/static/storage_file/aigc_dial_tmp.jpg") #删除文件防止退出界面没有删除 增加内存
+        print("jpg is true or false!!!!{}\r\n".format(check_txt))
+        if check_txt == True :
+            uos.remove("/ext/static/storage_file/aigc_dial_tmp.jpg")
+
+        
+    def clear_flag(self): #清标识
+        self.timer_out_count = 0
+        self.img_show_count = 0
+        self.img_show_count_tmp = 0
+        self.img_show_count_flag = 0
+        self.AI_listen_end = 0 #语音识别完成
+        self.refresh_count = 0
+        self.AI_listen_text = ""
+        self.AI_label_str = ""
+        self.AI_label_answer = ""
+        self.tts_time_count = 0
+        self.tts_time_outcount = 0
+
+    def done_return(self):
+        EventMesh.publish("return_prev_screen")
+
+    def btn1_release(self):
+        EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+    def btn8_press(self):
+        EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+
+aigc_show_img_screen = lv.obj()
+aigc_show_img_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_show_img_screen_img = lv.obj(aigc_show_img_screen)
+print("aigc_show_img_screen_img")
+aigc_show_img_screen_img.set_pos(0, 0)
+aigc_show_img_screen_img.set_size(LCD_SIZE_W, LCD_SIZE_H)
+aigc_show_img_screen_img.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_create_success_show_new_img = lv.img(aigc_show_img_screen_img)
+aigc_create_success_show_new_img.set_size(LCD_SIZE_W,LCD_SIZE_H)
+aigc_create_success_show_new_img.set_pos(0,0)
+aigc_create_success_show_new_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_create_show_new_img_title_btn1 = lv.label(aigc_create_success_show_new_img)
+aigc_create_show_new_img_title_btn1.set_pos(0, 244)
+aigc_create_show_new_img_title_btn1.set_size(LCD_SIZE_W//2, 38)
+aigc_create_show_new_img_title_btn1.set_text(" ")
+aigc_create_show_new_img_title_btn1.add_flag(lv.obj.FLAG.CLICKABLE)
+aigc_create_show_new_img_title_btn1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_create_show_new_img_title_btn1.add_style(style_font_red_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_create_show_new_img_title1 = lv.label(aigc_create_success_show_new_img)
+aigc_create_show_new_img_title1.set_pos(0, 240)
+aigc_create_show_new_img_title1.set_size(LCD_SIZE_W//2, 33)
+aigc_create_show_new_img_title1.set_text("确定")
+aigc_create_show_new_img_title1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_create_show_new_img_title1.add_style(style_font_red_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_create_show_new_img_title1_btn1 = lv.label(aigc_create_success_show_new_img)
+aigc_create_show_new_img_title1_btn1.set_pos(LCD_SIZE_W//2, 244)
+aigc_create_show_new_img_title1_btn1.set_size(LCD_SIZE_W//2, 38)
+aigc_create_show_new_img_title1_btn1.add_flag(lv.obj.FLAG.CLICKABLE)
+aigc_create_show_new_img_title1_btn1.set_text(" ")
+aigc_create_show_new_img_title1_btn1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_create_show_new_img_title1_btn1.add_style(style_font_red_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_create_show_new_img_title11 = lv.label(aigc_create_success_show_new_img)
+aigc_create_show_new_img_title11.set_pos(LCD_SIZE_W//2, 240)
+aigc_create_show_new_img_title11.set_size(LCD_SIZE_W//2, 33)
+aigc_create_show_new_img_title11.set_text("取消")
+aigc_create_show_new_img_title11.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_create_show_new_img_title11.add_style(style_font_red_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+class aigcShowNewImgScreen(Screen): #aigc演示效果
+    NAME = "aigc_img"
+    
+    def __init__(self):
+        super().__init__()
+        self.meta = aigc_show_img_screen
+        self.meta_type = "popup"
+        self.timer = osTimer()
+        self.img_name = 0
+        aigc_create_show_new_img_title_btn1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,1)),lv.EVENT.SHORT_CLICKED, None)
+        aigc_create_show_new_img_title1_btn1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,2)),lv.EVENT.SHORT_CLICKED, None)
+        
+    def button_cb(self,e,msg):
+        code = e.get_code()
+        indev = lv.indev_get_act()
+        lv.indev_t.wait_release(indev)
+        dir = lv.indev_t.get_gesture_dir(indev)
+        if code == lv.EVENT.GESTURE:
+            if dir == lv.DIR.RIGHT:
+                pass
+                # EventMesh.publish("load_screen", {"screen": "main_menu"})
+        elif  code == lv.EVENT.SHORT_CLICKED:
+            if msg == 1:
+                check_txt = ql_fs.path_exists("/ext/static/storage_file/{}.jpg".format(self.img_name))
+                if check_txt == True:
+                    uos.rename("/ext/static/storage_file/{}.jpg".format(self.img_name), "/ext/static/storage_file/aigc_dial.jpg") #将临时文件重命名为新的作为显示
+                check_txt = ql_fs.path_exists("/ext/static/storage_file/{}.jpg".format(self.img_name))
+                # if check_txt == True :
+                #     uos.remove("/usr/static/storage_file/{}.jpg".format(self.img_name))
+                EventMesh.publish("system_sleep_rest")#防止黑屏
+                EventMesh.publish("update_dial_file")
+                EventMesh.publish("watch_top_show")
+                EventMesh.publish("load_screen", {"screen": "main_menu"})
+            elif msg == 2:
+                check_txt = ql_fs.path_exists("/ext/static/storage_file/{}.jpg".format(self.img_name))
+                if check_txt == True :
+                    uos.remove("/ext/static/storage_file/{}.jpg".format(self.img_name))
+                
+                EventMesh.publish("load_screen", {"screen": "aigc_create","meta":"1"})
+                EventMesh.publish("publish_start_event")
+
+
+    def initialization(self):
+        EventMesh.publish("system_sleep_rest")#防止黑屏
+        binary_data = base64.b64decode(self.meta_info)
+        check_txt = ql_fs.path_exists("/ext/static/storage_file/{}.jpg".format(str(self.img_name)))
+        if check_txt == True :
+            uos.remove("/ext/static/storage_file/{}.jpg".format(str(self.img_name)))
+        self.img_name+=1
+        if self.img_name >= 2:
+            self.img_name = 0
+        print("self.img_name:{}\r\n".format(self.img_name))
+
+        check_txt = ql_fs.path_exists("/ext/static/storage_file/{}.jpg".format(str(self.img_name)))
+        print("check_txt:{} data:{}\r\n".format(check_txt,self.meta_info))
+        path = "/ext/static/storage_file/{}.jpg".format(str(self.img_name))
+        try:
+            try:
+                with open(path,"w+") as fd:
+                    fd.write(binary_data)
+                check_txt = ql_fs.path_exists("/ext/static/storage_file/{}.jpg".format(str(self.img_name))) #生成临时的图片文件
+                if check_txt == True :
+                    aigc_create_success_show_new_img.set_src("E:/static/storage_file/{}.jpg".format(str(self.img_name)))
+
+                self.timer.start(500,1,self.lcd_update)
+            except Exception as e:
+                #表盘生产失败
+                print("表盘生产失败!!!!!\r\n")
+                pass
+                return
+        except Exception as e:
+            #表盘生产失败
+            pass
+    def lcd_update(self,*argc):
+        EventMesh.publish("system_sleep_rest")#防止黑屏
+
+
+
+style_list_screen = lv.obj()
+style_list_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_style_list_title_screen = lv.obj(style_list_screen)
+print("aigc_style_list_title_screen")
+aigc_style_list_title_screen.set_pos(0, 0)
+aigc_style_list_title_screen.set_size(LCD_SIZE_W, 40)
+aigc_style_list_title_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_style_list_title_main_screen = lv.label(aigc_style_list_title_screen)
+aigc_style_list_title_main_screen.set_pos(0, 10)
+aigc_style_list_title_main_screen.set_size(LCD_SIZE_W, 30)
+aigc_style_list_title_main_screen.set_text("表盘风格")
+aigc_style_list_title_main_screen.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_style_list_title_main_screen.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_style_list_show_screen = lv.obj(style_list_screen)
+print("aigc_style_list_show_screen")
+aigc_style_list_show_screen.set_pos(0, 40)
+aigc_style_list_show_screen.set_size(LCD_SIZE_W, LCD_SIZE_H-40)
+aigc_style_list_show_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_style_list_load_screen = lv.label(aigc_style_list_show_screen)
+aigc_style_list_load_screen.set_pos(0, 50)
+aigc_style_list_load_screen.set_size(LCD_SIZE_W, 40)
+aigc_style_list_load_screen.set_text("加载中...")
+aigc_style_list_load_screen.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_style_list_load_screen.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+style_wechat_s_btn =  lv.style_t()
+style_wechat_s_btn.init()
+style_wechat_s_btn.set_bg_color(lv.color_make(128, 128, 128))
+style_wechat_s_btn.set_border_width(0)
+style_wechat_s_btn.set_shadow_opa(0)
+style_wechat_s_btn.set_border_width(0)
+style_wechat_s_btn.set_pad_left(0)
+style_wechat_s_btn.set_pad_right(0)
+style_wechat_s_btn.set_pad_top(0)
+style_wechat_s_btn.set_pad_bottom(0)
+
+style_font_youyuan_20_grey = lv.style_t()
+style_font_youyuan_20_grey.init()
+style_font_youyuan_20_grey.set_text_color(lv.color_make(255, 255, 255))
+#style_font_youyuan_20.set_text_font_v2("font_28.bin",28,0)
+style_font_youyuan_20_grey.set_text_font_v2("font_28.bin",28,0)
+
+class aigcStyleLIstScreen(Screen): #aigc风格列表
+    NAME = "aigc_styleList"
+    
+    def __init__(self):
+        super().__init__()
+        self.meta = style_list_screen
+        self.timer = osTimer()
+        self.timer_test = osTimer()
+
+        self.aigc_defaultStyle = "anime" #默认是日漫系都风格表盘
+        self.aigc_style_list = []
+        # self.aigc_style_list = [{'code': 'auto', 'name': '默认', 'url': ''}, {'code': '3d', 'name': '3D卡通', 'url': ''}, {'code': 'anime', 'name': '日漫画', 'url': ''}, {'code': 'oil', 'name': '油画', 'url': ''}, {'code': 'watercolor', 'name': '水彩', 'url': ''}, {'code': 'sketch', 'name': '素描', 'url': ''}, {'code': 'chinese-painting', 'name': '中国画', 'url': ''}, {'code': 'flat-illustration', 'name': '扁平插画', 'url': ''}]
+        self.MAX_LIST_COUNT = 10 #最大十种风格类型
+
+        read_data = EventMesh.publish("get_storage_config","dial_style") #获取默认的表盘风格
+        if read_data != None:
+            self.aigc_defaultStyle = read_data
+
+        style_list_screen.add_event_cb(lambda e:EventMesh.callback_wrapper(self.button_cb(e,0)), lv.EVENT.GESTURE, None)
+        aigc_style_list_title_screen.add_event_cb(lambda e:EventMesh.callback_wrapper(self.button_cb(e,0)), lv.EVENT.GESTURE, None)
+        aigc_style_list_show_screen.add_event_cb(lambda e:EventMesh.callback_wrapper(self.button_cb(e,0)), lv.EVENT.GESTURE, None)
+
+        self.wechat_list = lv.obj(aigc_style_list_show_screen)
+        self.wechat_list.set_pos(0, 0)
+        self.wechat_list.set_size(LCD_SIZE_W, LCD_SIZE_H-40)
+        self.wechat_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
+        self.wechat_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+        self.wechat_list.add_event_cb(lambda e:EventMesh.callback_wrapper(self.button_cb(e,0)), lv.EVENT.GESTURE, None)
+        # self.wechat_list.set_flex_flow(lv.FLEX_FLOW.COLUMN)#自动排成一列对齐
+        #建立控件
+        self.wechat_list_dict = []
+        for i in range(self.MAX_LIST_COUNT):
+           
+            wechat_btn = lv.btn(self.wechat_list)
+            wechat_btn.add_style(style_wechat_s_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+            _btn_img = lv.img(wechat_btn)
+            _btn_label1 = lv.label(wechat_btn)
+            _btn_label1.add_style(style_font_youyuan_20_grey, lv.PART.MAIN | lv.STATE.DEFAULT)
+            _btn_label2 = lv.label(wechat_btn)
+            wechat_btn.add_flag(lv.obj.FLAG.HIDDEN)
+            wechat_btn.add_flag(lv.obj.FLAG.CLICKABLE)
+            wechat_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,1)),
+            lv.EVENT.SHORT_CLICKED, None)
+            self.wechat_list_dict.append({"num":i,"wechat_btn":wechat_btn,"_btn_label1":_btn_label1,"_btn_label2":_btn_label2,"_btn_img":_btn_img})
+
+        EventMesh.subscribe("set_dial_style", self.set_dial_style)#
+        EventMesh.subscribe("get_dial_style", self.get_dial_style)
+
+    def set_dial_style(self,event,msg):
+        self.aigc_defaultStyle = msg
+        EventMesh.publish("set_storage_config",["dial_style",self.aigc_defaultStyle])
+
+    
+    def get_dial_style(self,event,msg):
+        return self.aigc_defaultStyle
+
+    def initialization(self):
+        self.wechat_list.scroll_to(0, 0, lv.ANIM.OFF)
+        self.timer.start(2000,0,self.timer_cb)
+        if self.aigc_style_list == []:
+            self.wechat_list.add_flag(lv.obj.FLAG.HIDDEN)
+            aigc_style_list_load_screen.clear_flag(lv.obj.FLAG.HIDDEN)
+            aigc_style_list_load_screen.set_text("加载中...")
+        else:
+            self.updat_show_list()
+
+    def timer_cb(self,*argc):
+        self.get_dial_style_conct()
+    def get_dial_style_conct(self):
+        new_aigc_style_list = []
+        result = 0 
+        url = "http://118.145.158.207/aigc/get-style"
+        data_tmp ={"type":0}
+        try:
+            response = request.post(url,data = ujson.dumps(data_tmp))
+            if response.status_code == 200:
+                result = response.json()
+                
+                print(response.content)
+                if "status" in result:
+                    status = result["status"]
+                    if status == 0: #成功
+                        if "data" in result:
+                            data = result["data"]
+                            print(data)
+                            if isinstance(data, list) == True: #判断是不是list类型
+                                new_aigc_style_list = data
+                                result = 1
+            else: #网络异常
+                result = 0  
+        except Exception as e:
+            usys.print_exception(e)
+            result = 0
+        
+        
+        if result == 1:
+            aigc_style_list_load_screen.add_flag(lv.obj.FLAG.HIDDEN)
+            self.wechat_list.clear_flag(lv.obj.FLAG.HIDDEN)
+            if new_aigc_style_list != self.aigc_style_list: #不相等刷新列表
+                self.aigc_style_list = new_aigc_style_list
+                self.wechat_list.scroll_to(0, 0, lv.ANIM.OFF)
+                self.updat_show_list()
+                return
+            self.updat_show_list()
+        else:
+            if self.aigc_style_list == []: #如果为空并且获取失败
+                self.wechat_list.add_flag(lv.obj.FLAG.HIDDEN)
+                aigc_style_list_load_screen.clear_flag(lv.obj.FLAG.HIDDEN)
+                aigc_style_list_load_screen.set_text("网络异常 请求出错 请重试")
+
+            
+    #刷新列表
+    def updat_show_list(self):
+        wechat_btn_end = 0
+        j = 0
+        for i in range(self.MAX_LIST_COUNT):
+            if j > len(self.aigc_style_list) -1:
+                self.wechat_list_dict[i]["wechat_btn"].add_flag(lv.obj.FLAG.HIDDEN)
+                continue
+            j+=1
+            data = self.aigc_style_list[i]
+            name = data["name"]
+            print("data:{} name:{}\r\n".format(data,name))
+            default_code = data["code"]
+
+            self.wechat_list_dict[i]["wechat_btn"].set_size(LCD_SIZE_W,50)
+            self.wechat_list_dict[i]["wechat_btn"].set_pos(0,53*i)
+
+            if default_code == self.aigc_defaultStyle:
+                self.wechat_list_dict[i]["_btn_img"].clear_flag(lv.obj.FLAG.HIDDEN)
+                self.wechat_list_dict[i]["_btn_img"].set_size(32, 25)
+                self.wechat_list_dict[i]["_btn_img"].set_pos(200, 14)
+                self.wechat_list_dict[i]["_btn_img"].set_src("E:/static/menustyle_select.png")
+            else:
+                self.wechat_list_dict[i]["_btn_img"].add_flag(lv.obj.FLAG.HIDDEN)
+
+
+            self.wechat_list_dict[i]["_btn_label1"].set_pos(5, 15)
+            self.wechat_list_dict[i]["_btn_label1"].set_size(LCD_SIZE_W-10, 30)
+            if default_code == self.aigc_defaultStyle:
+                self.wechat_list_dict[i]["_btn_label1"].set_recolor(True) #重新绘制字体颜色
+                self.wechat_list_dict[i]["_btn_label1"].set_text("#ffffff "+"风格:"+name)
+            else:
+                self.wechat_list_dict[i]["_btn_label1"].set_recolor(True)  #重新绘制字体颜色
+                self.wechat_list_dict[i]["_btn_label1"].set_text("#C8C8C8 "+"风格:"+name)
+            
+
+
+            self.wechat_list_dict[i]["_btn_label2"].set_size(0, 0)
+            self.wechat_list_dict[i]["_btn_label2"].set_text(ujson.dumps(data))
+
+
+            self.wechat_list_dict[i]["wechat_btn"].clear_flag(lv.obj.FLAG.HIDDEN)
+            
+            wechat_btn_end = i
+        # self.wechat_list.scroll_to_view(lv.ANIM.OFF)
+    def button_cb(self,e,msg):
+
+        code = e.get_code()
+        indev = lv.indev_get_act()
+        lv.indev_t.wait_release(indev)
+        dir = lv.indev_t.get_gesture_dir(indev)
+        if code == lv.EVENT.GESTURE:
+            if dir == lv.DIR.RIGHT:
+                pass
+                # EventMesh.publish("load_screen", {"screen": "main_menu"})
+        elif  code == lv.EVENT.SHORT_CLICKED:
+            if msg != 0:
+                style = str(e.get_target().get_child(1).get_text())
+                style_dict = e.get_target().get_child(2).get_text()
+                style_dict = ujson.loads(style_dict)
+                code_id = style_dict["code"]
+                name = style_dict["name"]
+                url = style_dict["url"]
+                print("style:{} style:{} {} {}\r\n".format(style,code_id,name,url))
+                EventMesh.publish("set_dial_style",code_id)#
+                EventMesh.publish("load_screen", {"screen": "aigc_create","meta":"0"})
+
+
+                
+    # {'data': [{'code': 'auto', 'name': '默认', 'url': ''}, {'code': '3d', 'name': '3D卡通', 'url': ''}, {'code': 'anime', 'name': '⽇漫⻛', 'url': ''}, {'code': 'oil', 'name': '油画', 'url': ''}, {'code': 'watercolor', 'name': '水彩', 'url': ''}, {'code': 'sketch', 'name': '素描', 'url': ''}, {'code': 'chinese-painting', 'name': '中国画', 'url': ''}, {'code': 'flat-illustration', 'name': '扁平插画', 'url': ''}], 'status': 0}
+    def done_return(self):
+        EventMesh.publish("return_prev_screen")
+
+    def btn1_release(self):
+        EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+    def btn8_press(self):
+        EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+    
+aigc_dial_main_screen = lv.obj()
+aigc_dial_main_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_style_dial_title_screen = lv.obj(aigc_dial_main_screen)
+print("aigc_style_dial_title_screen")
+aigc_style_dial_title_screen.set_pos(0, 0)
+aigc_style_dial_title_screen.set_size(LCD_SIZE_W, 40)
+aigc_style_dial_title_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_style_dial_title = lv.label(aigc_style_dial_title_screen)
+aigc_style_dial_title.set_pos(0, 10)
+aigc_style_dial_title.set_size(LCD_SIZE_W, 30)
+aigc_style_dial_title.set_text("表盘")
+aigc_style_dial_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_style_dial_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_style_dial_list_screen = lv.obj(aigc_dial_main_screen)
+print("aigc_style_dial_list_screen")
+aigc_style_dial_list_screen.set_pos(0, 40)
+aigc_style_dial_list_screen.set_size(LCD_SIZE_W, LCD_SIZE_H-40)
+aigc_style_dial_list_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+aigc_dial_main_style_btn = lv.btn(aigc_style_dial_list_screen)
+aigc_dial_main_style_btn.set_pos(5,5)
+aigc_dial_main_style_btn.set_size(LCD_SIZE_W-10,50)
+aigc_dial_main_style_btn.add_flag(lv.obj.FLAG.CLICKABLE)
+aigc_dial_main_style_btn.add_style(style_wechat_s_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_dial_main_style_btn_label = lv.label(aigc_dial_main_style_btn)
+aigc_dial_main_style_btn_label.set_pos(5, 15)
+aigc_dial_main_style_btn_label.set_size(LCD_SIZE_W-10, 30)
+aigc_dial_main_style_btn_label.set_text("表盘风格")
+aigc_dial_main_style_btn_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_dial_main_style_btn_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_dial_main_create_btn = lv.btn(aigc_style_dial_list_screen)
+aigc_dial_main_create_btn.set_pos(5,60)
+aigc_dial_main_create_btn.set_size(LCD_SIZE_W-10,50)
+aigc_dial_main_create_btn.add_flag(lv.obj.FLAG.CLICKABLE)
+aigc_dial_main_create_btn.add_style(style_wechat_s_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+aigc_dial_main_create_btn_label = lv.label(aigc_dial_main_create_btn)
+aigc_dial_main_create_btn_label.set_pos(5, 15)
+aigc_dial_main_create_btn_label.set_size(LCD_SIZE_W-10, 30)
+aigc_dial_main_create_btn_label.set_text("表盘生成")
+aigc_dial_main_create_btn_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+aigc_dial_main_create_btn_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+class aigcMainLIstScreen(Screen): #aigc主菜单列表
+    NAME = "aigc_mainlist"
+    
+    def __init__(self):
+        super().__init__()
+        self.meta = aigc_dial_main_screen
+        aigc_dial_main_screen.add_event_cb(lambda e:EventMesh.callback_wrapper(self.button_cb(e,"void")), lv.EVENT.GESTURE, None)
+        aigc_style_dial_title_screen.add_event_cb(lambda e:EventMesh.callback_wrapper(self.button_cb(e,"void")), lv.EVENT.GESTURE, None)
+        aigc_style_dial_list_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e, "void")),lv.EVENT.GESTURE, None)
+        aigc_dial_main_style_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e, "aigc_styleList")), lv.EVENT.SHORT_CLICKED , None)
+        aigc_dial_main_create_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e, "aigc_create")), lv.EVENT.SHORT_CLICKED , None)
+
+    def initialization(self):
+        
+        pass
+    def button_cb(self,e,msg):
+        code = e.get_code()
+        indev = lv.indev_get_act()
+        lv.indev_t.wait_release(indev)
+        dir = lv.indev_t.get_gesture_dir(indev)
+        if code == lv.EVENT.GESTURE:
+            if dir == lv.DIR.RIGHT:
+                pass
+                # EventMesh.publish("load_screen", {"screen": "main_menu"})
+        elif  code == lv.EVENT.SHORT_CLICKED: 
+            if msg != "void":
+                if msg == "aigc_create":
+                    EventMesh.publish("load_screen",  {"screen": "{}".format(msg),"meta":"0"})
+                else:
+                    EventMesh.publish("load_screen",  {"screen": "{}".format(msg)})
+
+    def done_return(self):
+
+        EventMesh.publish("load_screen", {"screen": "main_menu"})
+
+    def btn1_release(self):
+        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        
+    def btn8_press(self):
+        EventMesh.publish("watch_top_show")
+        EventMesh.publish("load_screen", {"screen": "main_menu"})
\ No newline at end of file