Détecter le branchement d'un périphérique ?

Détecter le branchement d'un périphérique ? - C - Programmation

Marsh Posté le 02-06-2005 à 20:03:02    

Coucou les gens :)
 
Je voudrai savoir comment vous vous y prendriez pour lancer une commande quelconque au branchement d'un peripherique ? (au hasard un disque dur firewire  :sweat:  )
 
Au debut je voulais passer par un script shell avec udev et/ou hotplug mais sans succes... Alors je passe par C/C++.
Y a t il une librairie qui gere les peripheriques qui soit deja créé et dispo ?
 
Faites moi part de vos lumieres  :sol:  
 
Pluche
Ben

Reply

Marsh Posté le 02-06-2005 à 20:03:02   

Reply

Marsh Posté le 02-06-2005 à 20:03:46    

ioctl() ?

Reply

Marsh Posté le 02-06-2005 à 20:11:01    

non, utilise gnome-vfs, GnomeVFSMonitor c'est super facile à utiliser et ça fait exactement ce que tu veux.

Reply

Marsh Posté le 02-06-2005 à 20:11:53    

et tu peux utiliser gnomevfs en python et sans doute d'autres langages de script, c'est sans doute plus facile.

Reply

Marsh Posté le 02-06-2005 à 22:38:05    

python roxor


---------------
http://www.blastmanu.info
Reply

Marsh Posté le 02-06-2005 à 23:08:06    

bouh python :P

Reply

Marsh Posté le 03-06-2005 à 17:08:31    

Bon ... j'ai installé gnomevfs mais je ne vois pas du tout comment l'intégrer dans un programme... Oo  :??:  
 
Me mettre au python, je veux bien mais pourquoi ? gnomevfs est en python ? On peux inclure des fichiers de gnomevfs ?
 
S'il vous plaît aidez moi
 
Ben.

Reply

Marsh Posté le 03-06-2005 à 17:50:57    

google -> http://developer.gnome.org/doc/API/gnome-vfs/
-> http://developer.gnome.org/doc/API [...] nitor.html
après bon ben faut bien avouer que comme çà c'est pas super clair...
 
m'enfin on voit quand meme que c'est du C :o  
 
sinon tu as libsysfs et sans doute une api pour les événements d'hotplug

Reply

Marsh Posté le 03-06-2005 à 17:51:16    

c'est une blague ?

Reply

Marsh Posté le 03-06-2005 à 17:52:18    

manatane a écrit :

google -> http://developer.gnome.org/doc/API/gnome-vfs/
-> http://developer.gnome.org/doc/API [...] nitor.html
après bon ben faut bien avouer que comme çà c'est pas super clair...
 
m'enfin on voit quand meme que c'est du C :o  
 
sinon tu as libsysfs et sans doute une api pour les événements d'hotplug


évidemment si tu lisais les liens que tu donnes ...
 
http://developer.gnome.org/doc/API [...] index.html
http://developer.gnome.org/doc/API [...] nitor.html

Reply

Marsh Posté le 03-06-2005 à 17:52:18   

Reply

Marsh Posté le 03-06-2005 à 18:31:39    

pourquoi une blague? c'est le premier lien http://www.google.fr/search?hl=fr& [...] ogle&meta=
Et puis on n'est pas obligé d'installer gnome pour écouter les événements hotplug. Genre en faisant pareil que gnome-volume-manager qui ecoute les événements de hal via son api?

Reply

Marsh Posté le 03-06-2005 à 18:35:58    

ben oui. et gnomevfs n'est pas gnome. gnomevfs utilise hal si dispo. et l'API de gnomevfs est nickel.

Reply

Marsh Posté le 03-06-2005 à 18:47:42    

Ok !
La doc de vfs2.0 est beaucoup mieux ^^
 
Merci Taz
 
Une derniere (?) question cependant :
J'ai installé gnome-vfs-2.0 avec ma debian, mais je n'arrive pas a trouver ou il a mis les fichiers .h ... Rien dans /usr/include ou dans le coin !
 
C'est fou ca...

Reply

Marsh Posté le 03-06-2005 à 18:47:48    

Ah :D mes 2 neurones pensaient qu'il fallait installer le branle-bas de combat pour avoir accès à cette api (sur laquelle je vais me pencher merci :+)

Reply

Marsh Posté le 04-06-2005 à 14:54:16    

bonjour à tous,
 
j'ai le même problème à régler pour la detection de peripheriques de stockage,  
qq peut-il m'expliquer simplement comment installer et utiliser gnome-vfs-2.0
merci d'avance


---------------
Developpement vôtre
Reply

