2013-01-03 128 views
3

我一直在尋找一段時間,但我一直未能找到這個問題的答案。我正在嘗試接收特定USB設備的連接通知。這是我所知道的:在C++中接收usb設備插入的通知/事件/信號

我正在運行Linux內核版本3.2。我有ID需要識別USB設備。我創建了一個讀取和寫入設備的內核模塊。內核模塊已經過測試並正常工作。內核模塊創建/ dev/Component#。

我想寫一個USB設備連接事件通知的程序,因此不需要遍歷/ dev/Component#並檢查文件是否存在。我希望有一個信號/通知/事件已經存在。我看過libusb,但我的理解是,你真的只是創建一個讀取所有設備的循環。我曾考慮添加系統調用,但重新編譯內核並不是真正的選擇。

任何幫助將不勝感激。

謝謝,

SgtSquatlow

+2

是一個hotplug腳本是否足夠?如果不是,請查看熱插拔源代碼。 –

+0

我建議你添加'udev'規則,在插入時會通知你的deamon程序。 –

+0

不幸的是,代碼需要是可移植的,並不是所有我將運行代碼的系統都有/使用udev。 – sgtsquatlow

回答

0

存在使用DBUS的溶液。首先,如果尚未安裝,請安裝庫libdbus-glib(在Debian/Ubuntu上的軟件包名爲libdbus-glib-1-dev)。然後你可以巔峯程序here,像這樣編譯程序:

gcc -o dbus-usb dbus-usb.c $(pkg-config --libs --cflags dbus-glib-1) 
+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的重要部分,並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/18632874) –

+0

@Simon Shine我已經鏈接了一個stackoverflow示例。我無法看到一個計算器鏈接如何失效。 –

+0

對不起,我一開始沒有注意到。你說得很對。這個答案被自動標記爲短。我對格式進行了改進(使用'$(...)'而不是反引號)並對其進行了提升。 –