IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Usage de dbus


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    dbus-send --type=signal --print-reply / com.gnome.mplayer.GetDuration
    L'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Membre Expert

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Par défaut
    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é

    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 !

  3. #3
    Membre chevronné
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Par défaut
    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 ?


    -

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut
    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).
    Images attachées Images attachées  

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2010
    Messages : 4
    Par défaut
    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.

Discussions similaires

  1. Quel usage faites vous de Python (2004 - 2008) ?
    Par Guigui_ dans le forum Général Python
    Réponses: 130
    Dernier message: 03/12/2008, 23h59
  2. [POI] Usage à partir d'une Servlet
    Par fredmorvant29 dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 19/07/2004, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo