Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;USB编程_C++_Windows_Usb - Fatal编程技术网

C++ C++;USB编程

C++ C++;USB编程,c++,windows,usb,C++,Windows,Usb,我不熟悉硬件编程(特别是USB),所以请容忍我和我的问题。我使用C++,我需要在微处理器板上的USB端口发送/接收一些数据(字节数组)。p> 现在,我已经做了一些串口编程之前,我知道,对于一个串口,你必须打开一个端口,设置,执行I/o,最后关闭端口。我猜测使用USB端口,它不像我上面提到的那么简单 我知道我想使用Microsoft标准驱动程序并实现标准Windows IO命令来实现这一点,因为我相信微处理器板上没有可供我交互的驱动程序 如果有人能告诉我通过标准Windows IO命令与USB端口

我不熟悉硬件编程(特别是USB),所以请容忍我和我的问题。我使用C++,我需要在微处理器板上的USB端口发送/接收一些数据(字节数组)。p> 现在,我已经做了一些串口编程之前,我知道,对于一个串口,你必须打开一个端口,设置,执行I/o,最后关闭端口。我猜测使用USB端口,它不像我上面提到的那么简单

我知道我想使用Microsoft标准驱动程序并实现标准Windows IO命令来实现这一点,因为我相信微处理器板上没有可供我交互的驱动程序


如果有人能告诉我通过标准Windows IO命令与USB端口“对话”(打开、设置、i/o)所需的步骤,我将非常感激。非常感谢你

通过硬件编程,您的意思是要对微控制器进行编程吗?如果是这样,你就不可能使用“标准windows驱动程序”或类似的东西

USB标准非常厚。看看

这是一个非常复杂的主题,我建议找到已经为您的微控制器创建的USB实现。(如果您能提供更多信息,我们可能会找到)

是非常好的背景阅读

对于通用USB模块,请尝试与标准设备对话的一些示例。是该库的windows端口

不过你说得对,它远没有RS232端口那么简单


你用的是什么微处理器?它是否与任何USB硬件一起提供,或者您是否正在考虑尝试在软件中实现它(我甚至不建议您考虑这一点!)。许多微处理器都带有代码示例,可以模拟简单的HID USB设备,如键盘/鼠标等,您可以将其用作起点。如果做不到这一点,可能有一些方法可以帮你省去很多麻烦:-)

什么样的微处理器和什么样的电路板

许多处理器都支持USB端口。此外,一些硬件板也配有USB控制器


例如,我的商店使用的处理器带有两个USB控制器,可以用作集线器或设备。我们甚至还添加了另一个处理器作为USB控制器。

了解微处理器板上使用的USB芯片组,例如Ftdi、Cypress等。这些制造商为通信提供驱动程序、库和示例程序,这是最简单的方法


除非您的电路板设置为HID设备,否则没有“标准”驱动程序。但是,如果您使用Windows,Microsoft提供的驱动程序可能满足您的需要,也可能不满足您的需要(它不支持同步传输)。

您是否应该为将连接自身的USB设备编写驱动程序。如果您知道板上有USB i/o的芯片类型,驱动程序将用于该设备

如果是STM芯片,可能已经有了该芯片的驱动程序,或者可能有API来帮助开发该芯片的驱动程序。它可能是一个自定义设备,但您应该查看设备类型,以查看是否存在与您的设备匹配的现有类型。如果是这样的话,也可能有一个驱动程序已经为它,你可以使用。有关董事会的信息是必要的

编写自己的驱动程序 不必太深入,您应该了解Microsoft的驱动程序模型、用户模式和内核模式驱动程序之间的差异、驱动程序节点表示的内容、驱动程序层次结构及其逻辑连接方式、不同类型的驱动程序(过滤器、函数、总线)、内核驱动程序如何与用户界面通信,动态链接库、框架和API、WDM框架/API、KMDF和UMDF API,这只是一个简短的列表

您可以使用现有驱动程序

使用USB微控制器提供的驱动程序 我们不知道USB微控制器正在使用什么固件(如果有的话)。如果没有固件(如果说是芯片自带的,或者依赖eprom存储而不是闪存),那么如果我们知道芯片是否支持usb引导加载程序,您可以通过usb闪存或加载固件,而不需要JTAG或其他外围设备。很可能usb本身就能够让你离开地面和任何地方。通常,在考虑没有USB微控制器的电路板时,会出现这些类型的问题

这里是一个链接到一个相关的驱动程序。大多数USB微控制器用于将USB通信切换到UART,因为实际上负责思考和控制一切的大多数微控制器并不配备USB i/o,而是UART或其他一些i/o引脚,如I2C或SPI等


该驱动程序可能实际工作,如果不是类似的东西,但为您的USB微控制器制造商;他几乎肯定能胜任这项工作。希望这能有所帮助。

+1只是出于好奇,你打算做什么?(我忍不住要回答)+1个好建议。在设备方面,最好适合现有的Windows端驱动程序,HID是一个非常灵活的驱动程序。不,我不会为微控制器编程……也许我不够清楚。我只需要在USB端口上读写就行了。嗨,回答得很好——但它确实被称为WALLOFTEXT!也许你可以编辑一下,让它更容易阅读?:)Taryn East我不知道问题出在哪里。这里有大量关于usb驱动程序的信息。Usb本身就是硬件。微软甚至为这种开发提供了丰富的信息和框架。我的评论被否决了,而当问题明确地标记为windows时,有人建议使用linux驱动程序。而他确实向windows建议了端口。为什么要使用linux驱动程序,而微软实际上有几十页的信息甚至样本。如果他使用的是windows pc,他