Marsh Posté le 04-06-2005 à 15:46:28    

Quelle distribution de Linux as tu?


Message édité par benji_100 le 04-06-2005 à 15:46:58
Reply

Marsh Posté le 04-06-2005 à 17:27:03    

je suis obligé d'utiliser du windows XP


---------------
Developpement vôtre
Reply

Marsh Posté le 04-06-2005 à 20:25:43    

donc
--> []

Reply

Marsh Posté le 05-06-2005 à 19:56:45    

Ah oué ... Windows XP tu te fais du mal...
Enfin bon si t as pas le choix...
Perso je penses que c 'est mort pour toi à moins que :
Tu trouve les sources, et que gnomevfs2 n'ait pas besoin d'autres packages linux... Je ne sais pas si c'est possible.

Reply

Marsh Posté le 06-06-2005 à 19:16:13    

Citation :

checking for glib-2.0 >= 2.0.0 gmodule-2.0 >= 2.0.0 gthread-2.0 >= 2.0.0 libxml-2.0 >= 2.2.8... Package glib-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `glib-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'glib-2.0' found
configure: error: Library requirements (glib-2.0 >= 2.0.0 gmodule-2.0 >= 2.0.0 gthread-2.0 >= 2.0.0 libxml-2.0 >= 2.2.8) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.
user:/rep/gnome-vfs-2.0.4# echo $PKG_CONFIG_PATH
PKG_CONFIG_PATH: Variable pas définie.


 
Voila ce que j'ai en essayant d'installer la libgnome-vfs-2.0 ...
Evidement j'ai bien glib ! Pourquoi il ne le trouve pas ??


Message édité par benji_100 le 06-06-2005 à 19:17:06
Reply

Marsh Posté le 06-06-2005 à 20:58:46    

et pourquoi tu compiles? tu peux pas prendre le paquet de ta distrib? (c'est mieux pour la cohérence de ton système en plus)

Reply

Marsh Posté le 06-06-2005 à 23:20:57    

le .deb ne fournit pas les .h !!!(ou alors j suis trop nul et j les ai pas trouvé... ce qui est possible aussi)
Bref les archives ont les .h mais j arrive pas a les compiler... (ce qui prouve aussi que je suis trop nul  :cry: lol)à cause d'un tas de dependances  :pfff: .
 
Mais quand meme ca me parait bizarre qu'avec les packages que j'installe avec apt-get, je ne puisse pas programmer..!! Nan?

Reply

Marsh Posté le 06-06-2005 à 23:30:58    

tu dois avoir un deb libgnome-vfs-dev ou un truc comme çà (j'ai une Ubuntu) ayant pour description "Libraries and include files for developing GNOME VFS applications" quand tu fais un apt-cache search libgnome-vfs -> apt-get install libgnome-vfs-dev et voilà.

Reply

Marsh Posté le 07-06-2005 à 00:57:28    

libgnomevfs2-dev

Reply

Marsh Posté le 13-06-2005 à 15:38:46    

Ok alors la lib est tres bien :)
 
Par contre je n'arrive pas a comprendre comment diable utiliser les signaux "volume-mounted" ou "volume-unmounted" associés à des fonctions du type :
void user_function (GnomeVFSVolumeMonitor *vfsvolumemonitor,
                    GnomeVFSVolume *arg1,
                    gpointer user_data);
 
La doc est : http://developer.gnome.org/doc/API [...] nitor.html .
 
Je penses que cela doit avoir un rapport avec les callbacks, mais ils ne le disent pas explicitement... et je suppose qu'il ne suffit pas que je créé ma user_function pour qu'elle soit appellée directement au branchement de mon peripherique !
 
Si quelqu'un s'y connait un peu avec cette lib j veu bien un peu de sa lumiere car la doc m'aide pas du tout :/
 
Merci


Message édité par benji_100 le 13-06-2005 à 15:42:45
Reply

Marsh Posté le 13-06-2005 à 15:50:45    

Code :
  1. static void
  2. cb_volume_mounted_or_unmounted(GnomeVFSVolumeMonitor *vfsvolumemonitor,
  3.                             GnomeVFSVolume *vol,
  4.                             gpointer procdata)
  5. {
  6.         // blah
  7. }
  8. static void
  9. init_volume_monitor(ProcData *procdata)
  10. {
  11.         GnomeVFSVolumeMonitor *mon;
  12.         mon = gnome_vfs_get_volume_monitor();
  13.         g_signal_connect(mon, "volume_mounted",
  14.                          G_CALLBACK(cb_volume_mounted_or_unmounted), NULL);
  15.         g_signal_connect(mon, "volume_unmounted",
  16.                          G_CALLBACK(cb_volume_mounted_or_unmounted), NULL);
  17. }


 
me dit pas que ça marche, c'est le code d'une appli

Reply

Marsh Posté le 13-06-2005 à 18:22:03    

Ohh ca m'a l'air tres interressant mais je voudrai bien avoir le reste ! (surement la mainloop de glib qui me pose pb)
Est il possible de recuperer ce code sur le net ? ou sinon de quelle appli s'agit il ? (et de quel fichier par la meme occasion?)
 
En tout cas merci Taz, a chaque fois que tu me repond tu me debloque enormement... merci
 
EDIT : Oui je mexplique un peu qd meme :
gnomeVFS semble proposer de mettre en place ses propre callbacks MAIS il ne propose pas (ou alors j suis aveugle car j ai lue la doc 40 fois) de boucle de récupération d'évènements...
Il utilise donc surement celle de GLib je penses. Mais le pb est que Glib ne semble pas actualiser le gnomeVolumeMonitor tout seul, et que donc le gnomeVolumeMonitor ne peut pas envoyer son petit signal à la chtite fonction....
Je penses qu'avec le code complet je pourrai voir comment lier les 2 :) enfin j espere, ca commence a faire un bail que je suis dessus  :sweat:


Message édité par benji_100 le 13-06-2005 à 18:35:18
Reply

Marsh Posté le 13-06-2005 à 18:33:08    

ben dans les source de gnomevfs tu dois avoir des exemples

Reply

Marsh Posté le 14-06-2005 à 16:17:33    

Y a t il une erreur dans le code suivant ?
 
int main (int argc, char *argv[])
{
    gtk_init (&argc, &argv);
     
    cout<<"coucou"<<endl;
     
    return 0;
}
 
Ca m'affiche pas coucou mais une erreur de segmentation....!
J'ai essayé de mettre des arguments inutiles ou autres mais rien... pourtant ca compile nikel !

Reply

Marsh Posté le 14-06-2005 à 16:24:16    

ça vient faire quoi gtk la dedans ?

Reply

Marsh Posté le 14-06-2005 à 20:25:25    

La gtk nous file la main loop de recuperation des evenements.

Reply

Marsh Posté le 14-06-2005 à 20:30:18    

gtk file rien. gtk utilise la main loop de la glib.

Reply

Marsh Posté le 14-06-2005 à 21:27:20    

benji_100 a écrit :

Y a t il une erreur dans le code suivant ?
 
int main (int argc, char *argv[])
{
    gtk_init (&argc, &argv);
     
    cout<<"coucou"<<endl;
     
    return 0;
}
pourtant ca compile nikel !


:lol:


main.c: In function `main_':
main.c:13: warning: implicit declaration of function `gtk_init'
 
main.c:15: `cout' undeclared (first use in this function)
main.c:15: (Each undeclared identifier is reported only once
main.c:15: for each function it appears in.)
main.c:15: `endl' undeclared (first use in this function)


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 14-06-2005 à 22:20:58    

tiens j'avais même pas fait attention à ça ... je vois mal comment ça peut segfaulter d'ailleurs :)

Reply

Marsh Posté le 14-06-2005 à 22:36:17    

Mais nan ... j vous ait pas mis les includes c'est normal .....
 
C'est le gtk_init() qui seg fault


Message édité par benji_100 le 14-06-2005 à 22:36:43
Reply

Marsh Posté le 14-06-2005 à 22:38:04    

Taz a écrit :

gtk file rien. gtk utilise la main loop de la glib.


 
Bah oué oké alors c'est pour avoir la main loop de glib, ca revient au meme... C'est pour avoir une boucle de recupération d evts ...

Reply

Marsh Posté le 14-06-2005 à 22:47:51    

J'ai fait un programme a partir de gnomeVFS qui me dit simplement si il detecte mon HDD (il va regarder à chaque minute dans mon gnomeVFS-volume-monitor si il le trouve).
 
Voici les tests que j'ai alors fait :
-Je lance mon programme sans HDD : il me dit qu'il n'y en a pas.
-Je relance mon programme avec mon HDD de branché : il le detecte.
-Je lance mon programme sans HDD ; je lance le programme qui ne detecte rien ; je branche a chaud mon HDD (qui se monte tout seul) ; et mon programme ne detecte toujours rien => Les infos du gnomeVFSVolumeMonitor ne s'actualisent pas.  
 
Voila le vrai pb...
De la j'ai pensé que cela allait conjointement avec une boucle plus bas niveau de glib (ou gtk) qui recupererait ces evenements... C'est idiot?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed