当前位置: 首页 > news >正文

dbus接口方法的variant类型传参详解

python实现c++中so库调用及dbus服务开发-CSDN博客

之前写的这篇博文介绍了如何创建一个dbus服务,但是注册的接口方法的入参还是比较简单的,实际上dbus的参数类型有很多种,调用方式也有多种,我们来逐一介绍下。

其实基础数据类型,如字符串、整型、浮点型、布尔型等大多数情况下可以直接输入value值,便不再重点介绍,本文着重讲解c++语言中的variant类型如何传参。

建议阅读此文章前,先阅读dbus签名类型;

前置准备

注册一个dbus服务,假设图中的方法入参是compare_data(Sting uuid, int32 num, Variant param);

python通过dbus库调用

def dbus_client_request(uuid, num, variant):"""通过dbus模块调用dbus接口variant:传参时通过以下方式定义,会自动转为variant类型基础类型:dbus.Boolean、dbus.Byte、dbus.Int16、dbus.Int32、dbus.Int64、dbus.UInt16、dbus.UInt32、dbus.UInt64、dbus.Double、dbus.String数组类型:dbus.ByteArray([1,2])、dbus.Array([1, 2], signature='q')结构体:dbus.Struct([(1, 2), (3,4)], signature='(ii)')Map类型:dbus.Dictionary({1.1:"hello", 2.3:"world"}, signature='ds')、嵌套Map类型:dbus.Dictionary({1.1:{1:"hello"}, 2.3:{2:"world"}}, signature='da{is}')Map包含variant类型:dbus.Dictionary({"name": "rose", "age": 10, "height": True}, signature='sv', variant_level=1)"""# 创建一个SessionBus对象连接一个会话总线session_bus = dbus.SessionBus()# 调用get_object方法来获取代理对象obj = session_bus.get_object('com.csdn.test.Test', '/com/csdn/test/Test').get_dbus_method()# 构造一个dbus.Interface的对象,通过这个对象调用方法inter = dbus.Interface(obj, 'com.example.sample')# 调用接口下的compare_data方法result = inter.compare_data(uuid, num, variant)# 返回接口方法的返回return result# val = dbus.Int16(56)
# val = dbus.String('test')
# val = dbus.Dictionary({
#                 'artUrl': '',
#                 'artist': ['None'],
#                 'title': 'None',
#                 'xalbum': 'None'
#             }, signature='sv', variant_level=1)# res = dbus_c

http://www.mrgr.cn/news/79249.html

相关文章:

  • Cesium进阶教程——自定义图形、外观、绘图基础、现有着色器移植至Cesium、ShadowMapping、视频GIS、模型压平、卷帘
  • kafka进阶_4.kafka扩展
  • 《C++赋能自然语言处理:词向量模型的构建与应用》
  • Android笔记【17】返回数据的两种方法
  • Rust之抽空学习系列(三)—— 编程通用概念(中)
  • vue.config.js配置参数说明新手教程
  • hadoop单机安装
  • 二、部署docker
  • 【Calibre-Web】Calibre-Web服务器安装详细步骤(个人搭建自用的电子书网站,docker-compose安装)
  • 工作:SolidWorks从3D文件导出2D的DWG或DXF类型文件方法
  • Qt Chart 模块化封装曲线图
  • 【CSS in Depth 2 精译_068】11.2 颜色的定义(下):CSS 中的各种颜色表示法简介
  • Linux镜像文件制作
  • Node-RED系列教程-生成exe
  • 构建个人大模型问答助手(基于Streamlit +gpt-4o/o1-mini):全面解析与实现
  • 小程序 —— Day1
  • 青岛鼎信Java开发面试题及参考答案(3万字长文,多张原理图)
  • 全能单行url解码器
  • ainiworth 在分布式目标的方程中 与正常互易性可以形成的方程不同 多引入了协方差元素未知 但可解,因为此时只有一个串扰参数且已经解出来了
  • vue3 vite ts day1
  • C#—交错数组
  • 12.05排错日志
  • CTFshowPHP特性
  • STL算法之merge sort
  • 【Python教程】Python基础篇之历史
  • 决策树:ID3、C4.5和CART特征选择方式