-
Usage de dbus
Bonjour,
Je développe depuis quelques années pour ma société des programmes bureautiques en Open Basic, le langage des macros de la suite Open Office. La plus grosse parties de ces programmes s'occupe de formater des fichiers ou de manipules des bases de données.
Une autre partie de notre travail consiste à piloter des flux audio et vidéo et à en obtenir des infos. J'utilisais pour cela mplayer et des commandes shell envoyées par un fifo, solution plus simple apparemment et plus complète en termes de support de format que par la JMF.
Or j'ai trouvé récemment que ce travail pouvait être fait plus simplement par dbus en utilisant gnome-mplayer. Par exemple, pour lire ou arrêter la lecture :
Code:
dbus-send --type=signal / com.gnome.mplayer.Pause
En revanche, la méthode GetDuration() me retourne une erreur. Je ne parviens pas à obtenir de retour et cela rend dbus-send inutilisable.
Code:
dbus-send --type=signal --print-reply / com.gnome.mplayer.GetDuration
L'erreur :
Code:
Error org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
Pourtant l'utilisation de la méthode GetDuration au travers de l'outil graphique D-Bus debugger, fonctionne sans problème.
Me faut-il repenser mon travail en utilisant un autre langage ? Python semble bien adapté pour manipuler DBus ? C++ aussi mais je n'en suis pas spécialiste du tout !
Dans tous les cas, merci de votre patience et de votre indulgence !
-
Bonjour,
Personnellement, j'ai eu également quelques soucis en essayant de manipuler dbus-send pour communiquer entre processus. Les exemples de base n'ont pas semblé fonctionner. N'ayant pas trop poussé dans cette direction, je ne peux pas trop te dire pour dbus-send. Il faudrait que je m'y replonge, il se peut que les problèmes soient assez simples à rêgler, mais faute de temps ...
Je travaille en C en binding Glib (GObject), c'est assez lourd à utiliser (en terme de quantité de code à taper et générer) mais super efficace. Il y a aussi la solution QT, mais cette fois c'est du C++ Je dirais que c'est la solution ultime, en quelques lignes tu peux communiquer sur DBus.
Par contre, ne pas essayer les couches Low Level de Dbus en C qui ne sont disponibles que pour l'interfaçage de nouveaux langages / frameworks.
J'ai tenté de faire mon malin, je me suis arraché les cheveux et j'ai abandonné :mrgreen:
Python est plutôt bien adapté pour manipuler DBus. Si tu ne maîtrises pas le C, cette solution serait sans doute à envisager. Tu peux regarder du côté de leur tutorial.
Bon courage !
-
Salut,
Apparemment y'a pas de méthode "GetDuration" :
http://code.google.com/p/gnome-mplay.../tech/dbus.txt
Es-tu sûr qu'elle existe ?
-
-
1 pièce(s) jointe(s)
La méthode existe : elle est implémentée depuis la 0.4.3 (historique des versions)
avec un éditeur graphique des liaisons dbus, on y accède et ça marche, comme le montre la miniature attachée.
J'ai compilé la dernière version dbus mais sans succès. je cherche un peu du côté du «dbus message security" et si je ne trouve pas, je vais étudier la solution en python (qui m'a l'air bien plus simple que C ou C++ pour mon niveau).
-
Je n'ai pas trouvé le temps encore de m'y mettre et je suis débordé.
Connaissez-vous des développeurs capables de m'aider à rédiger des petits scripts en python ?
N'hésitez pas à prendre contact avec moi au 09 52 77 17 27.