2011-01-05 309 views
3

我正在爲一個linux設備編寫IO例程,該設備將連接到各種不斷變化的USB設備。爲此,我需要能夠確定哪個設備連接到哪個端口,以便我可以使用正確的軟件打開它。類似'udevinfo'的東西會很理想,但我不知道如何從寫作開始。在Linux/C++中枚舉USB設備

關於C++ apis閱讀的建議?

+0

我同意341008。一票給他。 – 2011-01-12 00:29:25

回答

0

我最終在chkconfig文件中使用了BASH解決方案。我走過所有ttyUSB條目,並查看每個驅動程序信息:

USB_ID=`egrep -i "mct u232|pl2303|keyspan" -m 1 /proc/tty/driver/usbserial | awk '{ printf("$d", $1)}'` 
if [ -z $USB_ID ] 
then 
    echo $echo_n "No USB serial adapter found."; 
    exit 1 
fi 
2

看看libudev++。這似乎是你在找什麼。

+0

libudev ++看起來很有趣,但不想在我的RHEL5.5系統上安裝。 – ethrbunny 2011-01-06 13:50:04

2

請參閱libusblibusb_get_device_list,libusb_get_bus_number,libusb_get_device_address

2

GIO應該幫助你。連接到volume-addedvolume-removed信號會將您的程序警告到任何添加或從系統中刪除的存儲設備。如果您不需要GIO提供的控制級別,則可以使用libudev++,它提供了GIO上的高級包裝。

0

我不知道你需要什麼樣的信息,但是你可以直接通過/ sys/bus/usb?

+0

我的訣竅是找出哪個USB設備對應於/ dev/TTYUSBn中的哪個條目。我在libusb或libudev方面沒有取得太大的成功,所以我想了解更多關於腳本解決方案的信息,這些腳本解決方案將通過cmd行的相關開發路徑。 – ethrbunny 2011-01-06 20:32:03