Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 27/02/2010, 12h48   #1
Invité de passage
 
Bastien Roques
Inscription : février 2010
Messages : 4
Détails du profil
Informations personnelles :
Nom : Bastien Roques
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2010
Messages : 4
Points : 0
Points : 0
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 :
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 !
hdiamant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2010, 14h32   #2
Rédacteur/Modérateur
 
Avatar de Aquanum
 
Homme Yoann Sculo
Ingénieur Linux Embarqué
Inscription : janvier 2006
Messages : 506
Détails du profil
Informations personnelles :
Nom : Homme Yoann Sculo
Âge : 25
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Ingénieur Linux Embarqué
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : janvier 2006
Messages : 506
Points : 1 264
Points : 1 264
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 !
__________________
Mon blog - Mes projets - Mes articles
Aquanum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2010, 15h16   #3
Membre éclairé
 
Inscription : janvier 2007
Messages : 328
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 328
Points : 325
Points : 325
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 ?


-
monnomamoi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2010, 19h01   #4
Invité de passage
 
Bastien Roques
Inscription : février 2010
Messages : 4
Détails du profil
Informations personnelles :
Nom : Bastien Roques
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2010
Messages : 4
Points : 0
Points : 0
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
Type de fichier : png Capture.png (84,9 Ko, 9 affichages)

Dernière modification par hdiamant ; 28/02/2010 à 19h17.
hdiamant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2010, 11h31   #5
Invité de passage
 
Bastien Roques
Inscription : février 2010
Messages : 4
Détails du profil
Informations personnelles :
Nom : Bastien Roques
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : février 2010
Messages : 4
Points : 0
Points : 0
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.
hdiamant est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 08h49.


 
 
 
 
Partenaires

Hébergement Web