Skip to main content

用于控制 Raspberry Pi GPIO 通道的模块

项目描述

这个包提供了一个 Python 模块来控制 Raspberry Pi 上的 GPIO。

请注意,此模块不适用于实时或时序关键应用。这是因为您无法预测 Python 何时会忙于垃圾收集。它还运行在不适合实时应用程序的 Linux 内核下——它是多任务操作系统,另一个进程可能优先于 CPU,从而导致程序抖动。如果您追求真正的实时性能和可预测性,请给自己买一个 Arduino http://www.arduino.cc

请注意,当前版本尚不支持 RPi 上的 SPI、I2C、硬件 PWM 或串行功能。这是在不久的将来计划的——注意这个空间!还计划了单线功能。

虽然硬件 PWM 尚不可用,但软件 PWM 可用于所有通道。

有关示例和文档,请访问http://sourceforge.net/p/raspberry-gpio-python/wiki/Home/

更改日志

0.7.1

  • 更好的 RPi 板 + peri_addr 检测(issue 190 / 191)

  • 修复 Python 3.9 的 PyEval_InitThreads 弃用警告(问题 188)

  • 使用 GCC 10 修复构建(问题 187)

  • 修复文档字符串以不包含许可证

  • 删除 Debian/Raspbian 拉伸打包支持

  • 使用 setuptools 而不是 distutils

  • 添加了零 2 W 检测

  • 测试并使用 Python 2.7、3.7、3.8、3.9、3.10

0.7.0

  • 更新 RPI_INFO 以包含 RPi 4B

  • 修复了 Pi4 的上拉/下拉(问题 168)

  • 修复文档字符串中的拼写错误

  • 在 Raspbian Buster + Python 3.8.0b2 上测试和工作

  • 修复 aarch64 的板检测(问题 161 / 165)

  • 修复检查 c_gpio.c 中的 mmap 返回值(问题 166)

0.6.5

  • 修复重新导出 /sys/class/gpio/gpioNN 的异常

0.6.4

  • 事件清理错误(问题 145)

  • 引发重复 PWM 对象的异常(问题 54 - Thijs Schreijer < thijs @ thijsschreijer . nl >)

  • 修复构建警告(问题 146 - Dominik George)

  • 对于 python 2+3,test.py 运行不变

  • 软 PWM 停止运行修复(问题 94、111、154)

  • 软 PWM 段错误修复(Luke Allen 拉取请求)

0.6.3

  • 修复代码,使其在 PyPy (Gasper Zejn) 下构建

  • os.system 中断事件检测 - Matt Kimball (issue 127)

0.6.2

  • 重写 Debian 打包机制

  • RPI_INFO 报告 Pi 3

  • 更改了模块布局 - 将 C 组件移至 RPi._GPIO

0.6.1

  • 更新 RPI_INFO 以检测更多板类型

  • 问题 118 - add_event_detect 有时会给 unpriv 用户提供运行时错误

  • 问题 120 - setmode() 记住无效模式

0.6.0a3

  • 现在使用 /dev/gpiomem(如果可用)以避免以 root 身份运行

  • 使用引脚 3/5 上的上拉/下拉修复警告

  • 禁用设备树时在 Pi 2 上更正基地址

  • 编译时出现 caddr_t 错误(问题 109)

  • setup() 的无效参数错误(问题 93)

  • 向 wait_for_edge() 添加超时参数(问题 91)

0.5.11

  • 修复 - 使用 BOARD 模式时丢失 > 26 个引脚

  • 添加 getmode()

  • 使用混合模式时引发异常

  • GPIO.cleanaup() 取消设置当前引脚模式

0.5.10

  • 问题 95 - 支持 RPi 2 板

  • 引入 RPI_INFO

  • 弃用 RPI_REVISION

  • 问题 97 - setup() 的固定文档字符串

0.5.9

  • 问题 87 - 警告 i2c 引脚上拉/下拉

  • 问题 86/75 - wait_for_edge() 错误修复

  • 问题 84 - 使用自定义内核时正确识别 RPi

  • 问题 90 - 频道列表/元组上的 cleanup()

0.5.8

  • 允许 GPIO.setup() 中的通道列表/元组

  • GPIO.output() 现在允许值的列表/元组

  • GPIO.wait_for_edge() 错误修复(问题 78)

0.5.7

  • 问题 67 - 加快对 GPIO.wait_for_event() 的重复调用

  • 向 GPIO.wait_for_event() 添加了bouncetime关键字

  • 添加了额外的边缘/中断单元测试

  • GPIO.wait_for_event() 现在可以与 GPIO.add_event_detect() 混合使用

  • 改进的事件清理

  • 问题 69 已解决

0.5.6

  • 第 68 期 - 支持 RPi 模型 B+

  • 修复 gpio_function()

0.5.5

  • 问题 52 - '取消分配' 一个频道

  • 问题 35 - 使用带有 GPIO.event_detected() 的 switchbounce

  • 重构事件代码

  • 重写测试以使用 unittest 机制和带有环回的新测试板

  • 修复了在 GPIO.cleanup() 之后添加事件

  • 问题 64 - 误导性 /dev/mem 权限错误

  • 问题 59 - 与 PWM 常量和类的名称冲突

