Forum Programmation.autre La bonne méthode pour retrouver un périphérique USB

Posté par  .
Étiquettes : aucune
0
6
fév.
2008
Bonjour,

Je suis entrain de réaliser un programme de domotique qui doit communiquer avec des périphériques USB (clé, matos avec interface série USB, telecome HF USB, etc ....)

La méthode ancestrale est de mettre la conf dans un fichier texte mais j'aimerais un programme qui s'autoconfigure.

Vu que je connais les ID unique de mes périphériques, je dois etre capable de retrouver le fichier me permettant de communiquer avec mon device.

J'ai bien fais des manip avec ioctl sur les /dev/input/event* mais c'est quand meme pas génial et je ne trouve pas les USB série et si j'arrive à lire je n'arrive pas à écrire.

il doit y avoir peut etre qqc à faire avec udev mais cela revient à modifier la conf de udev et donc cela ne me convient pas vraiment.

Je suppose que je dois pouvoir faire des truc avec HAL mais je ne trouve pas de doc exploitable.

Est ce que qqu connait la bonne méthode avec le dernier noyau pour faire un soft qui s'autoconfigure sans lib gnome ou KDE (en pur système) ??

D'avance merci
  • # mes 2cts

    Posté par  . Évalué à 4.

    Je ne vois pas trop ce que tu veut faire, mais tu peut sans doute utiliser la sortie de udevinfo ou parcourir /sys/ pour les infos que tu cherche.
    Bien que les regles udev soit la vrai solutions pour ce que tu veut faire
  • # dbus

    Posté par  (site web personnel) . Évalué à 3.

    salut. j'ia un logiciel qui détecte la présence d'appareil photo.

    Pour cela, je couple dbus/QT et python. 9a fonctionne très bien.

    Une boucle regarde les évènements dbus et dès qu'il en arrive un nouveau, ça l'envoie dans un event_handler.

    et en fonction de ce qu'il trouve il voit si c'est une caméra ou pas.

    j'ai un petit programme qui permet de faire des tests si ça t'intéresse (python et pyQT4)
    • [^] # Re: dbus

      Posté par  . Évalué à 1.

      Interressant cela mais comment tu fais si l'appareil photo est deja connecté avant que tu lances ton logiciel ??

      As tu un moyen d'envoyer un message demandant la liste de tous les connectés ?

      Et qui génére les messages sur dbus ? c'est HAL ?

      Et dans le message reçu comment sais tu quel fichier (/dev/XXXX) tu dois ouvrir ?

      Avec plaisir pour le bout de code
      • [^] # Re: dbus

        Posté par  (site web personnel) . Évalué à 2.

        ben je lance un poll au démarrage ;) (j'appel event_handler au démarrage quoi ;) )
        c'est hal qui génère les message dbus, et tu peux voir ce que ça donne avec hal-device.

        vu que :"hal-device | grep "/dev/" " me donne quelque chose : oui tu peux récupérer le /dev :) )c'est beau non :) ?

        http://pyfocus.free.fr/upload/dbus_try.py
        • [^] # Re: dbus

          Posté par  . Évalué à 1.

          Merci

          je vais utiliser HAL cela me parait etre la meilleur solution.
          Je preferre aller chercher dynamiquement un nom de device peu explicite (genre /dev/ttyUSB1) que d'obliger le device à toujours porter un nom parlant
      • [^] # Re: dbus

        Posté par  . Évalué à 2.

        Interressant cela mais comment tu fais si l'appareil photo est deja connecté avant que tu lances ton logiciel ??

        As tu un moyen d'envoyer un message demandant la liste de tous les connectés ?

        La commande qui fait ça est lsusb.

        BeOS le faisait il y a 20 ans !

        • [^] # Re: dbus

          Posté par  (site web personnel) . Évalué à 2.

          en fait, dans le p'tit bout de programme, tu récupères TOUT ce qui est branché et géré par hal. Donc, pour ma part, je lance la méthode au lancement, puis je la lance à chaque évènement dbus.

          la méthode se charge de faire le tri entre toutes les entrées, via des criètres définis. (critères que j'ai trouvé dans la doc de freedesktop/hal et à cause de "grep" ;) )

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.