首页 文章

从Windows控制USB

提问于
浏览
2

我知道这可能不是最简单的事情,但我正在尝试使用USB连接微控制器和PC . 我不想使用内部USART的微控制器或USB转RS232转换,其项目旨在帮助我理解各种原理 .

因此,从微控制器方面完成通信是件小事 - 我的意思是,当我知道他的协议时,它相对很容易在Micro上实现它,因为我可以直接控制evrything,甚至精确计时 .

但这不是PC的情况 . 我对处理连接设备的Windows概念不是很熟悉 . 在我之前的一个问题中,我询问Windows如何通过驱动程序与设备配合使用 . 我知道,对于Windows的内部使用,驱动程序必须具有OS可用的一些默认功能集 . 我的意思是,当操作系统想要访问硬盘驱动器时,它会调用硬盘驱动程序(可能是操作系统内部),带有特定的“问题”,这意味着必须编写硬盘驱动程序才能与Windows合作,以便在适当的情况下具有写入功能操作系统调用的地方 . 类似于GPU,Even DirectX,我的意思是DirectX必须从驱动程序调用特定的功能,因此必须编写驱动程序才能使用DX . 我知道,WinAPI的许多函数都是自己工作的,但即使是“简单”的窗口也必须最终写入framebuffer,使用MMIO来驱动指定的地址 . 我对吗?

所以,我预计Windows有内部功能,WinAPI的一部分设计用于某些常用的东西 . 致电制造商设计的驱动程序 . 但这似乎并非完全正确,因为Windows无法通过Paralel端口进行通信 . 我的意思是,WinAPI中没有使用串口的功能,但有功能可以使用HDD,GPU等 .

但是现在有一部分我迷失了 . 所以,我认为Windows必须有一些内置功能才能通过USB进行通信,例如它处理USB闪存 . 那么,是否有任何WinAPI功能旨在让用户通过该功能操作USB,或者当我想自己使用USB时,我是否必须自己调用所需的USB驱动程序功能?您需要发送到USB控制器的所有设备地址和信息权利?我的意思是,我不必写任何新的司机,对吗?只是为了调用WinAPI函数,或者直接调用原始USB驱动程序 . 这有什么意义吗?

3 回答

  • 0

    为了让您的生活更轻松,并避免编写自己的驱动程序,请尝试在USB顶部使用HID(人机接口设备)API . 虽然它说的是"Human Interface",但它实际上不一定是人类控制的设备 . 优点是现代操作系统已经带有HID驱动程序,您可以使用示例代码,例如您可以找到here的内容 . 许多微控制器制造商为协议的嵌入提供合适的代码 .

    由于操作系统已经了解HID,如果您使用HID界面构建设备,您会发现不仅可以从任何操作系统中读取它,您还可能发现许多应用程序已经可以与您的设备通信,如果它的通信仅限于一个足够小的HID子集 . (例如,我为音乐应用程序构建了一个输入设备,但令人惊讶的是我发现我可以将它直接插入我们在工作中使用的3D动画应用程序,在不同的操作系统上运行,并且可以立即使用它而无需编写单个额外的代码行!)

  • 1

    This answer可能会让您朝着正确的方向前进 .

    The first answer here也许会有所帮助 .

    The answers to this有一些实际的代码和其他资源的链接 .

  • 0

    USB包括一组库存功能,非常类似于支持USB闪存驱动器(USB大容量存储类) . 微控制器接口最有趣的两个是HID和CDC . CDC最容易使用,因为它直接模拟旧式串行端口 .

    如果将微控制器配置为充当CDC设备,Windows会将其枚举为串行端口,并且所有旧的串行API都可以使用它 .

相关问题