代码之家  ›  专栏  ›  技术社区  ›  Josh Kelley

编程USB传输电缆/与USB设备驱动程序对话

  •  6
  • Josh Kelley  · 技术社区  · 16 年前

    如何以编程方式访问USB传输电缆(如Belkin的 Easy Transfer Cable )从窗口?

    我很熟悉 libusb-win32 但据我所知,在新设备和Windows Vista上使用它似乎不太可靠。

    我知道 Windows Easy Transfer 可以做到这一点。如何编写与Windows轻松传送相同的代码?

    如果没有关于如何做到这一点的罐头文件,我愿意做一些挖掘,但我不知道从哪里开始。如何观看Windows轻松传送正在执行的操作以了解其执行方式?我看到Windows甚至在设备管理器“传输电缆设备”中为传输电缆提供了自己的类别。如何与这些驱动程序之一进行低级通信?

    3 回复  |  直到 9 年前
        1
  •  5
  •   Josh Kelley    16 年前

    我发现微软现在提供 WinUSB 用于与USB设备进行简单的用户模式通信。(必须首先为设备安装一个winusb设备驱动程序;这有点类似于libusb-win32设备驱动程序。)winusb在xp(sp2及更高版本)和vista上工作。

    轻松传送电缆使用winusb作为其设备驱动程序,因此我可以按照微软的示例代码与它通信。 WinUSB howto 文件。

        2
  •  2
  •   Byron Whitlock    16 年前

    您需要使用低级别的win32 api来完成此操作。 微软在访问人机界面设备方面有一些很好的例子。传输电缆不像鼠标或键盘那样明确地是一个HID,但它符合HID规范。

    例如,要获取您要调用的USB设备的名称

    HidD_GetProductString(...)
    

    http://msdn.microsoft.com/en-us/library/ms790920.aspx

    还有很多,你一定要看看适用于从2000到Vista所有版本的Windows的示例C应用程序。

    http://msdn.microsoft.com/en-us/library/dd163258.aspx

    祝你好运!

        3
  •  0
  •   KaiFa Liu    11 年前

    您需要有一个USB数据传输电缆(也称为USB数据链路电缆),其中 支持API或SDK,然后使用以下代码:

    void CU2uDlg::OnOK() 
    {
    BYTE        buf[65530];
    LPU2URET    pU2uRet;
    BOOL        bRet;
    int         ret;
    CString     msgstr;
    
    ret = u2u_open();
    if (ret == -1){
        AfxMessageBox("Open U2U device Success.");
    }else{
        msgstr.Format("Open U2U device fail,return:%d", ret);
        AfxMessageBox(msgstr);
        return;
    }
    
    //send data
    bRet = u2u_SendData(buf, 65530, ret);
    if(!bRet)
    {
        msgstr.Format("Send data error,return:%d", ret);
        AfxMessageBox(msgstr);
        return;
    }
    
    //receive data
    while (1){
        bRet = u2u_RecvData(recvData, dataLen, ret);
        if( !bRet )
        {
            msgstr.Format("Receive data error,return:%d", ret);
            AfxMessageBox(msgstr);
            u2u_close();
            return;
        }else{
            break;
        }
    }
    u2u_close();
    
    
    }
    

    见: Reference1 , Reference2