如何生成dbus示例中的“car.xml”文件“D-Bus遥控车示例”?

时间:2014-04-15 22:19:09

标签: qt dbus qtdbus

我正在尝试创建利用D-Bus的程序。我已经研究了Qt提供的相关示例。在其中一个名为“D-Bus遥控车的例子”中有一个名为“car.xml”的文件,内容如下:

<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node name="/com/trollech/examples/car">
 <interface name="org.example.Examples.CarInterface">
  <method name="accelerate"/>
  <method name="decelerate"/>
  <method name="turnLeft"/>
  <method name="turnRight"/>
  <signal name="crashed"/>
 </interface>
</node>

如果我没弄错的话,应该使用名为“qdbuscpp2xml”的工具生成此文件。当我使用此命令生成xml时:

$ qdbuscpp2xml -A car.h -o car2.xml

我在生成的XML文件中获得以下内容:

<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
  <interface name="local.Car">
    <signal name="crashed">
    </signal>
    <method name="accelerate">
    </method>
    <method name="decelerate">
    </method>
    <method name="turnLeft">
    </method>
    <method name="turnRight">
    </method>
  </interface>
</node>

与以下行中的car.xml不同:

<node name="/com/trollech/examples/car">
 <interface name="org.example.Examples.CarInterface">

为什么我会收到不同的文件?包含文件(car.xml)是否手动创建了示例?

1 个答案:

答案 0 :(得分:3)

我自己已经弄清楚了。截至目前,该工具qdbuscpp2xml尚未向name分配<node>属性。如果有人希望为其分配name属性,则必须自己输入,但对于<interface>节点,可以让上述工具通过放置宏{{}来自动执行此操作。 1}}在课堂内部,希望揭露。