用于通过可序列化的消息协议控制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中找到项目的文档。