我最近在阅读关于Arduino的Hello World应用程序,我想,“我想知道我是否可以使用我现在拥有的硬件来做到这一点。”
由于我没有Arduino,我抓住了一个我已经铺设的USB闪存驱动器并开始在谷歌上搜索有关它的信息。我在这方面没有找到太多有用的信息,所以我现在在这里问:我是否可以访问USB驱动器的硬件(例如LED)并通过某些编程环境与它进行交互(我当时认为C#应该可能有办法做到这一点)?
此外,与此主题相关 - 有谁知道USB驱动器使用什么样的命令?例如,SCSI存储设备具有标准化的命令集; ATA设备具有类似的协议。如何将简单的读/写命令发送到USB存储设备?
答案 0 :(得分:5)
虽然USB协议非常通用,但外围设备确实是功能特定的,需要主机上的某种设备驱动才能正常运行。
虽然USB闪存盘上有微控制器,但大多数USB存储设备都遵循通用协议。这就是为什么您不必为插入Windows的每个驱动器安装不同的设备驱动程序。
我很确定大容量存储协议没有“打开LED”消息:) 虽然实现USB驱动器的公司实际上可能有一个特殊的命令(可能用于调试),但我怀疑它会被发布。
虽然我不是Windows上的大师,但我相信为了让您直接访问USB堆栈,您必须编写自己的设备驱动程序并将其加载到内核中。你能想象一下普通应用程序是否可以将“format everything”命令发送到任意USB设备。
答案 1 :(得分:3)
如果你想打开USB硬盘上的指示灯,你只需要将数据写入该驱动器上的文件,虽然我认为有些驱动器会一直打开灯,大多数只是点亮正在编写数据。
因此,如果您将USB驱动器安装为F:,则可以创建一个类似F:\ lights.txt的文件,并将几k数据写入其中,然后擦除该文件并重新启动。
一个缺点是闪存驱动器在一段时间后磨损,这会磨损掉。您也可以尝试从驱动器中读取数据。
如果您想要更精确的控制,您可以获得these等USB数据采集设备,它可以让您驱动特定的电力输出,为您想要的任何电力供电,包括灯泡或LED。它们最初被科学家用来测量来自实验室设备的输入,我在大学物理课上使用了类似的东西,尽管当时我们使用的是RS-232。
答案 2 :(得分:1)
我会看here。他们使用称为大容量存储的东西。
答案 3 :(得分:1)
Linux中的USB驱动器看起来像SCSI驱动器,因此您可以进行查询,读取,写入等操作。通常,闪存驱动器的控制器制造商可能具有特定于供应商的“后门”,这是公众所不知道的。
答案 4 :(得分:0)
您可以像控制RS232端口一样控制USB,希望这个MSDN链接能为您提供更多帮助 http://www.microsoft.com/downloads/details.aspx?FamilyID=075318ca-e4f1-4846-912c-b4ed37a1578b&DisplayLang=en