打印

求usb接口读写的文档、代码资料

[复制链接]
254|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xxmmi|  楼主 | 2019-2-14 15:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求usb接口读写的文档、代码资料
沙发
kangzj| | 2019-2-14 15:34 | 只看该作者
你可以看看cypress公司EZUSB芯片AN2131QC全部的文档

使用特权

评论回复
板凳
zwll| | 2019-2-14 15:37 | 只看该作者

对,有一个叫做EzMr的主机程序,是一个VC++程序

使用特权

评论回复
地板
chuxh| | 2019-2-14 15:39 | 只看该作者

ddk下有不少例子
思路大体如下:
<1> .   打开设备,获取设备句柄CreateFile( "\\\\.\\ezusb-0 ",.......);
<2> .   设置Interface;获取   PipesInfo;
<3> .   用   Bulk   或其它方式传输数据;
<4> .   关闭设备。

使用特权

评论回复
5
juventus9554| | 2019-2-14 15:41 | 只看该作者

HANDLE   OpenDevice(LPGUID   pGuid,   char   *outNameBuf)
{
HANDLE   hOut   =   INVALID_HANDLE_VALUE;
HDEVINFO   hardwareDeviceInfo;
SP_INTERFACE_DEVICE_DATA   deviceInfoData;

hardwareDeviceInfo   =   SetupDiGetClassDevs   (pGuid,   NULL,   NULL,   (DIGCF_PRESENT   |   DIGCF_INTERFACEDEVICE));

deviceInfoData.cbSize   =   sizeof   (SP_INTERFACE_DEVICE_DATA);

if   (SetupDiEnumDeviceInterfaces   (hardwareDeviceInfo,   0,   pGuid,   0,   &deviceInfoData))
{
hOut   =   OpenOneDevice   (hardwareDeviceInfo,   &deviceInfoData,   outNameBuf);

if   (hOut==INVALID_HANDLE_VALUE)
return   INVALID_HANDLE_VALUE;
}

DWORD   reErr   =   GetLastError(   );

SetupDiDestroyDeviceInfoList   (hardwareDeviceInfo);

return   hOut;
}

HANDLE   OpenOneDevice(HDEVINFO   HardwareDeviceInfo,   PSP_INTERFACE_DEVICE_DATA   DeviceInfoData,   char   *devName)
{
PSP_INTERFACE_DEVICE_DETAIL_DATA   functionClassDeviceData   =   NULL;
ULONG   predictedLength   =   0;
ULONG   requiredLength   =   0;
HANDLE   hOut   =   INVALID_HANDLE_VALUE;

//   allocate   a   function   class   device   data   structure   to   receive   the   goods   about   this   particular   device.
SetupDiGetInterfaceDeviceDetail   (HardwareDeviceInfo,   DeviceInfoData,   NULL,   0,   &requiredLength,   NULL);

predictedLength   =   requiredLength;
//   sizeof   (SP_FNCLASS_DEVICE_DATA)   +   512;

functionClassDeviceData   =   (PSP_INTERFACE_DEVICE_DETAIL_DATA)malloc   (predictedLength);
functionClassDeviceData-> cbSize   =   sizeof   (SP_INTERFACE_DEVICE_DETAIL_DATA);

//   Retrieve   the   information   from   Plug   and   Play.
if   (!SetupDiGetInterfaceDeviceDetail(
HardwareDeviceInfo,
DeviceInfoData,
functionClassDeviceData,
predictedLength,
&requiredLength,
NULL))
{
free(functionClassDeviceData);
return   INVALID_HANDLE_VALUE;
}

strcpy(devName,functionClassDeviceData-> DevicePath);
printf( "Attempting   to   open   %s\n ",   devName);

hOut   =   CreateFile   (functionClassDeviceData-> DevicePath,
GENERIC_READ   |   GENERIC_WRITE,
FILE_SHARE_READ   |   FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);

if   (INVALID_HANDLE_VALUE   ==   hOut)
printf( "FAILED   to   open   %s\n ",   devName);

free(functionClassDeviceData);

return   hOut;
}


HANDLE   hDEV   =   OpenDevice((LPGUID)&GUID_BUS_UMSS,   completeDeviceName);
if   (hDEV==INVALID_HANDLE_VALUE)
return;

DeviceIoControl   (
hDEV,
IOCTL_Vender_VCMD_WRITE,
buf,
31,   //CBW
buf,
13,   //   Data   +   CSW
(LPDWORD)&nBytes,
NULL
);

使用特权

评论回复
6
xxmmi|  楼主 | 2019-2-14 15:44 | 只看该作者
嗯,我了解了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

369

主题

4278

帖子

2

粉丝