2009-01-23 129 views
3

我最近正在阅读有关Arduino的Hello World应用程序,我想我自己,“我想我是否可以用我现在的硬件来做到这一点。”USB驱动器LED闪光灯

由于我没有Arduino,我抓住了一个usb闪存驱动器,我已经铺设并开始搜索有关它的信息。我在这方面没有找到很多有用的信息,所以现在我在这里问:我是否可以访问USB驱动器的硬件(例如LED)并通过一些编程环境与它进行交互(我认为C#应该可能有办法做到这一点)?

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

+0

在我认识的设备时,LED只需连接而存储写入闪存,所以没有软件的事情,但只是一个硬件的东西。 – 2009-01-25 11:05:17

+0

获得一个arduino和正确的东西,你不会撤销它!它的方式比玩LED更有效 – DFectuoso 2009-01-27 21:04:10

+0

我第二,Arduino是30美元,完全值得。 – basszero 2009-01-27 21:15:33

回答

5

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

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

我很确定海量存储协议没有“Turn LED on”消息:) 尽管实现USB驱动器的公司实际上可能有一个特殊的命令来执行此操作(可能用于调试) ,我怀疑它会被公布。我相信,为了让您直接访问USB堆栈,您必须编写自己的设备驱动程序并将其加载到内核中。你能想象如果一个普通的应用程序可以发送“格式化所有”命令到任意的USB设备。

1

我看看here。他们使用称为大容量存储的东西

1

Linux中的USB驱动器看起来像SCSI驱动器,因此您可以进行查询,读取,写入等操作。通常,闪存驱动器的控制器制造商可能有供应商特定的“后门”,这是大众所不知道的。

3

Here is a link to a DIY USB controlled LED lamp, it's a little more work then plugging in a USB stick.

如果你想打开一个USB光硬盘驱动器上,你就必须将数据写入到驱动器上的文件,但我认为某些驱动器将离开光所有的时间,大部分数据正在写入时点亮。

因此,如果你的USB驱动器被安装为F :,你可以创建一个像F:\ lights.txt这样的文件,然后写入几k的数据,然后擦除文件并重新开始。

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

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