我想在rpi-rf_send.py发送脚本中硬编码RF代码,以便我可以自动重复激活相同的设备。
我已经阅读了所有的文档,但我找不到任何明确的方法来做到这一点。
文档:https://pypi.org/project/rpi-rf/
https://github.com/milaq/rpi-rf
当以这种格式从终端直接传递参数时效果很好:
python3 send.py -p 174 -t 1 123456
但是我需要做的是硬编码这些arg变量到脚本中,我找不到关于如何做到这一点的任何方向。
代码如下:
import argparse
import logging
from rpi_rf import RFDevice
logging.basicConfig(level=logging.INFO, datefmt='%Y-%m-%d %H:%M:%S',
format='%(asctime)-15s - [%(levelname)s] %(module)s: %(message)s',)
parser = argparse.ArgumentParser(description='Sends a decimal code via a 433/315MHz GPIO device')
parser.add_argument('code', metavar='CODE', type=int,
help="Decimal code to send")
parser.add_argument('-g', dest='gpio', type=int, default=17,
help="GPIO pin (Default: 17)")
parser.add_argument('-p', dest='pulselength', type=int, default=None,
help="Pulselength (Default: 350)")
parser.add_argument('-t', dest='protocol', type=int, default=None,
help="Protocol (Default: 1)")
parser.add_argument('-l', dest='length', type=int, default=None,
help="Codelength (Default: 24)")
parser.add_argument('-r', dest='repeat', type=int, default=10,
help="Repeat cycles (Default: 10)")
args = parser.parse_args()
rfdevice = RFDevice(args.gpio)
rfdevice.enable_tx()
rfdevice.tx_repeat = args.repeat
if args.protocol:
protocol = args.protocol
else:
protocol = "default"
if args.pulselength:
pulselength = args.pulselength
else:
pulselength = "default"
if args.length:
length = args.length
else:
length = "default"
logging.info(str(args.code) +
" [protocol: " + str(protocol) +
", pulselength: " + str(pulselength) +
", length: " + str(length) +
", repeat: " + str(rfdevice.tx_repeat) + "]")
rfdevice.tx_code(args.code, args.protocol, args.pulselength, args.length)
rfdevice.cleanup()
我试着用rfdevice中的变量做实验。Tx_code通过直接传递参数,但仍然得到错误。我试过:
rfdevice.tx_codes(123456, 1, 174)
跟踪返回如下:
usage:send.py [-h] [-g GPIO] [-p PULSELENGTH] [-t PROTOCOL] C
send.py: error: the following arguments the following are required: C
其次:
rfdevice.tx_code(123456.code, 1.protocol, 174.pulselength)
返回"无效语法";错误…
你们中有谁知道我需要编辑哪个变量来硬编码RF代码来复制"python3 send.py -p 174 -t 1 123456"?
提前感谢。
好了,我明白了…好吧,至少有一个解决办法。不必尝试更改send.py脚本中的变量,您可以使用子进程库在需要时执行脚本并将参数传递给它。
只需添加:
import subprocess
subprocess.Popen(['python','send.py','-p','174','-t','1','123456'])