阅读:4102回复:1
VC 应用程序读写slave fifo 问题疑惑
我使用CYAPI.LIB开发VC应用通用程序,经过查看CYAPI.LIB使用手册,读写数据方法如下
同步读取数据方法XferData(); 异步读取数据方法BeginDataXfer()/WaitForXfer()/FinishDataXfer 我测试bulkloop固件的时候用BeginDataXfer()/WaitForXfer()/FinishDataXfer已经正确 不过我稍微改动程序去改动程序,用来读取在slave fifo 模式下 FPGA(master0\发送来的数据,可是总是接收到一个数据,实际上发送的数据是递增的(在控制台测试时候接收到的数据是正确的)请问是怎么回事。部分代码如下,谢谢站长。 LONG outlen,inlen,len; outlen = inlen = len = xfer;// Use temp var because XferData can change the value of len //异步读取数据方法 BeginDataXfer()/WaitForXfer()/FinishDataXfer();. //同步读取数据方法XferData(); //*outContext 发送的数据 UCHAR *outContext = dlg->OutEndpt->BeginDataXfer(data,outlen,&outOvLap); // *inContext 接收的数据 UCHAR *inContext = dlg->InEndpt->BeginDataXfer(inData,inlen,&inOvLap); dlg->OutEndpt->WaitForXfer(&outOvLap,200); //2000是 dlg->InEndpt->WaitForXfer(&inOvLap,200); 文字 success = dlg->OutEndpt->FinishDataXfer(data, outlen, &outOvLap,outContext); success = dlg->InEndpt->FinishDataXfer(inData,inlen, &inOvLap,inContext); CString strTemp; strTemp.Format("%x",inData); dlg->m_RXData.SetWindowText("RX:"+strTemp); m_RXData相关联编辑框只显示一个数据,怎么回事?我看了一些日子,有一些半成品的代码,希望和大家一起学习,我的QQ:402955982 [p:2] |
|
|
沙发#
发布于:2010-05-21 10:03
这个问题不知道你解决没有,我也碰到了这个问题,经过反复调试终于想通了
问题是这样的,inData是你自己定义的接收缓冲区指针,每次执行BeginDataXfer()、WaitForXfer()、FinishDataXfer这个三个函数之后其实是把inData缓冲区填满,然后inData指针又回到接收缓冲区首地址,所以dlg->m_RXData.SetWindowText("RX:"+strTemp); 每次都是显示相同的内容 |
|