3

HAL の使用から純粋な udev の使用にアプリケーションを移植しようとしています。これは python で書かれており、gudev ライブラリを使用しますが、どの言語でも例を見たいと思っています。次の方法で、接続されているすべてのビデオ デバイス (カメラなど) を取得できます。

import gudev

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

これは次のようなものを出力します:

USB2.0 UVC WebCam /dev/video0

ブロックデバイスのリストを取得することもできますが、どうすればよいですか:

  1. CD/DVD ドライブかどうか教えてください。

  2. ドライブがリムーバブル メディアをサポートしている場合、メディアが現在挿入されているかどうかを確認しますか?

  3. メディアの名前/ラベルを教えてください (例: DVD の場合は FUTURAMAS1)。

移植しようとしている元のコードはhttp://github.com/danielgtaylor/arista/blob/045a4d48ebfda44bc5d0609618ff795604ee134f/arista/inputs.pyにあります。

どんな助けでも大歓迎です!


更新: 以下に回答を追加します。

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"

上記のコードは、次のようなデータを出力します。

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

助けてくれてありがとう!

4

1 に答える 1

3

デバイスのプロパティを見てください。

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
于 2010-05-18T21:44:22.897 に答える