我正在尝试用 Python3 编写小脚本来启动并设置我的 Benq 投影仪中的源,该源将从通过 USB 转串行连接器连接到投影仪的 Home Assistant 服务器启动。
我已经编写了该脚本:
import serial
ser = serial.Serial('/dev/ttyUSB0', baudrate=115200, bytesize=8, timeout=none, parity=PARITY_NONE, stopbits=STOPBITS_ONE, xonxoff=False, rtscts=False)
for i in range(1,20):
ser.write("*pow=?#\r\n")
sleep (1)
ans = ser.readline()
if ans == "ON"
for j in range(1,3):
ser.write("*sour=?#\r\n")
sleep (1)
ans = ser.readline()
if ans == HDMI2:
exit
else
ser.write("*sour=HDMI2#\r\n")
sleep (1)
else
sleep (3)
ser.flush()
ser.close()
基本上我想要实现的是脚本通过串行命令 *pow=?# 询问投影仪投影仪已打开。投影仪可以返回关闭或打开。对于第一个答案脚本,应等待 3 秒并再次询问。从投影仪读取脚本后,第二个查询应开始询问当前源(命令 *sour=?# )。答案可以是 HDMI、HDMI2 或 HDMI3。因为投影仪会记住最后选择的源,所以我不想向垃圾邮件端口发送垃圾邮件,并且如果已经选择了正确的源,则不会触摸源。
或者,最后一部分可以稍微修改一下,整个代码可以是这样的:
import serial
ser = serial.Serial('/dev/ttyUSB0', baudrate=115200, bytesize=8, timeout=none, parity=PARITY_NONE, stopbits=STOPBITS_ONE, xonxoff=False, rtscts=False)
for i in range(1,20):
ser.write("*pow=?#\r\n")
sleep (1)
ans = ser.readline()
if ans == "ON"
ser.write("*sour=HDMI2#\r\n")
sleep (1)
ans = ser.readline()
if ans == HDMI2:
exit
else
ser.write("*sour=HDMI2#\r\n")
sleep (1)
else
sleep (3)
ser.flush()
ser.close()
不确定我的理解是否正确。有人可以查看我的代码来检查它是否正确吗?
或者您使用 HACS 中提供的我的 BenQ 投影仪集成: https://github.com/rrooggiierr/homeassistant-benqprojector