python - 需要一个简单的解决方案来使用 python IR(NEC) 和 RF(433.3kHz) 库发送十六进制代码
问题描述
我想将我已经工作的项目从 C++ 转换为 python 项目。我的项目包含两个组件,IR-Transmitter 和 RF-Transmitter 正在使用(https://github.com/crankyoldgit/IRremoteESP8266和https://github.com/adafruit/Adafruit_AMRadio)。所以我已经有了我想要模仿的遥控器的所有十六进制代码。现在我找不到一个简单的解决方案,如何使用 python 库将这些代码发送到连接到 PINS 的发射器。我想在安装了 ubuntu 服务器 v18.04.2 操作系统的 RaspberryPi3 上运行此代码。如果有人对此有一个好的和简单的解决方案,那就太好了。
我试图这样做https://pypi.org/project/python-lirc/但它比我想象的要复杂得多,我不想再次输入我所有的远程按钮。我搜索了大约 5 小时,但没有找到适合我的解决方案。
#include <RCSwitch.h>
#include <IRsend.h>
#include <IRremoteESP8266.h>
const int SEND_SAMSUNG_PIN = D5;
# ... some more IR sender
const int RESEIVER = D8;
IRsend irsendSamsung = IRsend(SEND_SAMSUNG_PIN);
RCSwitch rfSender = RCSwitch();
...
const char TYPE[][10] = {"SAMSUNG", "TEAC", "SWITCH", "LED"};
void initializePins() {
irsendSamsung.begin();
...
rfSender.enableTransmit(SEND_SWITCH_PIN);
}
# My Codes always look like 0x000000
void sendHexCode(const char* type, uint32_t code){
if (strstr(type, TYPE[0]) != 0) {
irsendSamsung.sendNEC(code, 32);
Serial.println("SAMSUNG");
}
...
else if (strstr(type, TYPE[2]) != 0) {
rfSender.send(code, 24);
Serial.println("SWITCH");
}
}
这是我想要转换的 c++ Arduino 代码的一小段
解决方案
树莓派上的 Python 应该已经RPi.GPIO
预装了这个库。这使您能够打开和关闭 GPIO 引脚,或在引脚上输出脉冲宽度调制信号。
如果您需要使用 Python 通过 I2C 或 SPI 与外围设备通信,则需要为此安装额外的库。
理想情况下,您需要RCSwitch
和IRSend
库的 Python 端口。如果这些不存在,您将有几个选择。
- 查看他们的代码并将所需的功能“移植”到 Python。
- 如果库有 C 接口,请尝试使用 Python 中的原始库,使用
ctypes
. (如果它只提供 C++ 接口,则不应这样做。) - 使用 .为 C++ 库编写 Python 包装器
boost.Python
。
推荐阅读
- javascript - 导出excel文件中的对象数组(JavaScript)
- laravel - Laravel Exception 正在将用户带到登录页面
- sqlite - 机器人在说坏话后没有警告我
- c# - ASPNET 核心。删除特定用户的会话
- python - 使用 pygame 2.0.x 设置伽玛
- c - C语言中客户端和服务器之间的套接字通信
- arduino - Sprintf 没有打印行中的所有内容(Arduino)
- spring - 在redis服务器上设置spring session
- reactjs - ReactJS - 如何使用 React Bootstrap 将输入的值保存到状态
- json - 带有空字符串或 Nil 的 Swift 可解码日期