2015年7月9日 星期四

[Linux] libudev抓取裝置描述


本篇是打算記錄一下使用libudev抓取device某些描述的方法。

例如:VID/PID本身是兩串數字,但是在/usr/share/misc/usb.ids這個文件裡面是有對應的字串的。

題外話..VID跟PID可以再http://www.linux-usb.org/usb.ids找到其對應

所以有需要的時候可以從上述網址更新一下你的usb.ids

--

我們來看一下簡單的範例,透過linux指令lsusb -v可以看到很多裝置的資訊。




如果我們要透過libudev使用程式將這些抓出來該怎麼辦呢?

首先再安裝libudev的時候如果沒特別修改設定,udev有一個很好用的範例程式也被裝進你的電腦拉!

該程式叫做udevadm,而且該程式的Source code也是再資料夾內可以看一下libudev怎麼使用。

接下來我們使用udevadm info來看一下/dev/ttyUSB0的資訊


libudev有個函式叫做udev_device_get_property_value

只要給予正確的property name就可以把value抓出來,但是該死的property name實在有夠難找…

從上圖可以看到該節點的某些資訊成功被取得出來啦!

而且顯示的格式為 property name=value

如此一來我們就能用這種偷吃步的方式把property name找到啦

udev_device_get_property_value的函式原型如下:


 const char * udev_device_get_property_value
        (struct udev_device *udev_device,const char *key);



至於libudev基本使用這邊就不贅述了,請看

Tutorial: How to use libudev and Sysfs in Linux







沒有留言:

張貼留言