gooogleman
驱动牛犊
驱动牛犊
  • 注册日期2007-03-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望179点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
阅读:4102回复:1

VC 应用程序读写slave fifo 问题疑惑

楼主#
更多 发布于:2007-04-24 10:07
我使用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]
WINCEqq 群39063007
yefei001
驱动牛犊
驱动牛犊
  • 注册日期2010-03-23
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望61点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-05-21 10:03
这个问题不知道你解决没有,我也碰到了这个问题,经过反复调试终于想通了

问题是这样的,inData是你自己定义的接收缓冲区指针,每次执行BeginDataXfer()、WaitForXfer()、FinishDataXfer这个三个函数之后其实是把inData缓冲区填满,然后inData指针又回到接收缓冲区首地址,所以dlg->m_RXData.SetWindowText("RX:"+strTemp); 每次都是显示相同的内容
游客

返回顶部