用于通过可序列化的消息协议控制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根据选择随机设置图标   java如何将Android Studio与本地服务器数据库SQL server 2008连接?   java在点击鼠标后绘制一个椭圆形   java选项窗格相对于其父项的位置   java如何在Android中的switch case中使用String[]输入?   安卓无法从“15.0.1”确定java版本   如果满足特定条件,java是否重置计时器?   java是一个实体类,可以在OOAD中返回其他实体实例吗?   bash将对jar文件| cut | awk和java程序的调用集成到一个统一进程中   Spring安全更新身份验证成功时的最后登录日期   数据库身份验证中基于Java控制台的客户端服务器登录应用程序错误   java Selenium junit测试失败,驱动程序过早获取URL   java LibGdx多点触摸事件混淆   带扫描仪的java打印空间   来自旧版应用程序的java springcloudsleuth头   java如何实现模板设计模式?   java如何比较具有多个值的键的两个映射?   读取时R中的java MemoryError。xlsx