From: dxy15521469561 <1731678236@qq.com> Date: Mon, 24 Jun 2024 09:02:17 +0000 (+0800) Subject: W8: X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=fe6fe7ca7811228797ec8ef827c65d1971084704;p=mirrors%2FASR1603_G5.git W8: AI应用优化 M36_K01: 界面优化 --- diff --git a/2.sdk-ZY/project/K01/new.bat b/2.sdk-ZY/project/K01/new.bat index 4182b93d..27d7bf8d 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 675840 -i .\images\customer_fs.bin +..\..\Helios_SDK\tools\ASR_1606\win32\mklfs.exe -c usr -b 4096 -r 4096 -p 4096 -s 757760 -i .\images\customer_fs.bin if errorlevel 1 ( echo "customer_fs.bin生成失败 请检查usr目录是否大于316K!!!!!!!!!!!!!!!" goto exit diff --git a/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/ai.py b/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/ai.py index 688cb02c..d5518709 100644 --- a/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/ai.py +++ b/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/ai.py @@ -434,20 +434,20 @@ al_listen_screen_icon1.set_src("E:/static/AI/AI_LISTEN_GIF001.png") al_listen_screen_icon1.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) -al_listen_screen_icon = lv.img(AI_listen_screen) -al_listen_screen_icon.set_size(230,58) -al_listen_screen_icon.set_pos((240-230)//2,210) -al_listen_screen_icon.set_src("E:/static/AI/ai_confirm_bt.png") -al_listen_screen_icon.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) +# al_listen_screen_icon = lv.img(AI_listen_screen) +# al_listen_screen_icon.set_size(230,58) +# al_listen_screen_icon.set_pos((240-230)//2,210) +# al_listen_screen_icon.set_src("E:/static/AI/ai_confirm_bt.png") +# al_listen_screen_icon.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) al_listen_screen_icon_bt = lv.label(AI_listen_screen) al_listen_screen_icon_bt.set_text(" ") al_listen_screen_icon_bt.set_size(240, 190) al_listen_screen_icon_bt.set_pos(0,92) -al_listen_screen_title4 = lv.label(al_listen_screen_icon) -al_listen_screen_title4.set_pos(0, 18) -al_listen_screen_title4.set_size(230, 58) +al_listen_screen_title4 = lv.label(AI_listen_screen) +al_listen_screen_title4.set_pos(0, 220) +al_listen_screen_title4.set_size(240, 58) al_listen_screen_title4.set_text("正在聆听...") al_listen_screen_title4.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) al_listen_screen_title4.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) @@ -660,6 +660,7 @@ class AIScreen(Screen):#AI_GUI self.AI_client_tts_tra_flag = 0 self.AI_client_tts_full_sentence_flag = 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 @@ -686,8 +687,8 @@ class AIScreen(Screen):#AI_GUI al_no_sim_popup_screen_icon1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,2)), lv.EVENT.SHORT_CLICKED, None) #无网络按钮 - al_listen_screen_icon_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,3)), lv.EVENT.SHORT_CLICKED, None) #说话完成按钮 - al_listen_screen_icon.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,3)), lv.EVENT.SHORT_CLICKED, None) #说话完成按钮 + # al_listen_screen_icon_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,3)), lv.EVENT.SHORT_CLICKED, None) #说话完成按钮 + # al_listen_screen_icon.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,3)), lv.EVENT.SHORT_CLICKED, None) #说话完成按钮 al_think_screen_icon1_bt.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,4)), lv.EVENT.SHORT_CLICKED, None) #思考界面取消按钮 al_think_screen_icon1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,4)), lv.EVENT.SHORT_CLICKED, None) #思考界面取消按钮 @@ -752,7 +753,8 @@ class AIScreen(Screen):#AI_GUI self.AI_label_str = "" self.AI_label_answer = "" self.tts_time_count = 0 - + self.tts_time_outcount = 0 + def talk_end_cancel_cb(self,e):#对话结束已经播放音频取消继续对话按钮 self.Close() self.AI_label_answer = "" @@ -990,9 +992,11 @@ class AIScreen(Screen):#AI_GUI def audio_cb(self,event): if event == 0: self.audio_play_state =1 - print('audio-play start.') + EventMesh.publish("set_audio_state", 1) + print('audio-play start. ai') elif event == 7: self.audio_play_state = 0 + EventMesh.publish("set_audio_state", 0) # if self.AI_audio_queue.size() > 0: # data = self.AI_audio_queue.get() # print("audio_queue:data:{}".format(len(data))) @@ -1028,7 +1032,7 @@ class AIScreen(Screen):#AI_GUI AI_not_listen_text_screen.add_flag(lv.obj.FLAG.HIDDEN) # AI_no_net_screen.clear_flag(lv.obj.FLAG.HIDDEN) #开启显示 al_no_sim_popup_screen_title3.set_text("无SIM卡") - + elif signal == None or signal == 0 or signal == 99: AI_listen_screen.add_flag(lv.obj.FLAG.HIDDEN) AI_think_screen.add_flag(lv.obj.FLAG.HIDDEN) #先隐藏 @@ -1319,8 +1323,8 @@ class AIScreen(Screen):#AI_GUI usys.print_exception(e) def AI_client_tts_timer_cb(self,*argc): # EventMesh.publish("system_sleep_rest")#防止黑屏 - self.tts_time_count+=1 + if self.TTS_PRO_TYPE == 1: #tts数据入队 self.AI_client_tts_put_data() @@ -1329,11 +1333,13 @@ class AIScreen(Screen):#AI_GUI if len(self.AI_client_chat_play_str) >0 and self.AI_client_tts_data_len < 150*1024 :#and (self.AI_client_tts_str_total_len <100 or self.AI_client_tts_str_total_len - self.AI_client_tts_data_total_len//672 < 60)缓存200k以下,且tts发送文字字节数比返回音频数据少60字节 # play_str = split_string(self.AI_client_chat_play_str,40)# # if play_str =="":#没找到句号或者逗号,切割字符串 + self.tts_time_outcount+=1 + if self.TTS_PRO_TYPE == 1: play_str = sub_utf8_String(self.AI_client_chat_play_str,20)#按中文切割字符串 self.AI_client_tts_str_total_len += len(play_str) elif self.TTS_PRO_TYPE == 0: - if self.AI_audio_queue.size() >= 5 or self.AI_client_tts_tra_flag == 1:#存了超过4句,就等小于3次在转化 + if self.AI_audio_queue.size() >= 5 or self.AI_client_tts_tra_flag == 1 or (self.tts_time_outcount < 3 and len(self.AI_client_chat_play_str) < 100):#存了超过4句,就等小于3次在转化 return play_str = split_string(self.AI_client_chat_play_str,50,100)#按逗号,句号切割 if play_str =="" or len(play_str)>100:#没找到句号或者逗号,切割字符串 @@ -1716,6 +1722,12 @@ class AIScreen(Screen):#AI_GUI self.AI_client_chat_play_str = "" self.AI_client_tts_tra_flag = 0 self.record.stop()#关闭录音 + 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 self.AI_label_answer = "" self.refresh_count = 0 self.refresh_texttimer.stop() diff --git a/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/appWechat.py b/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/appWechat.py index 765a9e52..b8306ab6 100644 --- a/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/appWechat.py +++ b/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/appWechat.py @@ -138,6 +138,8 @@ class WechatScreen(Screen): self.timer = osTimer() self.second_timer = osTimer() self.play_timer = osTimer() + self.update_lcdTimer = osTimer() + @@ -388,6 +390,7 @@ class WechatScreen(Screen): Wechat_log("talking1.0") self.record_test.start("/ext/static/storage_file/{}.amr".format(self.wechat_num),16) self.second_timer.start(1000, 1, self.reduce_second) + self.update_lcdTimer.start(500, 1, self.update_lcd) self.press_state = 1 self.ble_send = 1 #松开发送 @@ -436,6 +439,7 @@ class WechatScreen(Screen): #写序号 self.record_test.stop() #停止錄音 self.second_timer.stop() #停止计时器 + self.update_lcdTimer.stop() self.countdown_old = self.countdown # Wechat_log("self.countdown :{} self.wechat_num:{} self.wechat_recode_list:{} self.wechat_show:{}".format(self.countdown,self.wechat_num,self.wechat_recode_list,self.wechat_show)) self.wechat_recode_list["%02d"%(self.wechat_show)] = "S:{}".format(str(self.countdown)) @@ -567,11 +571,25 @@ class WechatScreen(Screen): def get_send_state(self, event, msg): return self.ble_send + def lcd_off(self): + self.play_timer.stop() + self.record_test.stop() #停止錄音 + self.second_timer.stop() #停止计时器 + self.update_lcdTimer.stop() + self.aud.stop() + + def update_lcd(self,*args): + EventMesh.publish("publish_message_event_ui",{"func":self.update_lcd_cb,"data":0}) + + def update_lcd_cb(self,data): + Wechat_log("update_lcd_cb") + EventMesh.publish("system_sleep_rest")#防止黑屏 def Close(self): Wechat_log("Close1") self.play_timer.stop() self.record_test.stop() #停止錄音 + self.update_lcdTimer.stop() self.second_timer.stop() #停止计时器 self.aud.stop() num = EventMesh.publish("get_volum_size") @@ -579,8 +597,12 @@ class WechatScreen(Screen): num = 8 self.aud.setVolume(num)#恢复原始音量 Wechat_log("Close2") - def reduce_second(self,*args): + EventMesh.publish("publish_message_event_ui",{"func":self.reduce_second_cb,"data":0}) + + def reduce_second_cb(self,data): + + EventMesh.publish("system_sleep_rest")#防止黑屏 if self.countdown < 15: self.countdown += 1 else: diff --git a/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/ui_setting.py b/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/ui_setting.py index 4c26cb9f..8222cc55 100644 --- a/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/ui_setting.py +++ b/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/ui_setting.py @@ -299,7 +299,7 @@ class SettingScreen(Screen): def done_return(self): - EventMesh.publish("return_prev_screen") + EventMesh.publish("load_screen", {"screen": "main_menu"}) def btn1_release(self): EventMesh.publish("return_setiing") diff --git a/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/ui_video.py b/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/ui_video.py index 8d8d05f0..048d3475 100644 --- a/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/ui_video.py +++ b/2.sdk/project/W8/sdk/services/microPython/ports/quectel/core/ui_video.py @@ -1812,14 +1812,14 @@ class videolistScreen(Screen): print("videolist_screen") videolist_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) videolist_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - videolist_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)), lv.EVENT.GESTURE, None) + videolist_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e,0)), lv.EVENT.GESTURE, None) videolist_screen_list_screen = lv.obj(videolist_screen) videolist_screen_list_screen.set_pos(0, 40) videolist_screen_list_screen.set_size(LCD_SIZE_W, LCD_SIZE_H-40) videolist_screen_list_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) videolist_screen_list_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - videolist_screen_list_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)), lv.EVENT.GESTURE, None) + videolist_screen_list_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e,0)), lv.EVENT.GESTURE, None) videolist_top_title = lv.label(videolist_screen) @@ -1844,11 +1844,11 @@ class videolistScreen(Screen): self.videolist_detail_list.set_size(LCD_SIZE_W, LCD_SIZE_H-40+1) self.videolist_detail_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF) self.videolist_detail_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) - self.videolist_detail_list.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)), lv.EVENT.GESTURE, None) + self.videolist_detail_list.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e,0)), lv.EVENT.GESTURE, None) for i in range(self.MXA_phone_num): contact_btn = lv.btn(self.videolist_detail_list) contact_btn.add_flag(lv.obj.FLAG.CLICKABLE) - contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)), + contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e,1)), lv.EVENT.SHORT_CLICKED, None) contact_btn.add_flag(lv.obj.FLAG.HIDDEN) # contact_btn.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.PRESSED) @@ -1949,7 +1949,7 @@ class videolistScreen(Screen): if self.videolist_detail_list != None: self.videolist_detail_list.add_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本 - def calling_cb(self,e): + def calling_cb(self,e,msg): code = e.get_code() indev = lv.indev_get_act() lv.indev_t.wait_release(indev) @@ -1959,11 +1959,12 @@ class videolistScreen(Screen): EventMesh.publish("load_screen", {"screen": "main_menu"}) elif code == lv.EVENT.SHORT_CLICKED: - if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡 - msg_text = e.get_target().get_child(1).get_text() - EventMesh.publish("load_screen", {"screen": "vedio_mode","meta":msg_text}) - else: - EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"}) + if msg == 1: + if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡 + msg_text = e.get_target().get_child(1).get_text() + EventMesh.publish("load_screen", {"screen": "vedio_mode","meta":msg_text}) + else: + EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"}) # def calling_cb(self,e): # code = e.get_code()