2010-05-18 5 views
3

J'essaie de porter une application de HAL à l'aide d'udev pur. Il est écrit en python et utilisera la bibliothèque gudev, bien que j'aimerais voir des exemples dans n'importe quelle langue. Je suis en mesure d'obtenir tous les périphériques vidéo connectés (tels que les caméras) via:Comment utiliser udev pour trouver des informations sur les supports vidéo insérés (par exemple les DVD)

import gudev 

client = gudev.Client(["video4linux"]) 
for device in client.get_devices(): 
    print device.get_sysfs_attr("name"), device.get_device_name() 

Ceci affiche quelque chose comme:

USB2.0 UVC WebCam /dev/video0 

Je suis en mesure d'obtenir une liste des périphériques de bloc, mais comment puis-je:

  1. Dites s'il s'agit d'un lecteur de CD/DVD?

  2. Indique si le média est actuellement inséré si le lecteur prend en charge les supports amovibles? Dites-nous quel est le nom/label du support (par exemple FUTURAMAS1 pour un DVD)?

Le code original que je suis en train de le port est situé à plus http://github.com/danielgtaylor/arista/blob/045a4d48ebfda44bc5d0609618ff795604ee134f/arista/inputs.py

Toute aide serait grandement appréciée!


Mise à jour: ajout de la réponse ci-dessous.

import gudev 

client = gudev.Client(['block']) 
for device in client.query_by_subsystem("block"): 
    if device.has_property("ID_CDROM"): 
     print "Found CD/DVD drive at %s" % device.get_device_file() 
     if device.has_property("ID_FS_LABEL"): 
      print "Found disc: %s" % device.get_property("ID_FS_LABEL") 
     elif device.has_property("ID_FS_TYPE"): 
      print "Found disc" 
     else: 
      print "No disc" 

Le code ci-dessus les données de sortie comme:

Found CD/DVD drive at /dev/sr0 
Found disc: Ubuntu_10.04_i386 

Merci pour l'aide!

Répondre

3

Jetez un oeil sur les propriétés du périphérique:

import gudev 

client = gudev.Client(['block']) 
for device in client.query_by_subsystem("block"): 
    print device 
    for device_key in device.get_property_keys(): 
     print " property %s: %s" % (device_key, device.get_property(device_key)) 
    print 
+0

Merci, cela suffisait pour le faire fonctionner. Je vais mettre à jour ma question pour montrer la réponse aux autres. – Daniel

Questions connexes