DBus glib 实现和使用object

試著忘記壹切 提交于 2019-12-06 08:17:41

为了学习DBUS,写的练习程序。修改了gtk指南中tictactoe的代码,tictactoe tictactoe上有三行三列9个按键,三个连成行列或斜线的按钮被按下后则reset。在其中加入DBUS server,使其他程序可以通过DBUS控制tictactoe中的按键。

 

实现一个 Object:

tictactoe.c中包含了tictactoe类定义,ttt_test.c中则创建了一个实例。

 

  1. 实现一个描述 object的XML文件,其中定义了interface和method, 并使用 dbus-binding-tool产生头文件  

  2. 调用 dbus_g_object_type_install_info函数安装 introspection信息,通常在 class_init中调用。

  3. 定义函数,对应object中的方法,这里函数为tictactoe_keypad, 'keypad'在之前的XML文件中定义。  

  4. 调用 dbus_g_connection_register_g_object函数导出 object,这样改object将可以被连到同一个BUS上的其他程序所访问  

远程使用Object

在tictactoe-client.c中实现了一个client,远程使用之前创建的 Object:

1. object创建一个 proxy  

2.调用方法, 注意这里的方法名为'keypad'而非'tictactoe-keypad'。

 

 

程序的运行

使用如下命令 监视dbus。  

运行ttt-test,将会在监视时看到类似如下信息, 其中':1.165'部分即是ttt-test连接导DBUS上的unique address。

使用该命令即可向ttt-test发送按键信息, 比如, 中间的按键将被按下。

 

 

源码:https://github.com/largeplum/tictactoe

 


 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!