2013-12-15 80 views
1

我使用UsbBulkInPipe从我的USB设备获取数据。当我读取数据的长度是正确的,但值都是零。我如何阅读真实的数据?UsbBulkInPipe不返回实际值

这是我已经试过:

UInt32 bytesRead = 0; 
UsbBulkInPipe bulkIn = device.DefaultInterface.BulkInPipes[0]; 

var stream = bulkIn.InputStream; 
DataReader reader = new DataReader(stream); 

try 
{ 
    bytesRead = await reader.LoadAsync(bulkIn.EndpointDescriptor.MaxPacketSize); 
} 
catch (Exception exception) 
{ 
    //ShowStatus(exception.Message.ToString()); 
} 
finally 
{ 
    byte[] value = new byte[bytesRead]; 
    reader.ReadBytes(value); 
} 
+0

eurgh,我记得有这个问题。有时间挖掘我的WinUSB代码 –

+0

您的代码看起来像是设计为忽略所有错误。是否有任何异常被抛出?最后的块应该做什么?此外,您不显示实际打印字节值的代码部分,并且该部分可能存在错误。如何制作SSCCE? –

回答

0

目前我使用这种方法:

var t = reader.LoadAsync(buf.MaxPacketSize).AsTask(cancellationTokenSourceBulkIn.Token);  
uint len = t.Result; 

byte[] data = reader.ReadBuffer(len).ToArray(); 
相关问题