wei_ziyong
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2010-04-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望16点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
阅读:1033回复:0

从Cypress 68013usb Endpoint1端口读几个字节数据?

楼主#
更多 发布于:2004-08-24 19:30
我采用ds写了一个简单的从Cypress 68013usb Endpoint1端口读几个字节数据的驱动,采用的是bulk方式,用alternate setting 1初始化了接口后
m_Interface.Initialize(
m_Lower, //KUsbLowerDevice
0, //InterfaceNumber
1, //ConfigurationValue
     1 //Initial Interface Alternate Setting
);
再用第一个端点的管道来读数据
// Initialize Pipe1
     m_Endpoint1IN.Initialize(m_Lower, 0x81, 64);

然后再创建一个URB包,并将他提交给了USB总线驱动,
// Initialize each Pipe1 object
 m_Endpoint1IN.Initialize(m_Lower, 0x81, 64);
NTSTATUS status = STATUS_SUCCESS;
KMemory Mem(I.Mdl());
ULONG   dwTotalSize = I.ReadSize(CURRENT);
ULONG   dwMaxSize = m_Endpoint1IN.MaximumTransferSize();
if ( dwTotalSize > dwMaxSize )
{
ASSERT(dwMaxSize);
dwTotalSize = dwMaxSize;
}
ULONG dwBytesRead = 0;

    // Create an URB to do actual Bulk read from Pipe0
    PURB pUrb = m_Endpoint1IN.BuildBulkTransfer(
          Mem,  // Where is data coming from?
dwTotalSize,  // How much data to read?
TRUE,         // direction (TRUE = IN)
NULL      // Link to next URB
);

if ( pUrb != NULL)
{
// Submit the URB to our USB device
pUrb->UrbBulkOrInterruptTransfer.TransferFlags =
       (USBD_TRANSFER_DIRECTION_IN |
                USBD_SHORT_TRANSFER_OK);
status = m_Endpoint1IN.SubmitUrb(pUrb, NULL, NULL);
t << "SubmitUrb" << EOL << EOL;
   delete pUrb;
}
可是驱动程序,提交了URB包后就不在继续往下执行了,好象在等待
68013返回数据,请问大虾们要从68013的1好端口读数据是不是这样的阿?能够指点一下么?要怎么做才能够从端口读到数据?小弟感激不敬!!!!谢谢!
 
游客

返回顶部