Articles of dbus

如何从控制台创builddbus服务?

使用诸如dbus-send或dbus-monitor之类的工具,或多或less直接的方式来发送或监听现有的DBus服务的信号。 如何从shell注册服务和对象? 期待类似的东西 1> dbus-service –session org.example.Test /Test 2> qdbus org.example.Test /Test org.example.Test.Call qqq 1> qqq 2> qdbus org.example.Test /Test org.example.Test.Call www 1> www 或者像 1> dbus-service –argc=2 –session org.example.Test /Test — /usr/bin/printf "%s Q %s\n" 2> qdbus org.example.Test /Test org.example.Test.Call qqq ttw 1> qqq Q ttw 2> qdbus org.example.Test /Test org.example.Test.Call www 111 1> […]

听取dbus信号在debian linux上挂载mtp设备

我正在尝试编写一个python脚本,用于检测mtp设备(本例中为Android手机)何时挂载到Raspberry Pi 3(运行raspbian jessie)。 我想在电话插入时自动将文件传输到手机。 我从第二个回答这个问题的脚本开始 我改变了一些东西,让它在我的覆盆子pi上运行。 目前的脚本如下。 插拔手机时,可以看到UnitNew和UnitRemoved信号。 当它到达path_to_device函数,我得到这个错误: DBusException: org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.systemd1.Manager was not provided by any .service files 我读了类似的问题,这是一个权限问题,所以我试图运行脚本作为sudo ./usb_SYSTEM.py但我仍然得到相同的错误。 我也尝试使用SessionBus而不是SystemBus。 信号不同,总线名称是org.gtk.vfs.MountTracker。 我仍然得到相同的错误,这一次它说org.gtk.vfs.MountTracker不是一个可用的服务。 当我尝试使用sudo运行SessionBus版本时,我根本看不到信号。 我使用正确的inputget_object()函数? 而正确的巴士types? 由于信号是广播的,所以没有目的地的巴士,我不确定这是否是问题的一部分。 我对linux和信号/总线的了解非常有限。 脚本: #!/usr/bin/env python # -*- encoding: utf-8 -*- import dbus import dbus.service if getattr(dbus, 'version', (0,0,0)) >= (0,41,0): import dbus.glib from dbus.mainloop.glib import […]

dbus-python如何返回字典数组

我在Ubuntu 16.04上使用Python Dbus。 我想返回一个DBus字典列表到我的客户端,但似乎只能返回一个string数组。 如果我将我的dbus签名装饰器更改为“as {v}”,则会出现exception:“ValueError:损坏types签名”。 如何返回DBus上的字典列表? @dbus.service.method("com.example.service.BtScanList", in_signature='', out_signature='as') def getScanList(self): btMsg("Starting BT Scan List…") # Populate device lists ( returns dictionary –> { 'mac_address' : xxx , 'name' : xxx } self.discoveredDevs = self.getScannedDevices() returnList = [] for dev in self.discoveredDevs: returnList.append(dev["name"]) return returnList 编辑:这也不工作: @dbus.service.method("com.example.service.BtScanList", in_signature='', out_signature='a{sv}') def getScanList(self): btMsg("Starting BT Scan […]

从图腾应用程序获取当前时间点

我想find媒体文件当前正在使用D-Bus在正在运行的Totem实例中暂停(或正在播放)的确切时间。 确切地说,我想要的是从图腾python控制台(如果插件存在并启用)通过以下命令可用: >>> print totem_object.props.current_time 732616 我明白是毫秒。 到目前为止:我从来没有使用过D-Bus,所以我正在通过D-Bus和python-dbus文档。 我还org.gnome.Totem了D-Feet,发现org.gnome.Totem总线名称和/Factory对象可以使用org.freedesktop.DBus.Properties接口方法。 我目前在这一点上: >>> import dbus >>> seb= dbus.SessionBus() >>> t= seb.get_object('org.gnome.Totem', '/Factory') >>> tif= dbus.Interface(t, 'org.freedesktop.DBus.Properties') >>> tif.GetAll('') dbus.Dictionary({}, signature=dbus.Signature('sv')) 我什至不能find一个适当的方法,所以任何帮助将不胜感激。

如何使用dbus-java注册dbus对象?

