光学鼠标作为编码器

时间:2012-05-03 13:02:25

标签: c++ windows winapi mouse

最近我发现了光学鼠标作为增量位置编码器的美感。

光学鼠标通常包含一个组件,其中相机链接到链接到USB接口的图像处理器。分辨率取决于相机分辨率。在互联网上,很容易找到这类组件的数据表,描述如何使用它们进行读/写。

我首先需要解决的问题是如何确保笔记本电脑/ PC不会将编码器鼠标看作指点设备,而不会禁用它所连接的USB端口。我需要使用2个编码器,这意味着需要在我的PC(运行Windows XP)上使用3个USB端口,一个用于鼠标作为指点设备,两个用于鼠标作为编码器。

第二个问题是如何通过USB端口从/向编码器鼠标读取/写入指令/数据?有人可以给我发一个C ++教程/示例的链接吗?

非常感谢,

的Stefan

2 个答案:

答案 0 :(得分:4)

USB鼠标微控制器可能是硬编码的,用于发送USB帧,将自己标识为HID设备。在这种情况下,您无法成功阻止Windows将其用作鼠标。毕竟这是一只老鼠。

如果您使用DIY,您可以尝试通过拆卸组件/电线来破解鼠标板,并使用您的arduino直接控制编码器。这样,Arduino就可以从编码器读取数据并使用自己的USB串口将其发送到PC。

在那里看一个例子:

http://www.martijnthe.nl/2009/07/interfacing-an-optical-mouse-sensor-to-your-arduino/

有关HID设备的更多信息:http://en.wikipedia.org/wiki/USB_human_interface_device_class 摘抄: “有两个与USB HID相关的API级别:USB级别和操作系统级别。在USB级别,有一个协议,设备可以宣布其功能,操作系统可以解析所获得的数据。操作系统然后为应用程序提供更高级别的视图,这些视图不需要包括对单个设备的支持,而是包括对设备类的支持。这个抽象层允许游戏与任何USB控制器一起工作,例如,甚至是在游戏之后创建的控制器。“

答案 1 :(得分:2)

查看Raw Input API,了解您是否可以通过这种方式了解事件并阻止Windows对其进行操作。