我试图编写一些代码来从Win32中使用LibUsbK读取同步管道。我已经成功地将设备初始化为正确的状态以发送和接收同步数据,并且我可以看到通过我的硬件USB分析器中的USB发送的数据,但是我收到的缓冲区始终未填充,即使分析仪显示有数据在发送到PC的数据包中。当使用函数时,LibsUsbK缓冲区未被填充UsbK_IsoReadPipe
我是新来LibUsbK和使用同步传输虽然我不是新来的一般USB但我已经对这个被真正地奋斗。
我使用的是从设备读取的代码是这样的......
UsbK_SelectInterface(usbHandle,1,0);
UsbK_SetAltInterface(usbHandle,1,0,1);
IsoK_Init(&isoCtx, ISO_PACKETS_PER_XFER, 0);
IsoK_SetPackets(isoCtx, ISO_PACKET_SIZE); // Size of each individual packet
OvlK_Init(&ovlPool, usbHandle, 4, 0);
OvlK_ResetPipe(usbHandle, 0x83);
OclK_Acquire(&ovlkHandle, ovlPool);
UsbK_IsoReadPipe(usbHandle, 0x83, inBuffer, sizeof(inBuffer), ovlkHandle, isoCtx);
while(!finished)
{
if(OvlK_IsComplete(ovlkHandle)
{
fwrite(inBuffer, sizeof(inBuffer), 1, outFile);
memset(inBuffer,0xcc,sizeof(inBuffer));
OvlK_ReUse(ovlkHandle);
UsbK_IsoReadPipe(usbHandle, 0x83, inBuffer, sizeof(inBuffer), ovlkHandle, isoCtx);
{
}
如果我把一个断点在FWRITE线,则inBuffer总是充满的0xCC的 - 即不已被iso读取。
我从UsbK/OvlK函数调用检查所有的错误返回值,他们都是因为他们应该的。我检查过我的缓冲区足够大以接收数据。
我使用非常相似的代码写入到端点0x02上的ISO输出管道,并且工作完美,上面的代码和我的写代码之间的唯一区别在于fwrite/memset命令被替换为对在调用UsbK_IsoWritePipe函数之前填充我的outBuffer的“fillbuffer”函数。
我试着找过任何的例子我能找到的样品中,也在线,但努力去理解/让他们与我的特定设备正常工作。
任何建议或帮助非常感谢。
“是这样的”是一个问题。你想在这里得到实际的代码或代码的帮助吗? –