如何以编程方式从Windows访问USB传输线(如贝尔金的Easy Transfer Cable)?
我对libusb-win32很熟悉,但据我所知,在新设备和Windows Vista上使用它似乎有些可疑。
我知道Windows Easy Transfer可以做到这点。如何编写与Windows轻松传送功能相同的代码?
如果没有关于如何做到这一点的原封不动的文档,我愿意做一些挖掘,但我不知道从哪里开始。如何查看Windows轻松传送正在执行的操作以了解它是如何执行的?我看到Windows甚至在设备管理器中给传输电缆分配了自己的类别,“传输电缆设备”。我如何与这些驱动程序中的一个进行低级通信?
发布于 2009-03-10 20:51:15
我发现微软现在提供了WinUSB,用于与USB设备进行简单的用户模式通信。(必须首先为设备安装WinUSB设备驱动程序;这有点类似于libusb-win32设备驱动程序。)WinUSB可以在XP (SP2及更高版本)和Vista上运行。
Easy Transfer Cable使用WinUSB作为其设备驱动程序,因此我可以通过遵循微软WinUSB howto文档中的示例代码与其通信。
发布于 2009-03-04 00:35:17
您将需要使用低级win32 API来完成此操作。微软在访问人机接口设备方面有一些很好的例子。传输线不像鼠标或键盘那样明确是HID,但它符合HID规范。
例如,要获取USB设备的名称,您可以调用
HidD_GetProductString(...)http://msdn.microsoft.com/en-us/library/ms790920.aspx
还有更多,你绝对应该看看示例c应用程序,它适用于从2000到Vista的所有版本的windows。
http://msdn.microsoft.com/en-us/library/dd163258.aspx
祝好运!
发布于 2013-11-11 15:23:52
您需要具有支持API或SDK的USB数据传输电缆(也称为USB数据链路电缆),然后使用以下代码:
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
https://stackoverflow.com/questions/608607
复制相似问题