93 lines
3.5 KiB
Python
93 lines
3.5 KiB
Python
# -*- 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(" 完全不亮 → 发送协议不对,板子根本没发射")
|