import serial import serial.tools.list_ports import time import sys class USB_board: def __init__(self, port=None, baudrate=115200, timeout=1): # 自动查找 ESP32 端口 if port is None: port = self.find_esp32_port() self.ser = serial.Serial(port, baudrate, timeout=timeout) time.sleep(2) # 等待 ESP32 初始化 def find_esp32_port(self): """自动查找 ESP32 的串口端口""" ports = list(serial.tools.list_ports.comports()) for port in ports: if "USB" in port.description: # 根据描述过滤端口(可以使用具体的描述或 VID/PID) return port.device raise Exception("ESP32 串口未找到") def send_command(self, command): """发送命令到 ESP32""" if self.ser.isOpen(): self.ser.write((command + '\n').encode()) # 发送命令并换行 time.sleep(0.3) # 等待 ESP32 响应 response = self.ser.read(self.ser.in_waiting).decode() # 读取 ESP32 的响应 return response else: raise ConnectionError("Serial port not open") def close(self): """关闭串口连接""" if self.ser.isOpen(): self.ser.close() if __name__ == "__main__": USB_board = USB_board() # 自动找到 ESP32 端口 try: command = "restart" response = USB_board.send_command(command) print("ESP32 响应:", response) finally: print("Restart Complete.") print("Closing Program.") USB_board.close() # 关闭连接