c++ - 光电鼠标作为编码器

标签 c++ windows winapi mouse

最近我发现光电鼠标作为增量式位置编码器的美妙之处。

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

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

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

非常感谢,

斯特凡

最佳答案

USB 鼠标微 Controller 可能被硬编码为发送 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 级别,有一个协议(protocol)供设备宣布其功能和操作系统解析其获取的数据。操作系统然后为应用程序提供更高级别的 View ,不需要包括对单个设备的支持,而是对设备类别的支持。这个抽象层允许游戏使用任何 USB Controller ,例如,甚至是在游戏后创建的 Controller 。

关于c++ - 光电鼠标作为编码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10431952/

相关文章:

windows - 电源外壳 : has anyone tried to install powershell on windows 2000 server?

c# - 在 datagridview 中绑定(bind)组合框中的值时出现问题

Windows 中的 copymemory() 问题

c++ - 在 C 中的 _asm block 中使用局部变量

c++ - 交换数组

windows - 我并不总是收到 WM_LBUTTONDBLCLK

c++ - 以编程方式重新启动所有崩溃服务的服务程序

c++ - 如何在 Vista/Server 2008 上使用 std::shared_mutex?

c# - Visual Studio C++ 和 C# 的键盘快捷键

c++ - GetModuleBaseAddress() 函数无法正常工作