breeze_wang
驱动牛犊
驱动牛犊
  • 注册日期2004-05-17
  • 最后登录2006-03-01
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望10点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2004-09-30 15:30
metalwing:
如果你仅收到IN令牌,而没有收
到相应端点的IN令牌的话,数据也是发不出去的.

这句话是什么意思?
wly76
驱动小牛
驱动小牛
  • 注册日期2004-08-12
  • 最后登录2008-04-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2004-09-30 16:30
''Requesting data transfer on PIPE failed!Aborted''

bResult = ReadFile(hFile,
threadParam->pcIoBuffer,
threadParam->uiLength,
&nBytes,
NULL);
time1 = timeGetTime();
if (bResult != TRUE) {
DeviceIoControl(hFile,
IOCTL_D12_RESET_PIPE,
0,
0,
0,
0,
&nBytes,
NULL);
threadParam->bInThread = FALSE;
wsprintf (cc, "Reading ");
strcat( cc, threadParam->pipe_name);
strcat( cc, " failed! Aborted.");
testDlg->MessageBox((LPCSTR)cc, "Test Error");
break;
}
else
{
threadParam->ulCount += nBytes;
threadParam->total_time += (time1-(threadParam->Last_time));
threadParam->Last_time=time1;
if(time1 != time0 && (time1-time0-1)!=0)
{
threadParam->cur_rate = (nBytes*1000)/(time1-time0);
if(threadParam->cur_rate > threadParam->max_rate)
threadParam->max_rate = threadParam->cur_rate;
threadParam->bUpdate = TRUE;
}
}
}while(threadParam->bInThread == TRUE);
PIPE请求没有成功,查一下端点设置,这一段是D12TEST的代码,你自己仔细看一下代码可能对你有帮助。国庆快乐
 :cool:
wanggang508
驱动小牛
驱动小牛
  • 注册日期2003-08-24
  • 最后登录2005-03-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2004-10-02 10:19
不知,lhaih采用的是那种传输方式?是中断传输方式吗?为什么还存在:HOST发送IN令牌,取走后buff里的数据产生中断呢?这个中断做啥用的?

多多交流,少走弯路!!!
wly76
驱动小牛
驱动小牛
  • 注册日期2004-08-12
  • 最后登录2008-04-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2004-10-09 12:32
搞好了吗?我知道你的问题出在什么地方了,ZLGD12TEST用的同步方式与驱动通信,有时会造成堵赛,不过没有关系,你用的单片机ZLG
的C程序,在MAIN()中处理SETUP包,如果MAIN()中你加入了很多你的
处理程序,会影响到对SETUP包处理的响应速度,导致上为机要求端
点得不到回应,建议,MAIN()中轻装,不要主循环中加延时,D12TEST和ZLG驱动可以用,没有问题,以上结论,我已经过验证,没有问题。
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2004-10-09 19:21
wly76,metalwing,wanggang508大家好,好久没见,回家放长假去了,说一下目前的情况。

 1 首先,我想要实现的是,串口和usb的通信,数据从usb的端点1发向串口,端点1用的是中断传输,这个方向不难实现。数据从串口发向usb口,将收到的数据写入端点2,我的本意是写入端点后,等待主机的 in令牌包,取走数据,进入in中断。 但是进不去,看了大家给我的建议,原因是不是这样的:
   我用的是周立功给的驱动和应用程序,它的端点2使用的是批量传输,正如zmwk所说,对于Bulk方式,发起方只能是应用程序,现在我在固件里将数据写入端点2,应用程序根本不知道,所以不发in令牌包。
  如果在固件里,将端点2改为中断传输的话,与驱动程序是不是又不对应了?

 2还有一个问题:现在d12test的扫描和打印方式都可以用了,循环方式总是成功为零,全部都失败,什么原因呢?
wly76
驱动小牛
驱动小牛
  • 注册日期2004-08-12
  • 最后登录2008-04-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2004-10-10 10:50
D12TEST的扫描仪方式读,打印机方式写,循环读写交替重复上面两个步骤,要求的速度比单独一个工作方式要高,建议你把端口2的处理在中断
里直接处理。十一期间我仔细分析了D12TEST的源代码,我的理解是只要
单片机的处理速度够的话,他们的配合不会有问题,虽然仍有一些不尽人意的地方。
metalwing
驱动中牛
驱动中牛
  • 注册日期2003-10-13
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分178分
  • 威望58点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2004-10-10 13:55
大家好,希望大家十一过得愉快.
TO BREEZE_WANG:
 令牌包包含了几个部分:PID,ADDR,ENDPT,DATA...(好象,可能有遗漏
的).其中,PID标识该令牌种类,如:IN令牌,SETUP令牌==;ADDR标识设
备地址,就是给你分配的地址(通过SET ADDRESS命令),在设备ADDRESS
状态阶段之前是默认地址(00H);ENDPT标识令牌接收端点,即要用的管
道.所以,如果你的中断端点(假设为1端点)有数据要上传,HOST给你发
个端点0(CONFIG管道)的IN令牌,那你的数据还是上不去.
新手上路,请多关照.
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
27楼#
发布于:2004-10-10 16:14
各位大侠好:
   to wly76:我的固件 基本上是跟着周立功的走的, 端点2的处理是在中断里完成的。正确的循环读写应该怎样的呢? 每次均为成功,失败为零吗?

    d12test只能测试端点2,想测试端点1,应该怎么办,是不是要自己写一个应用程序?
  
    
wly76
驱动小牛
驱动小牛
  • 注册日期2004-08-12
  • 最后登录2008-04-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
28楼#
发布于:2004-10-11 08:45
d1,d2就是测试端点1的,循环读写没有报错就说明端点2传输是成功的,建议在d12test中加入文件操作,把输入输出数据写入文件分析
就一切明了。
wly76
驱动小牛
驱动小牛
  • 注册日期2004-08-12
  • 最后登录2008-04-24
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
29楼#
发布于:2004-10-11 08:48
zlg端点2的厂商请求写处理是在main()中轮巡的。 :D :P
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
30楼#
发布于:2004-10-11 10:34
    厂商处理请求确实是在main()中轮训的。但我一直都不太明白,厂商处理请求有什么作用。

    现在我手边有两个d12test,同样的缓冲区,为什么他们测试出的速率是不相同的呢?

    现在IN中断是都可以进去的,对于端点1,向端点1写数就可以进入in中断,向端点2写数,需要选中扫描方式才可以进入in中断,这结果应该是正确的吧?
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
31楼#
发布于:2004-10-11 10:49
wly76:你说的在d12test中加入文件操作,把输入输出数据写入文件分析,这个我不会。
你有没有qq,我有很多问题想和你聊聊。
lhaih
驱动小牛
驱动小牛
  • 注册日期2004-04-28
  • 最后登录2007-10-19
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望5点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
32楼#
发布于:2004-10-12 21:35
大侠们回答一下我的问题呀,下面这个结果对不对

对于端点1,在固件里向端点1写数,打开d12test才可以进入in中断,在固件里向端点2写数,需要选中扫描方式才可以进入in中断,这结果对不对呀。
上一页 下一页
游客

返回顶部