跳转到主要内容

libubus的Python绑定

项目描述

此目录中的代码使libubus函数的一部分可以直接从python使用。

安装

要安装这些绑定,您需要安装以下库和头文件

  • libubox

  • libubus

  • python/python3

示例

连接和断开连接

要连接,您需要

import ubus
ubus.connect("/var/run/ubus/ubus.sock")

要断开连接,您可以简单地

ubus.disconnect()

请注意,在打开/关闭连接上调用connect()/disconnect()将抛出异常。

添加

要将对象添加到ubus,您可以在(您需要先成为root)

def callback(handler, data):
    handler.reply(data)  # this should return exactly the same data to the caller

ubus.add(
    "my_object", {
        "my_method": {"method": callback, "signature": {
                "first": ubus.BLOBMSG_TYPE_STRING,
                "second": ubus.BLOBMSG_TYPE_BOOL,
                "third": ubus.BLOBMSG_TYPE_INT32,
        }},
     },
)

您需要进入循环以在之后提供对象方法

ubus.loop()

请注意,递归调用回调函数可能不是一个好主意。

对象

要列出当前连接到ubus的对象,您可以调用

ubus.objects()

->

{u'my_object': {u'my_method': {u'first': 3, u'second': 7, u'third': 5}}}

调用

要调用对象上的实际方法,您可以使用

ubus.call("my_object", "my_method", {"first": "my_string", "second": True, "third": 42})

->

[{"first": "my_string", "second": True, "third": 42}]

监听

要监听事件,您可以

def callback(event, data):
    print(event, data)  # just print event name and data to stdout

ubus.listen(("my_event", callback))

您需要进入循环以开始监听

ubus.loop()

请注意,递归调用回调函数可能不是一个好主意。

发送

这将向ubus发送一个事件

ubus.send("my_event", {"some": "data"})

注意

有一些测试(“tests/”目录)。因此,请随意检查它以获取更多复杂示例。要运行测试,您需要安装ubus并成为root

sudo python setup.py test

项目详情


下载文件

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

源分发

ubus-0.1.2.tar.gz (20.0 kB 查看哈希值)

上传时间

由以下支持