我試圖編寫一些代碼來從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」函數。
我試着找過任何的例子我能找到的樣品中,也在線,但努力去理解/讓他們與我的特定設備正常工作。
任何建議或幫助非常感謝。
「是這樣的」是一個問題。你想在這裏得到實際的代碼或代碼的幫助嗎? –