import versions
import usocket
import lvgl as lv
+from machine import UART
try:
import VAD
except Exception as e:
#self.aud.play(1,1,'U:/static/R_CHARGE_IN.mp3')
EventMesh.publish("open_led_red")#充电红灯常亮
EventMesh.publish("audio_montage_play",["R_CHARGE_IN.mp3"])
- EventMesh.publish("load_screen", {"screen": "charge_in"})#充电弹窗
+ EventMesh.publish("load_screen", {"screen": "charge_in"})#充电弹窗
self.Low_power_warning_flag = 0
pass
elif status == 0:#拨出usbs
audio_buf.index("R_READ_TIME_{}".format(iccid[8])),audio_buf.index("R_READ_TIME_{}".format(iccid[9])),audio_buf.index("R_READ_TIME_{}".format(iccid[10])),audio_buf.index("R_READ_TIME_{}".format(iccid[11])),\
audio_buf.index("R_READ_TIME_{}".format(iccid[12])),audio_buf.index("R_READ_TIME_{}".format(iccid[13])),audio_buf.index("R_READ_TIME_{}".format(iccid[14])),audio_buf.index("R_READ_TIME_{}".format(iccid[15])),\
audio_buf.index("R_READ_TIME_{}".format(iccid[16])),audio_buf.index("R_READ_TIME_{}".format(iccid[17])),audio_buf.index("R_READ_TIME_{}".format(iccid[18])),audio_buf.index("R_READ_TIME_{}".format(iccid[19])))
- str_data += '{}.mp3+'.format(audio_buf.index("shouhou"))#可联系售后解决,联系方式见售后客服电话是400-886-8777或到微信公众号柒牌SEVENBRAND自行充值:
+ # str_data += '{}.mp3+'.format(audio_buf.index("shouhou"))#可联系售后解决,联系方式见售后客服电话是400-886-8777或到微信公众号柒牌SEVENBRAND自行充值:
+ # EventMesh.publish("load_screen", {"screen": "imei"})#IMEI弹窗
self.aud.montage_play('E:/static/audio.bin',1,1,str_data)
#鉴权出错,播放imei号
def paly_device_res_error(self,event,msg):
audio_buf.index("R_READ_TIME_{}".format(imei[8])),audio_buf.index("R_READ_TIME_{}".format(imei[9])),audio_buf.index("R_READ_TIME_{}".format(imei[10])),audio_buf.index("R_READ_TIME_{}".format(imei[11])),\
audio_buf.index("R_READ_TIME_{}".format(imei[12])),audio_buf.index("R_READ_TIME_{}".format(imei[13])),audio_buf.index("R_READ_TIME_{}".format(imei[14])))
#print("str_data:{}".format(str_data))
+ # EventMesh.publish("load_screen", {"screen": "imei"})#IMEI弹窗
self.aud.montage_play('E:/static/audio.bin',1,1,str_data)
#存储信息
self.is_up_error= 0 #是否上传错误id
self.Close_flag =0 #=1时,连续对话播放完音频就退出
self.AI_alarm = _ai_alarm.AI_alarm()
-
+ self.buffer = bytearray(16384) #音频缓存区
#表情变化状态以及检索词
self.face_status = 0 # 0为正常,1为哭泣,2为愤怒,3为疑惑
self.normal_list = ["别生气"]
# self.Close_flag = 1
self.Close()
EventMesh.publish("UI_ai_close")
- EventMesh.publish("return_prev_screen")
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+ # EventMesh.publish("return_prev_screen")
def AI_key_press(self, event, msg):#按键按下
# 测试闹钟功能
if self.VC_record_TYPE == VC_record_TYPE_AMR:
self.record.stream_stop()
self.record.stop()#关闭录音
- Record_read_buf = bytearray(self.Audio_buf_size)
+ # 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)
+ Record_len = self.record.stream_read(self.buffer, self.Audio_buf_size)
print("Record_len:!!!!!!{}".format(Record_len))
if Record_len <= 0:
break
elif self.VC_record_TYPE == VC_record_TYPE_PCM:
self.record.stream_stop()
self.record.stop()#关闭录音
- Record_read_buf = bytearray(self.Audio_buf_size)
+ # 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)
+ Record_len = self.record.stream_read(self.buffer, self.Audio_buf_size)
print("Record_len:!!!!!!{}".format(Record_len))
if Record_len <= 0:
break
self.VC_record_thread_lock = 1
# 死循环接收数据
#if self.VC_state == VC_State_SpeechStart:
- Record_read_buf = bytearray(self.Audio_buf_size)
+ # Record_read_buf = bytearray(self.Audio_buf_size)
Record_len = 0
if self.VC_record_TYPE == VC_record_TYPE_PCM:#pcm
- Record_len = self.record.stream_read(Record_read_buf, self.Audio_buf_size)
+ Record_len = self.record.stream_read(self.buffer, self.Audio_buf_size)
#utime.sleep_ms(60)
else :
- Record_len = self.record.stream_read(Record_read_buf, self.Audio_buf_size)
+ Record_len = self.record.stream_read(self.buffer, self.Audio_buf_size)
utime.sleep_ms(600)
#Record_len = 1024*2
#print("VC_record_thread:{}".format(Record_len))
if Record_len > 0:
- read_buf = bytes(Record_read_buf[:Record_len])
+ read_buf = bytes(self.buffer[:Record_len])
print("Record_len:{}".format(Record_len))
#VAD检测
if self.is_VAD == 1:
break
#vad_buf_len = len(vad_buf)
if VAD_data_count == 0:#没数据的时候
- vad_buf = Record_read_buf[:self.VAD_data_len]
+ vad_buf = self.buffer[:self.VAD_data_len]
VAD_data_count = self.VAD_data_len
self.vad.custom_vad_reset()#重置vad
else:#有数据的时候
if Record_len - VAD_data_count < self.VAD_data_len :#剩余长度不够一次填充,先保留,但不填算法
- vad_buf = Record_read_buf[VAD_data_count:Record_len]
+ vad_buf = self.buffer[VAD_data_count:Record_len]
VAD_data_count = 0
break
else:#剩余长度够填一次数据
- vad_buf = Record_read_buf[VAD_data_count:VAD_data_count+self.VAD_data_len]
+ vad_buf = self.buffer[VAD_data_count:VAD_data_count+self.VAD_data_len]
VAD_data_count += len(vad_buf)
#print("vad_buf_len:{},{}".format(len(vad_buf),VAD_data_count))
text = cmd["command"]["params_json"]
text = ujson.loads(text)
self.AI_music_str = text["mp3"]
+ self.VC_Speech_End()
return 0
except Exception as e:
usys.print_exception(e)
imei = modem.getDevImei()
if imei != -1 and len(imei) > 5:
print("IMEI:{}".format(imei))
+ # EventMesh.publish("UI_ai_close")
+ # EventMesh.publish("load_screen", {"screen": "imei"})#IMEI弹窗
self.AI_TTS_str = "当前设备号为:{}".format(imei)
+ # self.Close_flag = 1
else:
self.AI_TTS_str = "设备号查询失败"
return 0
else:
EventMesh.publish("UI_ai_close")
EventMesh.publish("publish_AI_btnInfo",{"func":self.Close})
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ screen_name = EventMesh.publish("get_screen_NAME")
+ if screen_name != "main_menu" and screen_name != "imei":
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
pass
# print("get_audio_state !!!!!{} {} {}\r\n".format(self.play_end,EventMesh.publish("get_audio_state"),self.play_flag))
if self.LocalRespondingEnded_timerout>0 :#
if self.Close_flag == 1:
self.Close_flag = 0
EventMesh.publish("publish_AI_btnInfo",{"func":self.Close})
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ if screen_name != "main_menu" and screen_name != "imei":
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
EventMesh.publish("send_device_VC_state")#上传VC状态
else:
#utime.sleep_ms(1000)
def btn8_press(self):
pass
+#IMEI号弹窗
+imei_screen = lv.obj()
+print("imei_screen")
+imei_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+bg_color = lv.palette_lighten(lv.PALETTE.LIGHT_BLUE, 5)
+fg_color = lv.palette_darken(lv.PALETTE.BLUE, 4)
+
+imei_qr = lv.qrcode(imei_screen, 150, fg_color, bg_color)
+imei_qr.center()
+# Add a border with bg_color
+imei_qr.set_style_border_color(bg_color, 0)
+imei_qr.set_style_border_width(5, 0)
+
+imei_label = lv.label(imei_screen)
+imei_label.set_pos(0, 280)
+imei_label.set_size(240, 20)
+imei_label.set_text(" ")
+imei_label.set_long_mode(lv.label.LONG.WRAP)
+imei_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+imei_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+class IMEIScreen(Screen):
+ NAME = "imei"
+ def __init__(self):
+ super().__init__()
+ self.meta = imei_screen
+ self.meta_type = "popup"
+ self.timer = osTimer()
+
+ def initialization(self):
+ imei = EventMesh.publish(constants.EVENT.GET_IMEI)
+ imei_qr_data = str(imei)
+ imei_qr.update(imei_qr_data,len(imei_qr_data))
+ imei_label.set_text(imei)
+
+ def post_processor_after_initialization(self):
+ self.count = 0
+ self.timer.start(1000,1,self.timer_cb_onescond)
+
+ def Close(self):
+ self.timer.stop()
+
+ def timer_cb_onescond(self,e):
+ EventMesh.publish("system_sleep_rest")#防止黑屏
+ self.count+=1
+ if self.count >= 10:
+ self.count = 0
+ self.timer.stop()
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
#正在充电
self.meta = self.charge_in_screen
-
-
def post_processor_after_initialization(self):
self.count = 0
self.timer.start(1000,1,self.timer_cb_onescond)
self.level = 10
elif self.level <= 0:
self.level = 1
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ # EventMesh.publish("load_screen", {"screen": "main_menu"})
utime.sleep_ms(150)
self.PWM_backlight = PWM(PWM.PWM1, PWM.ABOVE_MS, self.level, 10)
self.PWM_backlight.open()