0.5.4

  • 更改发布状态(从 Alpha 版到完整版)

  • 当 GPIO.cleanup() 使用时发出警告(问题 44)

  • 避免常量冲突(例如 HIGH / RISING / PUD_DOWN)

  • 接受 gpio_function 中的 BOARD 编号(问题 34)

  • gpio_function 的更多返回值(INPUT、OUTPUT、SPI、I2C、PWM、SERIAL、UNKNOWN)

  • 整理文档字符串

  • 使用 gpio_function 修复 /dev/mem 访问错误

0.5.3a

  • 允许非 root 用户使用 pydoc(问题 27)

  • 修复作为守护进程运行时的 add_event_detect 错误(问题 32)

  • 简化的异常类型

  • 从分发更改为点子

0.5.2a

  • 添加了软件 PWM(实验性)

  • 为事件回调添加了开关弹跳处理

  • 向事件回调添加了通道号参数(问题 31)

  • 内部重构和代码整理

0.5.1a

  • 修复了多个 GPIO 的回调(问题 28)

0.5.0a

  • 添加了新的边缘检测事件(中断处理) - 添加了 add_event_detect() - 添加了 remove_event_detect() - 添加了 add_event_callback() - 添加了 wait_for_edge()

  • 移除了旧的实验性事件函数 - 移除了 set_rising_event() - 移除了 set_falling_event() - 移除了 set_high_event() - 移除了 set_low_event()

  • 为新的边缘检测功能更改了 event_detected()

  • input() 现在返回 0/LOW == False 或 1/HIGH == True(整数)而不是 False 或 True(布尔值)。

  • 修复重复导入错误(问题 3)

  • 将 SetupException 更改为 RuntimeError 以便在导入时捕获它(问题 25,Chris Hager < chris @ linuxuser . at >)

  • 改进的函数文档字符串

0.4.2a

  • 修复在 Arch Linux (Python 3.3) 上安装的问题 (issue 20)

  • 将通道设置为输出时的初始值(问题 19)

0.4.1a

0.4.0a

  • 添加了对修订版 2 板的支持

  • 添加了 RPI_REVISION

  • 添加了 cleanup() 函数并删除了程序退出时的自动重置功能

  • 添加了 get_function() 以读取现有的 GPIO 通道功能(来自 Eric Ptak < trouch @ trouch .com >的建议)

  • 添加了 set_rising_event()

  • 添加了 set_falling_event()

  • 添加了 set_high_event()

  • 添加了 set_low_event()

  • 添加了 event_detected()

  • 添加了 test/test.py

  • 将 debian 转换为 armhf

  • 修复了 C 函数 short_wait()(感谢 Thibault Porteboeuf < thibaultporteboeuf @ gmail .com >

0.3.1a

  • 修复了输出上交换高/低状态的严重错误

  • 为输入添加了上拉/下拉设置功能

0.3.0a

  • 重写为 C 扩展

  • 现在使用 /dev/mem 和 SoC 寄存器而不是 /sys/class/gpio

  • 快点!

  • 强制调用 GPIO.setmode()

  • 添加了 GPIO.HIGH 和 GPIO.LOW 常量

0.2.0

  • 将状态从 alpha 更改为 beta

  • 添加了 setmode() 以便能够使用 BCM GPIO 00.nn 通道号

  • 将 InvalidPinException 重命名为 InvalidChannelException

0.1.0

  • 修正方向错误

  • 添加了 MANIFEST.in(包括丢失的文件)

  • 将 GPIO 通道号更改为引脚号

  • 测试和工作!

0.0.3a

  • 添加了 GPIO 表

  • 重构

  • 修复了一些严重的错误

  • 仍然完全未经测试!

0.0.2a

  • 内部重构。仍然完全未经测试!

0.0.1a

  • 第一个版本。在我拿到树莓派之前完全未经测试!

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

RPi.GPIO-0.7.1.tar.gz (29.1 kB 查看哈希

已上传 source

内置发行版

RPi.GPIO-0.7.1-py3.7-linux-armv6l.egg (71.1 kB 查看哈希

已上传 0 7 1

RPi.GPIO-0.7.1-py2.7-linux-armv6l.egg (67.9 kB 查看哈希

已上传 0 7 1

RPi.GPIO-0.7.1-cp310-cp310-linux_armv6l.whl (69.8 kB 查看哈希

已上传 cp310

RPi.GPIO-0.7.1-cp39-cp39-linux_armv6l.whl (69.3 kB 查看哈希

已上传 cp39

RPi.GPIO-0.7.1-cp38-cp38-linux_armv6l.whl (68.4 kB 查看哈希

已上传 cp38

RPi.GPIO-0.7.1-cp37-cp37m-linux_armv6l.whl (70.4 kB 查看哈希

已上传 cp37

RPi.GPIO-0.7.1-cp27-cp27mu-linux_armv6l.whl (67.4 kB 查看哈希

已上传 cp27