2.3.2 Python实现

1.参数服务端

demo_py 目录下新建 Python 文件 demo05_param_server_py.py,输入如下内容:

#!/usr/bin/env python3
"""  
    需求: 服务端设置参数,客户端操作参数
    实现:
        1.包含头文件;
        2.初始化 cyber 框架;
        3.创建节点;
        4.创建参数服务端;
        5.设置参数;
        6.等待关闭。
"""
from cyber.python.cyber_py3 import cyber
from cyber.python.cyber_py3 import parameter

if __name__ == "__main__":
    cyber.init()
    print("param service .....")
    # 3.创建节点;
    param_service_node = cyber.Node("param")
    # 4.创建参数服务端;
    param_service = parameter.ParameterServer(param_service_node)
    # 5.设置参数;
    #
    param1 = parameter.Parameter("type","car_apollo")
    param2 = parameter.Parameter("length",1.5)
    param3 = parameter.Parameter("cameras",2)

    param_service.set_parameter(param1)
    param_service.set_parameter(param2)
    param_service.set_parameter(param3)

    #
    p1 = param_service.get_parameter("type")
    p2 = param_service.get_parameter("length")
    p3 = param_service.get_parameter("cameras")
    print("type = %s,length = %.2f,cameras = %d" %(p1.as_string(), p2.as_double(), p3.as_int64()))

    #  
    ps = param_service.get_paramslist()
    for p in ps:
        print(p.debug_string())

    # while not cyber.is_shutdown():
    #     pass
    param_service_node.spin()
    # 6.等待关闭。
    cyber.shutdown()

配置文件BUILD添加内容如下:

py_binary(
    name = "demo05_param_server_py",
    srcs = ["demo05_param_server_py.py"],
    deps = [
        "//cyber/python/cyber_py3:cyber",
        "//cyber/python/cyber_py3:parameter"
    ] 
)

2.参数客户端

demo_py 目录下新建 Python 文件 demo06_param_client_py.py,输入如下内容:

#!/usr/bin/env python3
"""  
    需求: 服务端设置参数,客户端操作参数
    实现:
        1.包含头文件;
        2.初始化 cyber 框架;
        3.创建节点;
        4.创建参数客户端;
        5.操作参数;
        6.等待关闭。
"""
from cyber.python.cyber_py3 import cyber
from cyber.python.cyber_py3 import parameter

if __name__ == "__main__":
    cyber.init()
    print("param client .....")
    # 3.创建节点;
    param_client_node = cyber.Node("param_client_node")
    # 4.创建参数客户端;
    client = parameter.ParameterClient(param_client_node,"param")
    # 5.操作参数;
    p1 = client.get_parameter("type")
    p2 = client.get_parameter("length")
    p3 = client.get_parameter("cameras")
    print("type = %s,length = %.2f,cameras = %d" %(p1.as_string(), p2.as_double(), p3.as_int64()))
    client.set_parameter(parameter.Parameter("cameras",100))
    p4 = client.get_parameter("cameras")
    print("type = %s,length = %.2f,cameras = %d" %(p1.as_string(), p2.as_double(), p4.as_int64()))
    ps = client.get_paramslist()
    for p in ps:
        print(p.debug_string())
    # 6.等待关闭。
    cyber.shutdown()

配置文件BUILD添加内容如下:

py_binary(
    name = "demo06_param_client_py",
    srcs = ["demo06_param_client_py.py"],
    deps = [
        "//cyber/python/cyber_py3:cyber",
        "//cyber/python/cyber_py3:parameter"
    ] 
)

3.编译运行

编译:

bazel build cyber/demo_py/...

执行(需要两个终端):

终端A执行发布方:

source cyber/setup.bash
./bazel-bin/cyber/demo_py/demo05_param_server_py

终端B执行订阅方:

source cyber/setup.bash
./bazel-bin/cyber/demo_py/demo06_param_client_py

执行结果:参数服务端和客户端都会输出参数相关信息。

results matching ""

    No results matching ""