From: dxy15521469561 <1731678236@qq.com> Date: Thu, 11 Jul 2024 07:43:36 +0000 (+0800) Subject: K01: X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=ae501f7d2bba8c19d3a4ae40a79399ce112758b4;p=mirrors%2FASR1603_G5.git K01: bug修复 优化界面 --- diff --git a/2.sdk-ZY/project/K01/new.bat b/2.sdk-ZY/project/K01/new.bat index 27d7bf8d..c7b80b13 100644 --- a/2.sdk-ZY/project/K01/new.bat +++ b/2.sdk-ZY/project/K01/new.bat @@ -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 diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py index 5b476e44..78355009 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py @@ -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: diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py index 1aa8d5dd..ebe6a2dc 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py @@ -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): diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui.py index 24bf8a4c..6f3347b7 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui.py @@ -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() diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py index a3ee08f4..c9f38c76 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py @@ -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) diff --git a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py index a9f57a0f..4b43dd32 100644 --- a/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py +++ b/2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py @@ -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 diff --git a/2.sdk-ZY/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/images/firmware_base_release_pack.zip b/2.sdk-ZY/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/images/firmware_base_release_pack.zip index bc20a8d0..60e665d4 100644 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 index b68bc47e..00000000 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 index e5b4bed5..00000000 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 index 00000000..4831b499 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 index 0c05af32..00000000 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 index e7a58ce0..00000000 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 index 72ee28e3..00000000 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 index 6afe1834..00000000 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 index 663cfcd7..00000000 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 index 6bf2cca9..00000000 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 index 359d37b9..00000000 Binary files a/2.sdk-ZY/project/K01/usr/static/setting_poweroff.png and /dev/null differ diff --git a/2.sdk-ZY/project/K01/usr/static/setting_poweroff_bg.png b/2.sdk-ZY/project/K01/usr/static/setting_poweroff_bg.png index 16457c66..b42028a9 100644 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 index 00000000..863c4816 --- /dev/null +++ b/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/aigcdial.py @@ -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