3

我最近在阅读有关 Arduino 的Hello World应用程序的信息,我心想:“我想知道我是否可以使用我现在拥有的硬件来做到这一点。”

因为我没有 Arduino,所以我抓起一个随身携带的 USB 闪存驱动器,开始在谷歌上搜索有关它的信息。我在这方面没有找到太多有用的信息,所以我现在在这里问:我是否可以访问 USB 驱动器的硬件(例如 LED)并通过一些编程环境与之交互(我认为 C# 应该可能有办法做到这一点)?

此外,与这个主题相关 - 有谁知道 USB 驱动器使用什么样的命令?例如,SCSI 存储设备具有标准化的命令集;ATA 设备具有类似的协议。简单的读/写命令是如何发送到 USB 存储设备的?

4

5 回答 5

5

虽然 USB 协议相当通用,但外围设备实际上是特定于功能的,并且需要主机上的某种设备驱动程序才能正常运行。

虽然 USB 闪存驱动器上有一个微控制器,但大多数 USB 存储设备都遵循通用协议。这就是为什么您不必为插入 Windows 的每个驱动器安装不同的设备驱动程序。

我很确定大容量存储协议没有“打开 LED”消息 :) 虽然实现 USB 驱动器的公司实际上可能有一个特殊的命令来执行此操作(可能用于调试),但我会怀疑它将被发布。

虽然我不是 Windows 上的专家,但我相信为了让您直接访问 USB 堆栈,您必须编写自己的设备驱动程序并将其插入内核中。您能想象一个常规应用程序是否可以将“格式化所有内容”命令发送到任意 USB 设备。

于 2009-01-23T20:25:34.683 回答
3

这是一个 DIY USB 控制 LED 灯的链接,它比插入 USB 记忆棒要多一些工作

如果你想打开USB硬盘上的灯,你只需要将数据写入该驱动器上的文件,虽然我认为有些驱动器会一直亮着灯,大多数只是在数据传输时亮起被写。

因此,如果您的 USB 驱动器安装为 F:,您可以创建一个类似 F:\lights.txt 的文件,然后向其中写入几 k 的数据,然后擦除该文件并重新开始。

一个缺点是闪存驱动器会在一段时间后磨损,这会磨损它。您也可以尝试从驱动器读取数据。

如果你想要更精确的控制,你可以得到这样的 USB 数据采集设备它可以让你驱动特定的电气输出,为你想要的任何东西供电,包括灯泡或 LED。它们最初被科学家用来测量实验室设备的输入,我在大学物理课上使用过类似的东西,尽管当时我们使用的是 RS-232。

于 2009-01-25T10:46:22.463 回答
1

我会看这里。他们使用一种叫做大容量存储的东西。

于 2009-01-23T18:32:32.273 回答
1

Linux 中的 USB 驱动器看起来像 SCSI 驱动器,因此您可以进行 INQUIRY、READ、WRITE 等操作。通常闪存驱动器的控制器制造商可能有一个特定于供应商的“后门”,一般公众都不知道。

于 2009-01-25T10:27:57.693 回答
0

您可以像 RS232 端口一样控制 USB,希望此 MSDN 链接对您有所帮助 http://www.microsoft.com/downloads/details.aspx?FamilyID=075318ca-e4f1-4846-912c-b4ed37a1578b&DisplayLang=en

于 2009-08-07T12:25:44.730 回答