2011-05-03 62 views
3

我可以編程,但對電腦並不瞭解太多。我使用的是Ubuntu Linux,我從表面上理解了什麼是設備文件。我想要做的是寫一個程序,從設備獲取原始輸入,例如鼠標,鍵盤,網絡攝像頭或麥克風。我不知道從哪裏開始。有一本名爲「Linux設備驅動程序」的書,但我不知道該厚本中包含的所有信息是否相關。我不想寫設備驅動程序,但如果這是我想要做的事情所需要的,那麼我會做。但是,我正在尋找簡單地編寫一個C++或(最好)一個Python程序,該程序從設備獲取原始輸入並使用原始輸入執行其他操作。有人能告訴我從哪裏開始?我應該閱讀哪些教程或書籍?與設備通信的Linux程序

我只是打開設備文件並從它們讀取?我可以嘗試,但是還有另外一個問題。我不知道/ dev /目錄中的哪個設備!我有一個Logitec空中鼠標,它通過藍牙連接到接收器,而接收器又通過USB連接到我的電腦。但是,如果我想從我的鼠標接收原始輸入,應該打開哪個設備文件?它會成爲USB設備文件還是鼠標設備文件?我的/ dev /目錄中有很多設備文件可能對應我的鼠標,這是哪一個?我有/ dev/input/mouse0,/ dev/input/mouse1等,和/ dev/input/mice,和/ dev/input/event0,/ dev/input/event1等等。哪一個是正確的?我如何發現?

對不起,但我只是非常沮喪和困惑,從哪裏開始。任何幫助將非常感激。

+0

設備驅動程序手冊與您的問題無關。是的,打開原始設備(/ dev/???)可能是你想要的。使用'lspci'和'lsusb'來幫助確定哪個設備是哪個設備。 – mpez0 2011-05-03 16:07:17

回答

4

感謝ninjalj爲他/她的回答,沒有任何詳細的答案,真正解決了我的問題。這當然是可以理解的,因爲這個問題的表述不是很好,在我的印象中反正要問這是一個不尋常的事情。

因此經過一番研究,我會回答自己的問題,希望其他人如果對我有興趣或者有同樣的問題,他們可以在這裏得到答案。

從哪裏開始?我找到了一本名爲Advanced Linux Programming的書。在我看來,這是一本驚人的書,可以通過Open Publication License下載。第6章「設備」與此問題特別相關。儘管如此,所有章節都是推薦的,因爲它們都是非常豐富的,如果你是像我這樣的怪人,就會有很棒的閱讀。

哪個設備是哪個?你會在上述書中找到這些信息。但總之,有些東西稱爲「主要數字」和「次要數字」與每個設備相關聯。你可以在設備文件中檢查我的運行ls -l。它們是普通文件的文件大小應該在的位置。這些數字告訴你設備文件與哪種設備相關聯,以及它使用什麼驅動程序。要查看這些數字的準確含義,可以參考Linux Device List。目前我還不知道有什麼好方法可以檢查Linux機器本身是否處於脫機狀態,但可能有辦法。請注意,/ dev /中的某些文件不是實際的設備文件,而是符號鏈接,如/ dev/dvd。有各種各樣的特殊文件做特殊的事情,只是看書!

1

/dev/input/event*談論evdev協議。 /dev/input/mouse*可能會談到PS/2協議的一些變體。

+0

謝謝你ninjalj你的答案! – Raaaaay 2011-05-09 12:07:45

0

可能是您使用的鼠標/鍵盤/凸輪,已經有一個Linux驅動程序。所以一旦檢測到硬件,linux會爲你自動加載該硬件的驅動程序。 查看哪個設備文件與哪個硬件設備相關。 仔細看看/ sys目錄和dmesg命令條目,您將很快知道,在插入硬件後最近創建了哪個設備節點。 除此之外,您還可以查看「cat/proc/devices」文件來了解哪些Major/Minor no。對應於您的設備文件,或者您可以在插入硬件時查找此文件中的任何更新。