MCP2Serial
- tests
import serial
import time
import logging
# 设置日志级别
logging.basicConfig(
level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
def test_serial_basic():
"""基本的串口通信测试"""
try:
# 连接串口
port = "COM11" # 使用实际的端口号
ser = serial.Serial(
port=port,
baudrate=115200,
timeout=2.0
)
logger.info(f"Connected to {port}")
# 测试发送命令并接收响应
commands = [
"PICO_INFO\r\n", # 添加换行符
"PWM 50\r\n"
]
for cmd in commands:
logger.info(f"\nTesting command: {cmd.strip()}")
# 清空缓冲区
ser.reset_input_buffer()
ser.reset_output_buffer()
# 发送命令
bytes_written = ser.write(cmd.encode())
logger.info(f"Sent {bytes_written} bytes")
ser.flush()
# 等待一段时间确保命令被处理
time.sleep(0.1)
# 读取响应
while ser.in_waiting:
response = ser.readline()
try:
decoded = response.decode().strip()
logger.info(f"Raw response: {response}")
logger.info(f"Decoded response: {decoded}")
except UnicodeDecodeError:
logger.error(f"Failed to decode response: {response}")
# 如果收到完整响应就退出
if decoded.startswith("OK") or "ERROR" in decoded:
break
time.sleep(1) # 命令之间等待
ser.close()
logger.info("Test completed successfully")
except serial.SerialException as e:
logger.error(f"Serial error: {e}")
raise
except Exception as e:
logger.error(f"Unexpected error: {e}")
raise
if __name__ == "__main__":
test_serial_basic()