为了学习DBUS,写的练习程序。修改了gtk指南中tictactoe的代码, tictactoe上有三行三列9个按键,三个连成行列或斜线的按钮被按下后则reset。在其中加入DBUS server,使其他程序可以通过DBUS控制tictactoe中的按键。
实现一个 Object:
tictactoe.c中包含了tictactoe类定义,ttt_test.c中则创建了一个实例。
-
实现一个描述 object的XML文件,其中定义了interface和method, 并使用 dbus-binding-tool产生头文件
-
调用 dbus_g_object_type_install_info函数安装 introspection信息,通常在 class_init中调用。
-
定义函数,对应object中的方法,这里函数为tictactoe_keypad, 'keypad'在之前的XML文件中定义。
-
调用 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
来源:CSDN
作者:largeplum
链接:https://blog.csdn.net/largeplum/article/details/6147325