| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import os
- import serial
- import time
- class kws_mic:
- def __init__(self, port,kwsquence, baudrate=115200, timeout=1):
- self.ser = None
- self.port = port
- self.baudrate = baudrate
- self.timeout = timeout
- self.running = False
- self.kws_queue = kwsquence
- def open(self):
- try:
- self.ser = serial.Serial(
- port=self.port,
- baudrate=self.baudrate,
- timeout=self.timeout
- )
- if self.ser.is_open:
- print(f"serial {self.port} open")
- self.running = True
- except Exception as e:
- print(f"open serial fail: {e}")
- def close(self):
- if self.ser and self.ser.is_open:
- self.running = False
- self.ser.close()
- print(f"serial {self.port} close")
- def send_data(self, data):
- if self.ser and self.ser.is_open:
- try:
- self.ser.write(data.encode('utf-8'))
- except Exception as e:
- print(f"send fial: {e}")
- def receive_data(self):
- step = 1
- while self.running:
- if self.ser and self.ser.is_open:
- try:
- data = self.ser.read()
- if data:
- dealdata = bytearray(data)[0]
- if dealdata == 0xAA and step ==1:
- step = 2
- elif dealdata == 0x55 and step ==2:
- step = 3
- elif (dealdata == 0x01 or dealdata == 0x02 or dealdata == 0x03 or dealdata == 0x04 or dealdata == 0x05 or dealdata == 0x06) and step ==3:
- step = 4
- elif dealdata == 0x00 and step ==4:
- step = 5
- elif dealdata == 0xFB and step ==5:
- # print("kws detected")
- self.kws_queue.put("resonse_1")
- step = 1
- except Exception as e:
- print(f"recvice fail: {e}")
- time.sleep(0.1)
|