阅读:3417回复:4
bulk传输 上位机读取数据问题
请教一下:
我用CyAPI编写读取来自Cy7C68013A bulk传输数据的程序。固件里面选用EP6 IN 512字节 双缓冲,能够用CyConsole EZ-USB读取到数据。自己编写的程序能够读到IDVendors,IDProduct,但是一旦去读端点的信息程序,调试就出现“Unhandled exception...”,弄了很久了一直搞不明白。读取程序如下,望指点: void CSPI_USBDlg::OnButtonTransport() { BOOL okin; OVERLAPPED inOvLap; PUCHAR inData = new UCHAR[256]; ZeroMemory(inData,1024); //数据缓冲区 inOvLap.hEvent = CreateEvent(NULL, false, false, "CYUSB_IN"); int devices = USBDevice->DeviceCount(); //USBDevice是已经创建的一个实例,devices 读出来的数值是 1 CCyUSBEndPoint *ep6 = USBDevice->EndPoints[0]; // 程序一执行到这里就死了?????????????????????????????????????????? USBDevice->BulkInEndPt->TimeOut = 10; LONG inlen=512; //异步读数据 UCHAR *inContext = USBDevice->BulkInEndPt->BeginDataXfer(inData,inlen,&inOvLap); USBDevice->BulkInEndPt->WaitForXfer(&inOvLap,200); okin = USBDevice->BulkInEndPt->FinishDataXfer(inData,inlen, &inOvLap,inContext); if (okin) //如果读取成功,则保存数据 { mFile.SeekToEnd(); mFile.Write(inData,inlen); } CloseHandle(inOvLap.hEvent); delete [] inData; } |
|
沙发#
发布于:2009-03-12 15:25
68013A的端点有七个:0,1(两个),2,4,6,8,控制端点0的数据结构和其他端点是不一样的。
USBDevice->EndPoints[0]默认是控制端点0的地址,不能赋给普通端点的指针。如果楼主已经在固件中把端点1,2,4,8设置为非激活状态,那么把0改成1,应该就不会报错了。 CCyUSBEndPoint *ep6 = USBDevice->EndPoints[1]; 不过下面的代码好像和这句没什么关系,呵呵! |
|
板凳#
发布于:2009-03-12 15:28
如果你英文还可以,建议多看看Cypress\USB DevStudio\CyAPI目录下面的CyAPI.chm文件
|
|
地板#
发布于:2009-04-17 16:45
你好,我现在也在做这块内容,能交流一下么?
我的qq是499194127.期待你的回应。 |
|
地下室#
发布于:2012-06-18 15:24
你好,请问问题解决没有呀,我也遇到相似的问题
|
|