# -*- coding: utf-8 -*- """ 快速尝试单个协议 — 带手机摄像头观察红外LED是否发光 """ import sys import time import serial PORT = sys.argv[1] if len(sys.argv) > 1 else "COM8" KEY = 0x0D # 上 ser = serial.Serial(PORT, baudrate=9600, timeout=0.3) # ═══════════════════════════════════════════════════════ # 尝试1: 完整4字节 NEC [addr, ~addr, cmd, ~cmd] # ═══════════════════════════════════════════════════════ frame = bytes([0x3B, 0xC4, KEY, KEY ^ 0xFF]) print(f"尝试: NEC完整4字节 → {frame.hex(' ').upper()}") print("用手机摄像头看红外LED是否发光...") ser.reset_input_buffer() ser.write(frame) ser.flush() time.sleep(0.15) # 读回应 resp = ser.read(ser.in_waiting) if resp: print(f" 板子回应: {resp.hex(' ').upper()}") else: print(" (无回应)") time.sleep(0.5) # ═══════════════════════════════════════════════════════ # 尝试2: NEC 地址命令格式 [addr, cmd] (有些板子只要2字节) # ═══════════════════════════════════════════════════════ frame = bytes([0x3B, KEY]) print(f"\n尝试: NEC短帧2字节 → {frame.hex(' ').upper()}") print("用手机摄像头看红外LED是否发光...") ser.reset_input_buffer() ser.write(frame) ser.flush() time.sleep(0.15) resp = ser.read(ser.in_waiting) if resp: print(f" 板子回应: {resp.hex(' ').upper()}") else: print(" (无回应)") time.sleep(0.5) # ═══════════════════════════════════════════════════════ # 尝试3: 带命令前缀的发送 (常见 YS-IRTM 风格) # A1 F1 + 地址 + 命令 # ═══════════════════════════════════════════════════════ frame = bytes([0xA1, 0xF1, 0x3B, KEY]) print(f"\n尝试: A1F1命令格式 → {frame.hex(' ').upper()}") print("用手机摄像头看红外LED是否发光...") ser.reset_input_buffer() ser.write(frame) ser.flush() time.sleep(0.15) resp = ser.read(ser.in_waiting) if resp: print(f" 板子回应: {resp.hex(' ').upper()}") else: print(" (无回应)") time.sleep(0.5) # ═══════════════════════════════════════════════════════ # 尝试4: 换一种候选 — 单字节地址 # ═══════════════════════════════════════════════════════ frame = bytes([0xC4, KEY]) print(f"\n尝试: 单地址2字节 → {frame.hex(' ').upper()}") ser.reset_input_buffer() ser.write(frame) ser.flush() time.sleep(0.15) resp = ser.read(ser.in_waiting) if resp: print(f" 板子回应: {resp.hex(' ').upper()}") else: print(" (无回应)") ser.close() print("\n──────") print("用手机摄像头观察:") print(" 红外LED = 白色透明或深紫色的小珠子") print(" 发送时如果发光 → 手机屏幕里能看到紫白色闪光") print(" 完全不亮 → 发送协议不对,板子根本没发射")