self.KeyAI_long_press = 0
self.KeySos_long_press = 0
self.KeyAI_press = 0
+ self.last_ai_key_time = 0#让ai按键不要频繁调用
if self.is_wdt == 1:
self.wdt = WDT(30) #开启看门狗
# self.wdt_timer = osTimer()
interval = 0
try:
- # 1. 按键电平判断(硬件低电平按下,根据实际调整)
+ #按键电平判断
press_level = 0
current_level = self.pwk_key.read_level()
if current_level != press_level:
return # 非按下状态,直接返回
- # 2. 消抖处理
+ #消抖处理
current_time = utime.ticks_ms()
if utime.ticks_diff(current_time, self.last_key_time) < self.key_debounce_interval:
return
self.last_key_time = current_time # 更新最后按键时间
print("pwk 按键按下")
- # 3. 仅处理"按下瞬间"事件(避免重复触发)
+ #仅处理"按下瞬间"事件(避免重复触发)
if len(args) < 2:
print("args参数不足,跳过")
return
if self.pwk_key_status != 1:
return
- # 4. 双击计数逻辑
+ #双击计数逻辑
self.pwk_press_count += 1
current_time = utime.ticks_ms()
# 计算两次按下间隔
interval = utime.ticks_diff(current_time, self.pwk_first_press_time)
- # 2.1 符合双击阈值:执行双击逻辑
+ #符合双击阈值:执行双击逻辑
if interval <= self.double_click_threshold:
self.pwk_key_timer.stop() # 停止长按定时器(关键:避免触发长按)
self.pwk_key_double_press() # 执行双击业务
self.pwk_key_press = 0
self.pwk_key_timer_count = 0
- # 2.2 间隔过长:视为新的第一次按下
+ #间隔过长:视为新的第一次按下
else:
self.pwk_first_press_time = current_time # 更新首次按下时间
self.pwk_press_count = 1 # 重置为第一次按下
def keyAI_extint_cb(self,args):#call 2
try:
#print("AI_btn:keyAI_extint_cb{}".format(args[1]))
+ #定义最短触发间隔
+ MIN_TRIGGER_INTERVAL = 100 # 可根据需求调整,单位ms
+ #记录上次按键触发时间(初始化放类的__init__里:self.last_ai_key_time = 0)
+ current_time = utime.ticks_ms() # 获取当前毫秒时间
+ #重复按下,直接返回
+ if utime.ticks_diff(current_time, self.last_ai_key_time) < MIN_TRIGGER_INTERVAL:
+ print("AI按键触发过频,忽略本次操作")
+ return
+ #更新上次触发时间
+ self.last_ai_key_time = current_time
+
self.KeyAI_status = int(args[1])
if self.KeyAI_status == 0:
self.KeyAI_status = 1
if self.VC_mode == 1: #长按对话模式 接收到蓝牙耳机按键事件
- tts_str = "请您按住中间的按钮开始讲话,讲完松开即可 "
+ tts_str = "请您按住圆形的按钮开始讲话,讲完松开即可 "
EventMesh.publish("play_tts",[tts_str,1])
return
# if dev_type == "7PIN":
if dev_type == "7PIN_BK_EU":
self.AI_TTS_str = "Please press and hold the button to speak. "
else:
- self.AI_TTS_str = "请您按住中间的按钮开始讲话,讲完松开即可 "
+ self.AI_TTS_str = "请您按住圆形的按钮开始讲话,讲完松开即可 "
EventMesh.publish("publish_AI_btnInfo",{"func":self.AI_VC_start})
pass
return
print("kws_even_cb")
if self.VC_mode == 1:
- tts_str = "请您按住中间的按钮开始讲话,讲完松开即可 "
+ tts_str = "请您按住圆形的按钮开始讲话,讲完松开即可 "
EventMesh.publish("play_tts",[tts_str,1])
return
if self.VC_mode == 0: