我正在尝试将应用程序从使用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
我也能获得一个块设备列表,但我怎么能:
判断它是否是CD / DVD驱动器?
如果驱动器支持可移动媒体,请判断当前是否插入了媒体?
告诉媒体的名称/标签是什么(例如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
感谢您的帮助!
答案 0 :(得分: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