标签: usb

USB驱动器LED闪光灯

我最近在阅读关于Arduino的Hello World应用程序的文章,我心里想,"我想知道我是否可以用我现在拥有的硬件做到这一点."

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

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

hardware embedded usb led

3
推荐指数
1
解决办法
4092
查看次数

C/C++ USB驱动器事件

关于Windows平台,我们可以查找一个事件,告诉我们什么时候插入USB驱动器或任何类型的便携式媒体?

c c++ windows usb winapi

3
推荐指数
1
解决办法
2140
查看次数

为什么在删除多卷USB设备时只有一条WM_DEVICECHANGE消息?

我正在编写一个应用程序,通过侦听WM_DEVICECHANGE消息来检测何时插入某个USB大容量存储设备以及何时拔下插头.

我还注册了我的应用程序来监听WM_DEVICECHANGE消息DBT_DEVTYP_DEVICEINTERFACE(使用RegisterDeviceNotification API调用),当插入或拔出USB大容量存储设备时,我得到了消息DBT_DEVICEARRIVALDBT_DEVICEREMOVECOMPLETE消息.

现在,当插入具有多个卷的USB设备,然后拔下插头时,会出现问题.

插入设备时,我收到以下消息:

  • WM_DEVICECHANGE(DBT_DEVICEARRIVAL类型DBT_DEVTYP_DEVICEINTERFACE)
  • WM_DEVICECHANGE(DBT_DEVICEARRIVAL类型DBT_DEVTYP_VOLUME)
  • WM_DEVICECHANGE(DBT_DEVICEARRIVAL类型DBT_DEVTYP_VOLUME)

插入时出现以下消息:

  • WM_DEVICECHANGE(DBT_DEVICEREMOVECOMPLETE类型DBT_DEVTYP_VOLUME)
  • WM_DEVICECHANGE(DBT_DEVICEREMOVECOMPLETE类型DBT_DEVTYP_DEVICEINTERFACE)

因此,即使有两个卷,也只有一个删除消息.为什么??

我有两个问题:

  • 如何将DBT_DEVTYP_DEVICEINTERFACE消息与DBT_DEVTYP_VOLUME消息相关联(实质上,我如何知道哪个VOLUME消息对应于哪个DEVICEINTERFACE消息 - 因为我同时获得了设备)?
  • 有没有办法让Windows通知我两个卷删除?

usb winapi usb-mass-storage

3
推荐指数
1
解决办法
3176
查看次数

是否可以将单个物理USB设备显示为两个单独的设备类?

我正处于需要USB连接的设备开发的早期阶段.设备必须至少作为传统串行端口出现,但如果它可以同时显示为大容量存储设备,它将非常有用.

这是可能的,还是设备需要在大容量存储设备和通信设备之间切换,以便一次只能做一件事?

**[编辑]**我可能有点快速解决问题; 表明它确实可以使用USB复合设备框架完成.如果有人对此有任何经验并且可能有一些提示或指针,使用了什么平台,以及他们可能使用过的任何第三方工具或堆栈,我仍然会感兴趣.

embedded usb

3
推荐指数
1
解决办法
284
查看次数

what happens when you plug in a new USB device?

I have an embedded device with a USB connection. When the user plugs the device into their PC (Windows, OSX), how does the operating system discover what drivers to install? How do I get my drivers to be selected? Can they reside on some central server (run by the OS vendor)?

windows macos usb device-driver

3
推荐指数
2
解决办法
7583
查看次数

如何获得USB闪存盘的制造商序列号?

如何在Delphi中检索USB闪存驱动器的制造商序列号?

我试过这个:

function GetDiskVolSerialID(ADriveName: Char): Cardinal;
var
  DiskDrive: string;
  FileSystemFlags: DWORD;
  VolumeSerialNumber: DWORD;
  MaximumComponentLength: DWORD;
begin
  DiskDrive := ADriveName + ':\';
  GetVolumeInformation(PChar(DiskDrive),
                       nil,
                       0,
                       @VolumeSerialNumber,
                       MaximumComponentLength,
                       FileSystemFlags,
                       nil,
                       0);
  Result := VolumeSerialNumber;
end;
Run Code Online (Sandbox Code Playgroud)

但它没有返回正确的结果!

windows delphi usb

3
推荐指数
1
解决办法
2万
查看次数

使用delphi检测usb驱动器/设备

我无法弄清楚这里的格式规则..我的例子中有太多行代码为每行添加4个空格,所以这里是我需要帮助的代码的链接

http://nitemsg.blogspot.com/2011/01/heres-unit-written-in-delphi-7-that-you.html

我遇到的问题是我对delphi不太了解将此代码与表单一起使用.我只是一个拖放程序员.

当我检测到USB设备时,showmessage('friendly name ='+ ...)的例子就是我所需要的.

干杯,

delphi usb delphi-7

3
推荐指数
1
解决办法
7810
查看次数

usb4java USB错误4:无法打开USB设备:

我正在尝试与PS3的DS3控制器连接.我已经设法C#使用了一个实现,libusb但决定将我的实现移动到java.不幸的是,我转向java并不是那么顺利.该设备似乎在设备列表中找到,但当我尝试打开它时,我收到以下错误"USB错误4:无法打开USB设备:没有这样的设备(可能已断开连接)"

public class Main {
private static final short VID = 0x054c;
private static final short PID = 0x0268;

Context context;

public Main() {
    context = new Context();
    int result = LibUsb.init(context);

    if (result != LibUsb.SUCCESS) {
        throw new LibUsbException("Unable to initialize libusb.", result);
    }

    ByteBuffer data = ByteBuffer.allocate(49);
    DeviceHandle ds3Handle = getDeviceHandle(findDevice(VID, PID));
    LibUsb.controlTransfer(ds3Handle, (byte)0xa1, (byte)0x1, (short)0x101, (short)0, data, 1000L);

    LibUsb.exit(context);
}

private Device findDevice(int vid, int pid) {
    Device UsbDevice = …
Run Code Online (Sandbox Code Playgroud)

java usb libusb usb4java

3
推荐指数
1
解决办法
2860
查看次数

是否可以使用Archer T4UH USB无线适配器的Linux驱动程序?

TP-Link无线适配器仅提供Windows驱动程序.TP-Link没有提供驱动程序,也没有表明他们打算这样做.

有第三方驱动程序吗?

linux usb driver wifi

3
推荐指数
1
解决办法
7401
查看次数

在Linux中基于USB VID:PID获取设备路径

如果我插入设备,然后说,/dev/ttyUSB0并且我想0根据其VID:PID(使用找到lsusb)获取该号码,那么在C ++ Linux中该怎么做?我有这段代码可以找到一个打印机设备,如果有帮助的话:

int printer_open (void)
{    
    char printer_location[] = "/dev/usb/lpX";
    struct stat buf;

    // continuously try all numbers until stat returns true for the connected printer
    for (int i = 0; i < 10; i++)
    {
        printer_location[11] = '0' + i;
        if (!stat (printer_location, &buf))
            break;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ linux usb

3
推荐指数
1
解决办法
3134
查看次数