与设备通信的Linux程序

时间:2011-05-03 13:22:39

标签: linux linux-kernel linux-device-driver

我可以编程,但我对计算机的了解并不多。我正在使用Ubuntu Linux,而且我(从表面上看)了解了哪些设备文件。我想做的是编写一个从设备获取原始输入的程序,例如鼠标,键盘,网络摄像头或麦克风。我不知道从哪里开始。有一本名为Linux Device Drivers的书,但我不知道这本厚书中包含的所有信息是否相关。我不打算写设备驱动程序,虽然如果那是我想做的事情,那么我会这样做。但是,我只是想编写一个C ++或(最好)一个Python程序,它从设备获取原始输入并使用原始输入执行其他操作。有人可以告诉我从哪里开始?我应该阅读哪些教程或书籍?

我是否只是打开设备文件并从中读取?我可以尝试,但这里有另一个问题。我不知道/ dev /目录中哪个设备是哪个!我有一台Logitec空中鼠标,通过蓝牙连接到接收器,接收器又通过USB连接到我的电脑。但是如果我想从鼠标接收原始输入,我应该打开哪个设备文件?它是USB设备文件还是鼠标设备文件?我的/ dev /目录中有许多设备文件可能与我的鼠标对应,是哪一个?我有/ dev / input / mouse0,/ dev / input / mouse1等,和/ dev / input / mice,和/ dev / input / event0,/ dev / input / event1等。这么多呢?哪一个是正确的?我怎么知道?

我很抱歉,但我对于从哪里开始感到非常沮丧和困惑。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

感谢ninjalj的回答,没有任何详细的答案可以解决我的问题。这当然是可以理解的,因为这个问题的措辞不是很好,而且在我的印象中无论如何都要提出这个问题。

经过一些研究,我将回答自己的问题,希望别人有兴趣,或者遇到与我一样的问题,他们可以在这里得到答案。

从哪里开始?我找到了一本名为Advanced Linux Programming的书。在我看来,这是一本了不起的书,它可以在开放出版许可证下下载。第6章“设备”与此问题特别相关。虽然,所有的章节都是推荐的,因为它们都非常有用,如果你像我一样是个崇高的极客,那就是一个很棒的读物。

哪个设备是哪个?您可以在上述书籍中找到这些信息。但简而言之,有些东西称为“主要数字”和“次要数字”与每个设备相关联。你可以检查他们在设备文件上运行ls -l。它们是普通文件的文件大小应该在的位置。这些数字表示设备文件与哪种设备相关联,以及它使用的驱动程序。要查看这些数字的确切含义,您可以参考Linux Device List。现在我还不知道一个很好的方法来检查他们在Linux机箱上的离线状态,但可能有办法。请注意/ dev /中的某些文件不是实际的设备文件,而是符号链接,例如/ dev / dvd。有各种各样的特殊文件可以做特殊的事情,只需阅读本书!

答案 1 :(得分:1)

/dev/input/event*谈谈evdev协议。 /dev/input/mouse*可能会谈论PS / 2协议的一些变体。

答案 2 :(得分:1)

您使用的鼠标/键盘/摄像头可能已经有了Linux驱动程序。因此,一旦检测到硬件,linux将为您自动加载该硬件的驱动程序。 查看哪个设备文件与哪个硬件设备相关。 仔细查看/ sys目录和dmesg命令条目,您很快就会知道,在插入硬件后最近创建了哪个设备节点。 除此之外,你还可以检查" cat / proc / devices"要知道的文件,主要/次要没有。对应于您的设备文件,或者您可以在插入硬件时查找此文件中的任何更新。