用于通过可序列化的消息协议控制Raspberry PI®GPIO管脚的Python库。

serialize-gpio的Python项目详细描述


序列化GPIO

serialize gpio是一个python库,它提供了使用可序列化消息协议操作raspberry pi®gpio管脚的工具。这些消息使用python字典建模,但也可以编码为json或xml格式。使用这两种格式中的一种,您可以轻松地与pin进行远程交互,或者从没有访问库的应用程序进行交互。

它的核心是:serialize gpio是gpiozero的包装器,它提供了管理gpio管脚的简单接口。该库使用设备类抽象出较低层次的关注点,从简单的“led”或“button”到更复杂的“robot”(通用双电机机器人的表示)。当然,它还支持更一般的类,如“digitaloutputdevice”。

您可以通过以下方式与这些设备对象进行交互:

  • 他们的方法(如led.on())
  • 它们的属性,每一个都分为两类:
    • 当某些事件发生时(如按下按钮时)将执行的函数的属性
    • 采用文本值的属性(例如button.hold_time)

有关可用设备类及其相应属性的详细信息,请访问gpiozero's documentation

安装

依赖关系

序列化gpio直接依赖于gpiozero,它已经默认安装在raspbian映像中。如果您使用的是Raspbian Lite,则可以使用以下命令安装它:

pi@raspberrypi:~$ sudo apt update
pi@raspberrypi:~$ sudo apt install python3-gpiozero

pi@raspberrypi:~$ sudo pip3 install gpiozero

如果您使用不同的操作系统,则可能需要使用pip版本。

此外,如果尚未安装rpi.gpio,建议您安装它。gpiozero可以使用多个库来控制管脚或自定义实现(如果没有可用的话)。不过,首选的实现是rpi.gpio。您可以使用以下命令安装它:

pi@raspberrypi:~$ sudo pip3 install rpi.gpio

免责声明

gpiozero支持python 2,serialize gpio只支持python 3。

安装serialize gpio

序列化gpio在python包索引中提供,因此您可以使用pip:

pi@raspberrypi:~$ sudo pip3 install serialize_gpio

或者,您可以从releases page下载并从该文件安装它,或者克隆此存储库并从源代码使用它。

用法

serialize gpio提供gpiocontroller对象以与gpio管脚接口。通过“handle_message”方法,它接收一条消息并执行它描述的操作。

消息操纵器用于生成、编码和解码消息。字典格式的消息使用basicMessageManipulator,JSON使用jsonMessageManipulator,XML使用xmlMessageManipulator。

fromserialize_gpio.controllerimportGPIOControllerfromserialize_gpio.messageManipulatorsimportJsonMessageManipulator#The GPIOController constructor takes desired message format as a parameter.controller=GPIOController('json')messageBuilder=JsonMessageManipulator()# The build_create_device_message method takes the name of device class, the name you want# to assign to device and the keyword arguments for the classes' __init__ method.create_led_message=messageBuilder.build_create_device_message('LED','blinkingLED',pin=4)controller.handle_message(create_led_message)# Make the led blink# build_execute_device_method_message takes the device's name, the name of the method and# keyword arguments for any method arguments.execute_blink_message=messageBuilder.build_execute_device_method_message('blinkingLED','blink',on_time=0.5)controller.handle_message(execute_blink_message)

文档

您可以在wiki中找到项目的文档。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JavaFX TableView更新单元格,不更新对象值   在扫描器中使用分隔符的java   java OkHttp 4.9.2,连接无法重用,导致端口耗尽   eclipse中的c JNI:运行Java代码   java是否在出厂的所有硬件设备中都有/mnt/sdcard/Android/data文件夹(或等效文件夹)?   Java,在eclipse中访问资源文件夹中的图像   java为什么Bluemix dashDB操作抛出SqlSyntaxErrorException,SQLCODE=1667?   JavaHtmlUnitWebClient。getPage不处理javascript   Google API认证的java问题   java如何将JSON数组反序列化为Apache beam PCollection<javaObject>   ServerSocket停止接收命令,java/安卓   来自Java类的安卓 Toast消息   java如何自动重新加载应用程序引擎开发服务器?   java是否可以尝试/捕获一些东西来检查是否抛出了异常?   java如何做到这一点当我按下load game时,它不仅会加载信息,还会将您带到游戏中?   Java选项Xmx代表什么?   Java映射,它在插入时打印值   设置“ulimit c unlimited”后,java无法生成系统核心转储