我正在尝试在dbus上使用来自org.freedesktop的dbus-java注册对象。 根据文档,这种操作需要:创buildDBusConnection,创build对象并调用DBusConnection上的方法exportObject。 我的代码: DatabaseAccessImpl dbAccess = new DatabaseAccessImpl(); System.out.println("Object created."); System.out.println("Trying to connect session bus"); try { conn = DBusConnection.getConnection(DBusConnection.SESSION); } catch(DBusException ex) { ex.printStackTrace(); } System.out.println("Connected to session bus."); System.out.println("Trying to register dbus object"); try { conn.exportObject("/obj/path", new DatabaseAccessImpl()); } catch (DBusException e) { e.printStackTrace(); //To change body of catch statement use File | […]

如何从命令行发出dbus信号

有没有办法使用dbus-send或其他命令从命令行发出dbus信号?

通过ConsoleKit或systemd限制D-Bus对login用户的访问

我需要通过ConsoleKit或systemd将D-Bus服务的客户端限制在本地login系统的用户。 如何configuration或写入D-Bus服务?

Skype 4.3 DBUS接口:ALTER CALL SET_OUTPUT是否工作?

正如Skype网站所述,所有Skype客户端都必须升级到版本4.3,因为旧客户端无法连接。 我在我的GNU / Linux Ubuntu 12.04 64位上更新了客户端,并开始testing我用来连接到Skype客户端的dbus API。 从我的testing中,似乎有些dbus API停止工作,但是我想要其他人来确认我的陈述。 (myabe我做错了什么) 我通常做的,使用Skype客户端作为引擎是使用DBUS命令: ALTER CALL SET_OUTPUT PORT =“[some_tcp_port]” ALTER CALL SET_INPUT PORT =“[another_tcp_port]” 一旦调用启动并运行,上述命令将通过dbus发送到skype。效果应该是,skype将原始audio数据(input/输出)redirect到configuration的tcp端口。 这样我的软件就可以和Skype的audiostream进行交互。 使用Skype客户端的4.3版本 , 命令不会返回错误 ,但我在输出频道上得到的是白噪声 我也试过命令varian : FILE =“[some_file] .wav”,但我仍然得到一个非空的WAV文件,显然只包含白噪声(在一个非常低的音量)。 (我用“play”,“mplayer”和“audacity”播放文件) 有没有人成功地使用dbus API来获取新的客户端4.3的Skype的audio数据? 如果上述dbus命令不能按预期工作,您是否有任何其他解决scheme的想法?

使用dbus-send为地址127.0.0.1定制自定义方法

我试图让dbus-send –address地址工作在地址127.0.0.1端口10010为我自己写的自定义方法( com.example.Test.TestMethod )。 本身并不是一件有用的事情,但是我正试图做更多的事情,这是一个testing步骤。 首先,我已经说服了我自己的testing方法。 我的方法使用系统总线本地成功: $ dbus-send –system –print-reply –type=method_call –dest=com.example.Test /com/example/Test com.example.Test.TestMethod string:foo method return sender=:1.0 -> dest=:1.17 reply_serial=2 string "returning foo" 其次,使用 – –address失败(我不明白为什么失败): $ dbus-send –address=tcp:host=127.0.0.1,port=10010 –print-reply –type=method_call –dest=com.example.Test /com/example/Test com.example.Test.TestMethod string:foo Error org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, […]

在BeagleBone黑色的D-BUS

我的目标是通过D-Bus接口监视wpa_supplicant,从我的固件(C语言)监视我的networking接口(主要是无线)的状态。 我想坚持使用C语言和D-bus的低级API。 我到目前为止 我用C编写了一个小程序,像这个 SO用户那样复制了大部分的代码。 我已经在D-Bus和wpa_supplicant上完成了所有可能的教程 我的程序编译和正常工作。 但是它不会产生预期的输出。 这是我的代码: #include <stdio.h> #include <dbus/dbus.h> #define WPAS_DBUS_SERVICE "fi.epitest.hostap.WPASupplicant" #define WPAS_DBUS_PATH "/fi/epitest/hostap/WPASupplicant" #define WPAS_DBUS_INTERFACE "fi.epitest.hostap.WPASupplicantAAA" #define WPAS_DBUS_PATH_INTERFACES WPAS_DBUS_PATH "/Interfaces" #define WPAS_DBUS_IFACE_INTERFACE WPAS_DBUS_INTERFACE ".Interfaces" #define WPAS_DBUS_NETWORKS_PART "Networks" #define WPAS_DBUS_IFACE_NETWORK WPAS_DBUS_INTERFACE ".Network" #define WPAS_DBUS_BSSIDS_PART "BSSIDs" #define WPAS_DBUS_IFACE_BSSID WPAS_DBUS_INTERFACE ".BSSID" int ret; char signalDesc[1024]; // Signal description as string // Signal […]