2011-05-03 47 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。对应于您的设备文件,或者您可以在插入硬件时查找此文件中的任何更新。