【问题标题】:How to Pass a structure as a parameter in a dbus signal?如何在 dbus 信号中将结构作为参数传递?
【发布时间】:2019-08-15 07:33:03
【问题描述】:

如何通过命令行将结构体作为参数传递给dbus信号?

Dbus-send --system --type=signal / com.example.signal_name string:"hello"

在字符串的地方,我想传递结构体 foo。

typedef enum {MODE1, MODE2, MODE3} MODE;
typedef enum {TYPE1, TYPE2} TYPE;

struct foo
{
    MODE mode;
    TYPE type;
};

【问题讨论】:

  • 什么样的结构?你能举一个你想传递的数据的例子吗?
  • @PhilipWithnall 一个枚举结构。前任。 struct { eA ea eB EB } 我想传递值 3 和 2

标签: dbus


【解决方案1】:

首先,您需要弄清楚如何将该结构表示为D-Bus value。它最有可能的表示形式是(uu) 类型的值,其中第一个umode(使用some well-defined and stable mapping of C enum values to integers),第二个utype

其次,您需要弄清楚如何在命令行上编写它。但是,dbus-send doesn’t currently support structs,因此无法使用dbus-send。我建议改用gdbusas per this StackOverflow question

【讨论】:

  • 感谢 Philip,我查看了 stackoverflow.com/questions/38856157/… 的帖子。他们使用了方法调用,但我需要发送信号。
  • 查看gdbus 的手册页。使用gdbus emit 而不是gdbus call
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
  • 2014-03-27
  • 2020-05-04
  • 2015-12-02
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
相关资源
最近更新 更多