--- /dev/null
+from common import Abstract
+import osTimer
+import EventMesh
+from machine import Pin
+import utime
+
+from queue import Queue
+import _thread
+import usys
+
+led_red = Pin(Pin.GPIO36, Pin.OUT, Pin.PULL_PD, 0)
+
+led_green = Pin(Pin.GPIO44, Pin.OUT, Pin.PULL_PD, 0)
+
+led_white = Pin(Pin.GPIO21, Pin.OUT, Pin.PULL_PD, 0)
+
+
+
+def green_light_fast(num,freq):#快闪 num 循环闪烁次数 freq 交替闪烁的频率ms单位
+ for i in range(num):
+ led_green.write(1)
+ utime.sleep_ms(freq)
+ led_green.write(0)
+ utime.sleep_ms(freq)
+
+def red_light_fast(num,freq):#快闪 #快闪 num 循环闪烁次数 freq 交替闪烁的频率ms单位
+ for i in range(num):
+ led_red.write(1)
+ utime.sleep_ms(freq)
+ led_red.write(0)
+ utime.sleep_ms(freq)
+def red_light_slow(num,freq):#慢闪 #快闪 num 循环闪烁次数 freq 交替闪烁的频率ms单位
+ for i in range(10):
+ led_red.write(1)
+ utime.sleep_ms(500)
+ led_red.write(0)
+ utime.sleep_ms(500)
+
+def red_green_light(num,freq):#红绿灯交替闪烁
+ for i in range(num):
+ led_red.write(1)
+ utime.sleep_ms(freq)
+ led_red.write(0)
+ utime.sleep_ms(freq)
+ led_green.write(1)
+ utime.sleep_ms(freq)
+ led_green.write(0)
+ utime.sleep_ms(freq)
+
+def open_led_red():
+ led_red.write(1)
+
+def close_led_red():
+ led_red.write(0)
+
+def open_led_white():
+ led_white.write(1)
+
+def close_led_white():
+ led_white.write(0)
+
+def open_led_green():
+ led_green.write(1)
+
+def close_led_green():
+ led_green.write(0)
+
+
+
+LED_TIMER_OUT = 100
+class led_mode:
+ LONG_LIGHT_RED = 1
+ LONG_LIGHT_GREEN = 2
+ LONG_LIGHT_WHITE = 3
+ FLASH_LIGHT_RED = 4
+ FLASH_LIGHT_GREEN = 5
+ FLASH_LIGHT_WHITE = 6
+ FLASH_LIGHT_RED_GREEN = 7
+ FLASH_LIGHT_RED_WHITE = 8
+ FLASH_LIGHT_GREEN_WHITE = 9
+ LIGHT_NONE = FLASH_LIGHT_GREEN_WHITE+1
+
+ DEFAULT_LONG_LIGHT_MODE = 0+LIGHT_NONE #默认是关闭
+ OPEN_LONG_LIGHT_MODE = 1+LIGHT_NONE#开启
+ CLOSE_LONG_LIGHT_MODE = 2+LIGHT_NONE#需要关闭
+ INTERVAL_LIGHT_RED = 3+LIGHT_NONE
+ INTERVAL_LIGHT_GREEN = 4+LIGHT_NONE
+ INTERVAL_LIGHT_WHITE = 5+LIGHT_NONE
+
+ OTHER_MEASURE_MODE = 200
+
+ HEALTH_LED_MODE = 201 #健康测试模式
+ WECHAT_LED_MODE = 202 #微聊模式
+ CHARGE_IN_MODE = 203 #充电模式
+ CHARGE_OUT_MODE = 204 #充电已移出
+ CHARGE_FULL_MODE = 205 #充电已满
+
+
+
+
+
+class ledEventManager(Abstract):#灯事件
+ def __init__(self):
+ self.timer = osTimer()
+ self.freq_time = 0#交替闪烁时间 最小100ms
+ self.freq_num = 0#交替闪烁的次数
+ self.flash_light = 0
+ self.total_time = 0
+ self.long_count = 0
+ self.timer_state = 0
+ self.total_count = 0
+ self.freq = 0
+ self.led_state = 0
+ self.long_light_mode = 0
+ self.hr_state = 0
+ self.wechat_btn = 1
+ self.need_hr_btn = 0
+ self.led_open_time = 0
+ self.led_close_time = 0
+ self.led_total_time = 0#闪的总时间
+ self.led_enable = 0
+ self.led_mode = 0
+ self.working_led_mode = None
+ self.ledInfo_queue = Queue()
+ _thread.start_new_thread(self.ledInfo_queue_thread, ())
+ EventMesh.subscribe("publish_message_event_ledInfo",self.publish_message_event_ledInfo)
+ pass
+
+
+ def post_processor_after_instantiation(self):
+ EventMesh.subscribe("set_led_time_arg", self.set_led_time_arg)#设置参数
+ EventMesh.subscribe("get_led_state", self.get_led_state)#设置参数
+
+ EventMesh.subscribe("set_hr_blood_led", self.set_hr_blood_led)#设置参数
+
+ EventMesh.subscribe("set_find_watch_led", self.set_find_watch_led)#设置参数
+
+ EventMesh.subscribe("close_all_led", self.close_all_led)#设置参数
+
+ EventMesh.subscribe("stop_led_timer", self.stop_led_timer)#设置参数
+
+ EventMesh.subscribe("read_red_led_level", self.read_red_led_level)#读取红灯的电平状态
+
+ EventMesh.subscribe("read_green_led_level", self.read_green_led_level)#读取绿灯的电平状态
+
+ EventMesh.subscribe("read_white_led_level", self.read_white_led_level)#读取白灯的电平状态
+
+ EventMesh.subscribe("close_led_pin", self.close_led_pin)#读取白灯的电平状态def close_led_pin(self, event, msg):
+
+
+ def ledInfo_queue_thread(self):
+ while True:
+ data = self.ledInfo_queue.get()
+ #print("ledInfo_queue:data = {}".format(data))
+ if data != None:
+ try:
+ data["func"](data["data"])
+ except Exception as e:
+ print("ledInfo_queue:ERROR:{}".format(e))
+ usys.print_exception(e)
+ def publish_message_event_ledInfo(self,event,msg):
+ self.ledInfo_queue.put(msg)
+
+ def publish_led_event_cb(self, *args, **kwargs):
+ EventMesh.publish("publish_message_event_ledInfo",{"func":self.led_fun_cb,"data":0})
+
+ def read_red_led_level(self, event, msg): #
+ red_level = led_red.read()
+ return red_level
+
+ def read_green_led_level(self, event, msg): #
+ green_level = led_green.read()
+ return green_level
+
+ def read_white_led_level(self, event, msg): #
+ white_level = led_green.read()
+ return white_level
+
+ def set_hr_blood_led(self, event, msg): #
+ print("set_hr_blood_led :{}".format(msg))
+ if msg != None:
+ if msg == 1:
+ EventMesh.publish("set_led_time_arg",[1,2,10*70,led_mode.FLASH_LIGHT_RED_GREEN,10,5,led_mode.HEALTH_LED_MODE])#測量成功
+ # EventMesh.publish("set_led_time_arg",[1000,200,300,led_mode.FLASH_LIGHT_RED_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.HEALTH_LED_MODE])#開始測量
+ elif msg == 2:
+ EventMesh.publish("set_led_time_arg",[1,1,300,led_mode.FLASH_LIGHT_GREEN,31,10*3,led_mode.OTHER_MEASURE_MODE])#測量成功
+ # EventMesh.publish("set_led_time_arg",[3000,1000,1,led_mode.LONG_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#測量成功
+ elif msg == 3:
+ EventMesh.publish("set_led_time_arg",[1,1,300,led_mode.FLASH_LIGHT_RED,31,10*3,led_mode.OTHER_MEASURE_MODE])#測量成功
+ # EventMesh.publish("set_led_time_arg",[3000,1000,1,led_mode.LONG_LIGHT_RED,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#測量失敗
+ #加音频文件
+
+ def set_find_watch_led(self, event, msg): #查找设备
+ EventMesh.publish("OPEN_FIND_WATCH")#
+
+ # EventMesh.publish("set_led_time_arg",[37000,1000,1,led_mode.LONG_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#查找设备绿灯长亮37s
+
+ def get_led_state(self, event, msg): #
+ return self.timer_state
+ def open_timer(self,msg): #msg 0 使能 1总的时间 2 灯模式 3 开启时间 4 关闭时间
+ if msg != None:
+ if len(msg) != 0:
+ self.led_total_time = msg[2]#
+ print("open_timer:{}".format(msg))
+ if self.led_total_time != None:
+
+ if self.led_total_time > 0:
+ self.led_enable=msg[0]
+ if self.led_enable != 0:
+ self.led_mode = msg[1]
+ self.long_light_mode = msg[3]
+ self.led_open_time = msg[4]
+ self.led_close_time = msg[5]
+ self.working_led_mode = msg[6]
+ self.long_count = 0
+
+ if self.timer_state == 0:
+ self.timer_state = 1
+ self.timer.stop()
+
+ EventMesh.publish("close_led_pin")
+ self.timer.start(LED_TIMER_OUT,1,self.publish_led_event_cb)
+
+
+
+
+ def set_led_time_arg(self, event, msg): #msg
+
+ open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+ power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+ print("set_led_time_arg",msg,open_power,power_off)
+ if open_power != None:
+ if open_power == 0:
+ return
+ if power_off != None:
+ if power_off == 1:
+ return
+ usb_in = EventMesh.publish("get_usb")#
+ # print("usb_in",usb_in)
+ if usb_in != None:
+ if usb_in == 1 or usb_in == 3:#正在充电或者充电已满都不要被打断
+ if self.timer_state == 1:
+ self.timer_state = 0
+ self.timer.stop()
+ if usb_in == 1:
+ if self.working_led_mode != led_mode.CHARGE_IN_MODE:
+ str_buf = [1,1,10,led_mode.LONG_LIGHT_RED,4,2,led_mode.CHARGE_IN_MODE]
+ self.open_timer(str_buf)
+ self.working_led_mode = led_mode.CHARGE_IN_MODE
+
+ elif usb_in == 3:
+ if self.working_led_mode != led_mode.CHARGE_FULL_MODE:
+ str_buf = [1,1,10,led_mode.LONG_LIGHT_GREEN,4,2,led_mode.CHARGE_FULL_MODE]
+ self.open_timer(str_buf)
+ self.working_led_mode = led_mode.CHARGE_FULL_MODE
+
+ return
+ else:
+ if msg[5] != led_mode.HEALTH_LED_MODE:
+ self.working_led_mode = led_mode.OTHER_MEASURE_MODE
+
+ get_hr_state = EventMesh.publish("get_hr_state")
+ get_spo2_state = EventMesh.publish("get_spo2_state")
+
+ wechat_state = EventMesh.publish("get_wechat_state")
+ print("get_hr_state",get_hr_state,get_spo2_state,wechat_state,self.working_led_mode)
+ if wechat_state != None: #获取微聊状态
+ if wechat_state == 1:
+ if self.working_led_mode != led_mode.WECHAT_LED_MODE:#如果不在亮微聊模式需要亮微聊模式
+ self.timer_state = 0
+ self.timer.stop()
+ str_buf = [1,1,1,led_mode.LONG_LIGHT_GREEN,4,2,led_mode.WECHAT_LED_MODE]
+ self.open_timer(str_buf)
+ self.working_led_mode = led_mode.WECHAT_LED_MODE
+ return
+ else:
+ return
+
+ else:
+ self.wechat_btn = 0
+ if get_hr_state != 0 or get_spo2_state != 0 :#心率血氧优先级高
+ if self.working_led_mode != led_mode.HEALTH_LED_MODE:#如果不在亮微聊模式需要亮微聊模式
+ print("set_hr_blood_led!!!!!!!!!!")
+ str_buf = [1,2,10*70,led_mode.FLASH_LIGHT_RED_GREEN,10,5,led_mode.HEALTH_LED_MODE]#測量成功
+ self.timer_state = 0
+ self.timer.stop()
+ self.open_timer(str_buf)
+ self.working_led_mode = led_mode.HEALTH_LED_MODE
+ return
+ else:
+ print("set_hr_blood_led stop!!!!!!!!!!")
+ return
+ if get_hr_state == 0 and get_spo2_state == 0:
+ self.working_led_mode = led_mode.OTHER_MEASURE_MODE
+
+ self.open_timer(msg)
+
+
+ def stop_led_timer(self, event, msg):
+ open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+ if open_power != None:
+ if open_power == 0:
+ return
+ EventMesh.publish("close_all_led")#关闭所有的灯
+ # EventMesh.publish("set_led_time_arg",[1,2,2*300,led_mode.FLASH_LIGHT_RED_GREEN,2,1,led_mode.HEALTH_LED_MODE])#測量成功
+ def led_fun_cb(self, data):#
+ if self.led_enable ==0 and self.led_total_time == 0:
+ return
+ # print("self.long_count",self.long_count)
+ if self.led_total_time != 0:
+ #红灯闪烁
+ if self.long_light_mode == led_mode.FLASH_LIGHT_RED :#
+ if self.led_mode == 1:
+ if self.led_total_time > 0:
+ self.led_total_time-=1
+ if self.led_total_time > 0:
+ close_led_green()
+ close_led_white()
+ open_led_red()
+ else:
+ EventMesh.publish("stop_led_timer")#关闭所有的灯
+ elif self.led_mode == 2:
+ self.long_count+=1
+ if self.long_count % (self.led_open_time) < self.led_close_time: # 4*cnt cnt 多少次 4 开启时间保护关闭时间 2 关闭时间 100ms 4-2关闭时间为200ms 开启时间也为200ms
+ close_led_green()
+ close_led_white()
+ open_led_red()
+ pass
+ else:
+ close_led_green()
+ close_led_white()
+ close_led_red()
+ pass
+ if self.long_count >= self.led_total_time:#大于总的时间 4
+ EventMesh.publish("stop_led_timer")#设置参数
+ pass
+ #绿灯闪烁
+ elif self.long_light_mode == led_mode.FLASH_LIGHT_GREEN:#
+ if self.led_mode == 1:#长亮时间限制
+
+ if self.led_total_time > 0:
+ self.led_total_time-=1
+ if self.led_total_time > 0:
+ close_led_red()
+ close_led_white()
+ open_led_green()
+ else:
+ EventMesh.publish("stop_led_timer")#关闭所有的灯
+
+
+ elif self.led_mode == 2:
+ self.long_count+=1
+ if self.long_count % (self.led_open_time) < self.led_close_time: # 4*cnt cnt 多少次 4 开启时间保护关闭时间 2 关闭时间 100ms 4-2关闭时间为200ms 开启时间也为200ms
+ close_led_red()
+ close_led_white()
+ open_led_green()
+ pass
+ else:
+ close_led_green()
+ close_led_white()
+ close_led_red()
+ pass
+ if self.long_count >= self.led_total_time:#大于总的时间 4
+ EventMesh.publish("stop_led_timer")#设置参数
+ pass
+ #蓝灯闪烁 暂时是白色灯
+ elif self.long_light_mode == led_mode.FLASH_LIGHT_WHITE:#
+ if self.led_mode == 1:#长亮时间限制
+ if self.led_total_time > 0:
+ self.led_total_time-=1
+ if self.led_total_time > 0:
+ close_led_red()
+ close_led_green()
+ open_led_white()
+ else:
+ EventMesh.publish("stop_led_timer")#关闭所有的灯
+ elif self.led_mode == 2:
+ self.long_count+=1
+ if self.long_count % (self.led_open_time) < self.led_close_time: # 4*cnt cnt 多少次 4 开启时间保护关闭时间 2 关闭时间 100ms 4-2关闭时间为200ms 开启时间也为200ms
+ close_led_red()
+ close_led_green()
+ open_led_white()
+ pass
+ else:
+ close_led_green()
+ close_led_white()
+ close_led_red()
+ pass
+ if self.long_count >= self.led_total_time:#大于总的时间 4
+ EventMesh.publish("stop_led_timer")#设置参数
+ pass
+ #红绿灯闪烁
+ elif self.long_light_mode == led_mode.FLASH_LIGHT_RED_GREEN:#
+ self.long_count+=1
+
+ if self.long_count % (self.led_open_time) < self.led_close_time: # 4*cnt cnt 多少次 4 开启时间保护关闭时间 2 关闭时间 100ms 4-2关闭时间为200ms 开启时间也为200ms
+ close_led_white()#白色灯
+ close_led_green()
+ open_led_red()
+ pass
+ else:
+ close_led_white()
+ close_led_red()
+ open_led_green()
+ pass
+ if self.long_count >= self.led_total_time:#大于总的时间 4
+ EventMesh.publish("stop_led_timer")#设置参数
+ pass
+ #红蓝灯闪烁 蓝变成白色灯
+ elif self.long_light_mode == led_mode.FLASH_LIGHT_RED_WHITE:#
+ self.long_count+=1
+ if self.long_count % (self.led_open_time) < self.led_close_time: # 4*cnt cnt 多少次 4 开启时间保护关闭时间 2 关闭时间 100ms 4-2关闭时间为200ms 开启时间也为200ms
+ close_led_white()#白色灯
+ close_led_green()
+ open_led_red()
+ pass
+ else:
+ close_led_green()
+ close_led_red()
+ open_led_white()
+ pass
+ if self.long_count >= self.led_total_time:#大于总的时间 4
+ EventMesh.publish("stop_led_timer")#设置参数
+ pass
+ #蓝绿灯闪烁
+ elif self.long_light_mode == led_mode.FLASH_LIGHT_GREEN_WHITE:#
+
+ self.long_count+=1
+ if self.long_count % (self.led_open_time) < self.led_close_time: # 4*cnt cnt 多少次 4 开启时间保护关闭时间 2 关闭时间 100ms 4-2关闭时间为200ms 开启时间也为200ms
+ close_led_white()#白色灯
+ close_led_red()
+ open_led_green()
+ pass
+ else:
+ close_led_green()
+ close_led_red()
+ open_led_white()
+ pass
+ if self.long_count >= self.led_total_time:#大于总的时间 4
+ EventMesh.publish("stop_led_timer")#设置参数
+ pass
+ #红灯长亮
+ elif self.long_light_mode == led_mode.LONG_LIGHT_RED:#
+ close_led_white()#白色灯
+ close_led_green()
+ open_led_red()
+ #绿灯长亮
+ elif self.long_light_mode == led_mode.LONG_LIGHT_GREEN:#
+ close_led_white()#白色灯
+ close_led_red()
+ open_led_green()
+ #蓝灯长亮
+ elif self.long_light_mode == led_mode.LONG_LIGHT_WHITE:#
+ close_led_green()#白色灯
+ close_led_red()
+ open_led_white()
+
+ def close_led_pin(self, event, msg):
+ close_led_red()
+ close_led_green()
+ close_led_white()
+
+ def close_all_led(self, event, msg):
+ print("close_all_led!!!!")
+ usb_in = EventMesh.publish("get_usb")#
+ if usb_in != None:
+ if usb_in == 1 or usb_in == 3:#正在充电或者充电已满都不要被打断
+ self.timer_state = 0
+ self.timer.stop()
+ return
+ else:
+ get_hr_state = EventMesh.publish("get_hr_state")
+ get_spo2_state = EventMesh.publish("get_spo2_state")
+
+ wechat_state = EventMesh.publish("get_wechat_state")
+ print("get_hr_state",get_hr_state,get_spo2_state,wechat_state,self.working_led_mode)
+ if wechat_state != None: #获取微聊状态
+ if wechat_state == 1 or get_spo2_state != 0 or get_hr_state != 0:
+ return
+ self.timer_state = 0
+ self.timer.stop()
+ self.led_total_time = 0
+ self.led_enable = 0
+ self.led_mode = 0
+ self.long_light_mode = 0
+ self.led_open_time = 0
+ self.led_close_time = 0
+ self.working_led_mode = 0
+ self.long_count = 0
+ close_led_red()
+ close_led_green()
+ close_led_white()
+ print("close led!!!")
+
+ def led_test_fun_cb(self, data):
+ return
+ if 0:
+ # print("self.freq_time :{} self.freq_num:{} self.flash_light:{}".format(self.freq_time,self.freq_num,self.flash_light))
+ if self.freq_time != 0 and self.freq_num != 0 and self.flash_light != 0:
+ if self.flash_light == led_mode.LONG_LIGHT_RED:
+ if self.total_time != 0:
+ if self.long_light_mode == led_mode.DEFAULT_LONG_LIGHT_MODE:#不是长亮模式 只需要长亮3 5 7 s这样就关闭长亮
+ count = self.total_time//LED_TIMER_OUT#100ms单位
+ self.long_count+=1
+ if self.long_count == 1:
+ close_led_green()
+ close_led_white()
+ open_led_red()#亮红灯 高电平
+
+ elif self.long_count >= count :#不开长亮 只亮3 5 s这样就直接关闭
+ close_led_red()#亮红灯 低电平
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ elif self.long_light_mode == led_mode.OPEN_LONG_LIGHT_MODE:#开启长亮,需要手动发指令关闭长亮模式
+ EventMesh.publish("stop_led_timer")#设置参数
+ close_led_green()
+ close_led_white()
+ open_led_red()#亮红灯 高电平
+
+
+ elif self.long_light_mode == led_mode.CLOSE_LONG_LIGHT_MODE:#关闭长亮模式
+ close_led_red()#亮红灯 低电平
+ EventMesh.publish("stop_led_timer")#设置参数
+ else:
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ elif self.flash_light == led_mode.LONG_LIGHT_GREEN:
+ if self.total_time != 0:
+ if self.long_light_mode == led_mode.DEFAULT_LONG_LIGHT_MODE:#不是长亮模式 只需要长亮3 5 7 s这样就关闭长亮
+ count = self.total_time//LED_TIMER_OUT#100ms单位
+ self.long_count+=1
+ if self.long_count == 1:
+ close_led_red()
+ close_led_white()
+ open_led_green()#亮绿灯 高电平
+
+ elif self.long_count >= count :#不开长亮 只亮3 5 s这样就直接关闭
+ close_led_green()#亮绿灯 低电平
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ elif self.long_light_mode == led_mode.OPEN_LONG_LIGHT_MODE:#开启长亮,需要手动发指令关闭长亮模式
+ EventMesh.publish("stop_led_timer")#设置参数
+ close_led_red()
+ close_led_white()
+ open_led_green()#亮绿灯 高电平
+
+
+ elif self.long_light_mode == led_mode.CLOSE_LONG_LIGHT_MODE:#关闭长亮模式
+ close_led_green()#亮绿灯 低电平
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ else:
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ elif self.flash_light == led_mode.LONG_LIGHT_WHITE:
+ if self.total_time != 0:
+ if self.long_light_mode == led_mode.DEFAULT_LONG_LIGHT_MODE:#不是长亮模式 只需要长亮3 5 7 s这样就关闭长亮
+ count = self.total_time//LED_TIMER_OUT#100ms单位
+ self.long_count+=1
+ if self.long_count == 1:
+ close_led_green()
+ close_led_red()
+ open_led_white()#亮绿灯 高电平
+ elif self.long_count >= count:
+ close_led_white()#亮绿灯 低电平
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ elif self.long_light_mode == led_mode.OPEN_LONG_LIGHT_MODE:#开启长亮,需要手动发指令关闭长亮模式
+ EventMesh.publish("stop_led_timer")#设置参数
+ close_led_green()
+ close_led_red()
+ open_led_white()#亮绿灯 高电平
+
+ elif self.long_light_mode == led_mode.CLOSE_LONG_LIGHT_MODE:#开启长亮,需要手动发指令关闭长亮模式
+ close_led_white()#亮绿灯 低电平
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ else:#防止长亮时未设置长亮总时长 未设置不开灯
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ elif self.flash_light == led_mode.FLASH_LIGHT_RED:#红灯快速闪烁 灭灯时间和闪烁时间一致
+ if self.total_time != 0:
+ count = self.freq_num
+ self.freq = self.freq_time // LED_TIMER_OUT#
+ self.long_count+=1
+ # print("self.freq : {} FLASH_LIGHT_RED count :{} self.long_count:{} self.total_count:{}".format(self.freq,count,self.long_count,self.total_count))
+ if self.long_count == 1:#间隔多久闪一次 100ms单位
+ close_led_green()
+ close_led_white()
+ open_led_red()#亮白灯 高电平
+ elif self.long_count == self.freq+1:
+ self.total_count+=1
+ close_led_red()#亮白灯 低电平
+ if self.long_count >= self.freq*2:
+ self.long_count = 0
+
+ # print("self.total_count:{}".format(self.total_count))
+ if self.total_count >= count:
+ close_led_red()#亮白灯 低电平
+ self.total_count = 0
+ self.long_count = 0
+ EventMesh.publish("stop_led_timer")#设置参数
+
+
+ else:#防止长亮时未设置长亮总时长 未设置不开灯
+ EventMesh.publish("stop_led_timer")#设置参数
+ elif self.flash_light == led_mode.FLASH_LIGHT_GREEN:#绿灯快速闪烁
+ if self.total_time != 0:
+ count = self.freq_num
+ self.freq = self.freq_time // LED_TIMER_OUT#
+ self.long_count+=1
+ # print("self.freq : {} FLASH_LIGHT_GREEN count :{} self.long_count:{} self.total_count:{}".format(self.freq,count,self.long_count,self.total_count))
+ if self.long_count == 1:#间隔多久闪一次 100ms单位
+ close_led_red()
+ close_led_white()
+ open_led_green()#亮白灯 高电平
+ elif self.long_count == self.freq+1:
+ self.total_count+=1
+ close_led_green()#亮白灯 低电平
+ if self.long_count >= self.freq*2:
+ self.long_count = 0
+
+ # print("self.total_count:{}".format(self.total_count))
+ if self.total_count >= count:
+ close_led_green()#亮白灯 低电平
+ self.total_count = 0
+ self.long_count = 0
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ else:#防止长亮时未设置长亮总时长 未设置不开灯
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ elif self.flash_light == led_mode.FLASH_LIGHT_WHITE:#白灯灯快速闪烁
+ if self.total_time != 0:
+ count = self.freq_num
+ self.freq = self.freq_time // LED_TIMER_OUT#
+ self.long_count+=1
+ # print("self.freq : {} FLASH_LIGHT_WHITE count :{} self.long_count:{} self.total_count:{}".format(self.freq,count,self.long_count,self.total_count))
+ if self.long_count == 1:#间隔多久闪一次 100ms单位
+ close_led_green()
+ close_led_red()
+ open_led_white()#亮白灯 高电平
+ elif self.long_count == self.freq+1:
+ self.total_count+=1
+ close_led_white()#亮白灯 低电平
+ if self.long_count >= self.freq*2:
+ self.long_count = 0
+
+ # print("self.total_count:{}".format(self.total_count))
+ if self.total_count >= count:
+ close_led_white()#亮白灯 低电平
+ self.total_count = 0
+ self.long_count = 0
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ else:#防止长亮时未设置长亮总时长 未设置不开灯
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ elif self.flash_light == led_mode.INTERVAL_LIGHT_RED:#间隔闪烁
+ if self.total_time != 0:
+ count = self.freq_num
+ self.freq = self.freq_time // LED_TIMER_OUT#
+ self.long_count+=1
+ # print("self.freq : {} FLASH_LIGHT_RED count :{} self.long_count:{} self.total_count:{}".format(self.freq,count,self.long_count,self.total_count))
+ if self.long_count == 1:#间隔多久闪一次 100ms单位
+ close_led_green()
+ close_led_white()
+ open_led_red()#亮白灯 高电平
+ elif self.long_count == self.freq+1:
+ self.total_count+=1
+ close_led_red()#亮白灯 低电平
+ if self.long_count >= self.freq*2:
+ self.long_count = 0
+
+ # print("self.total_count:{}".format(self.total_count))
+ if self.total_count >= count:
+ close_led_red()#亮白灯 低电平
+ self.total_count = 0
+ self.long_count = 0
+ EventMesh.publish("stop_led_timer")#设置参数
+
+
+ else:#防止长亮时未设置长亮总时长 未设置不开灯
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ elif self.flash_light == led_mode.INTERVAL_LIGHT_GREEN:#绿灯快速闪烁
+ if self.total_time != 0:
+ count = self.freq_num
+ self.freq = self.freq_time // LED_TIMER_OUT#
+ self.long_count+=1
+ # print("self.freq : {} FLASH_LIGHT_GREEN count :{} self.long_count:{} self.total_count:{}".format(self.freq,count,self.long_count,self.total_count))
+ if self.long_count == 1:#间隔多久闪一次 100ms单位
+ close_led_red()
+ close_led_white()
+ open_led_green()#亮白灯 高电平
+ elif self.long_count == self.freq+1:
+ self.total_count+=1
+ close_led_green()#亮白灯 低电平
+ if self.long_count >= self.freq*2:
+ self.long_count = 0
+
+ # print("self.total_count:{}".format(self.total_count))
+ if self.total_count >= count:
+ close_led_green()#亮白灯 低电平
+ self.total_count = 0
+ self.long_count = 0
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ else:#防止长亮时未设置长亮总时长 未设置不开灯
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ elif self.flash_light == led_mode.INTERVAL_LIGHT_WHITE:#白灯灯快速闪烁
+ if self.total_time != 0:
+ count = self.freq_num
+ self.freq = self.freq_time // LED_TIMER_OUT#
+ self.long_count+=1
+ # print("self.freq : {} FLASH_LIGHT_WHITE count :{} self.long_count:{} self.total_count:{}".format(self.freq,count,self.long_count,self.total_count))
+ if self.long_count == 1:#间隔多久闪一次 100ms单位
+ close_led_green()
+ close_led_red()
+ open_led_white()#亮白灯 高电平
+ elif self.long_count == self.freq+1:
+ self.total_count+=1
+ close_led_white()#亮白灯 低电平
+ if self.long_count >= self.freq*2:
+ self.long_count = 0
+
+ # print("self.total_count:{}".format(self.total_count))
+ if self.total_count >= count:
+ close_led_white()#亮白灯 低电平
+ self.total_count = 0
+ self.long_count = 0
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ else:#防止长亮时未设置长亮总时长 未设置不开灯
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ elif self.flash_light == led_mode.FLASH_LIGHT_RED_GREEN:#红绿灯灯快速闪烁
+ if self.total_time != 0:
+ count = self.freq_num
+ self.freq = self.freq_time // LED_TIMER_OUT#
+ self.long_count+=1
+ if self.long_count == 1:#间隔多久闪一次 100ms单位
+ close_led_white()
+ close_led_green()#亮白灯 低电平
+ open_led_red()#紅
+ elif self.long_count == 1*self.freq+1:#5 6 7 8
+ close_led_red()#亮白灯 低电平
+ close_led_green()#亮白灯 低电平
+
+ elif self.long_count == 2*self.freq+1:#5 6 7 8
+ open_led_green()#綠
+
+ elif self.long_count == 3*self.freq+1:#5 6 7 8
+ close_led_red()#亮白灯 低电平
+ close_led_green()#亮白灯 低电平
+ self.total_count += 1
+
+ if self.long_count >= 4*self.freq:
+ self.long_count = 0
+ # print("self.total_count:{}".format(self.total_count))
+ if self.total_count >= count:
+ close_led_green()#亮白灯 低电平
+ close_led_red()#亮白灯 低电平
+ self.long_count = 0
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ else:#防止长亮时未设置长亮总时长 未设置不开灯
+ EventMesh.publish("stop_led_timer")#设置参数
+ elif self.flash_light >= led_mode.LIGHT_NONE:#未知
+ EventMesh.publish("stop_led_timer")#设置参数
+
+ else:
+ EventMesh.publish("stop_led_timer")#关闭定时器和关闭所有的led灯
+
+
+