rpi-rf_send脚本+ python raspberry pi中的硬编码RF代码

ua4mk5z4  于 2024-01-05  发布在  Python
关注(0)|答案(1)|浏览(205)

我想在rpi-rf_send.py send脚本中硬编码RF代码,这样我就可以重复自动激活同一设备。
我看了所有的文件,我找不到任何明确的方法来做到这一点。

https://pypi.org/project/rpi-rf/
https://github.com/milaq/rpi-rf
当以这种格式直接从终端传递参数时,它工作得很好:

  1. python3 send.py -p 174 -t 1 123456

字符串
但是我需要做的是将这些arg变量硬编码到脚本中,我找不到任何关于如何做到这一点的指导。
代码如下:

  1. import argparse
  2. import logging
  3. from rpi_rf import RFDevice
  4. logging.basicConfig(level=logging.INFO, datefmt='%Y-%m-%d %H:%M:%S',
  5. format='%(asctime)-15s - [%(levelname)s] %(module)s: %(message)s',)
  6. parser = argparse.ArgumentParser(description='Sends a decimal code via a 433/315MHz GPIO device')
  7. parser.add_argument('code', metavar='CODE', type=int,
  8. help="Decimal code to send")
  9. parser.add_argument('-g', dest='gpio', type=int, default=17,
  10. help="GPIO pin (Default: 17)")
  11. parser.add_argument('-p', dest='pulselength', type=int, default=None,
  12. help="Pulselength (Default: 350)")
  13. parser.add_argument('-t', dest='protocol', type=int, default=None,
  14. help="Protocol (Default: 1)")
  15. parser.add_argument('-l', dest='length', type=int, default=None,
  16. help="Codelength (Default: 24)")
  17. parser.add_argument('-r', dest='repeat', type=int, default=10,
  18. help="Repeat cycles (Default: 10)")
  19. args = parser.parse_args()
  20. rfdevice = RFDevice(args.gpio)
  21. rfdevice.enable_tx()
  22. rfdevice.tx_repeat = args.repeat
  23. if args.protocol:
  24. protocol = args.protocol
  25. else:
  26. protocol = "default"
  27. if args.pulselength:
  28. pulselength = args.pulselength
  29. else:
  30. pulselength = "default"
  31. if args.length:
  32. length = args.length
  33. else:
  34. length = "default"
  35. logging.info(str(args.code) +
  36. " [protocol: " + str(protocol) +
  37. ", pulselength: " + str(pulselength) +
  38. ", length: " + str(length) +
  39. ", repeat: " + str(rfdevice.tx_repeat) + "]")
  40. rfdevice.tx_code(args.code, args.protocol, args.pulselength, args.length)
  41. rfdevice.cleanup()


我已经尝试过直接传递参数来测试rfdevice.tx_code中的变量,但仍然会收到错误。我试过:

  1. rfdevice.tx_codes(123456, 1, 174)


跟踪返回以下内容:

  1. usage:send.py [-h] [-g GPIO] [-p PULSELENGTH] [-t PROTOCOL] C
  2. send.py: error: the following arguments the following are required: C


第二:

  1. rfdevice.tx_code(123456.code, 1.protocol, 174.pulselength)


它返回一个“无效语法”错误...
你们中有谁知道我需要编辑哪个变量来硬编码RF代码来复制“python3 send.py-p 174 -t 1 123456”?

ux6nzvsh

ux6nzvsh1#

好吧,解决了这个问题. send.py
只需添加:

  1. import subprocess
  2. subprocess.Popen(['python','send.py','-p','174','-t','1','123456'])

字符串

相关问题