阅读:3162回复:32
D12急问:为什么进不去IN中断。急急,(给分)
我向端点2IN缓冲区,写10个数,为什么进不去IN中断。
unsigned char ExBuf[10]={'1','2','3','4','5','6','7','8','9','0'}; D12_WriteEndpoint(5,10,ExBuf); 在此语句之后,是点亮一个指示灯,灯亮。可以确定,上语句确实执行了。 究竟为什么不进入IN中断呢,是不是主机没有把数取走,为什么呢?急急急! |
|
沙发#
发布于:2004-10-12 21:35
大侠们回答一下我的问题呀,下面这个结果对不对
对于端点1,在固件里向端点1写数,打开d12test才可以进入in中断,在固件里向端点2写数,需要选中扫描方式才可以进入in中断,这结果对不对呀。 |
|
板凳#
发布于:2004-10-11 10:49
wly76:你说的在d12test中加入文件操作,把输入输出数据写入文件分析,这个我不会。
你有没有qq,我有很多问题想和你聊聊。 |
|
地板#
发布于:2004-10-11 10:34
厂商处理请求确实是在main()中轮训的。但我一直都不太明白,厂商处理请求有什么作用。
现在我手边有两个d12test,同样的缓冲区,为什么他们测试出的速率是不相同的呢? 现在IN中断是都可以进去的,对于端点1,向端点1写数就可以进入in中断,向端点2写数,需要选中扫描方式才可以进入in中断,这结果应该是正确的吧? |
|
地下室#
发布于:2004-10-11 08:48
zlg端点2的厂商请求写处理是在main()中轮巡的。 :D :P
|
|
5楼#
发布于:2004-10-11 08:45
d1,d2就是测试端点1的,循环读写没有报错就说明端点2传输是成功的,建议在d12test中加入文件操作,把输入输出数据写入文件分析
就一切明了。 |
|
6楼#
发布于:2004-10-10 16:14
各位大侠好:
to wly76:我的固件 基本上是跟着周立功的走的, 端点2的处理是在中断里完成的。正确的循环读写应该怎样的呢? 每次均为成功,失败为零吗? d12test只能测试端点2,想测试端点1,应该怎么办,是不是要自己写一个应用程序? |
|
7楼#
发布于: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令牌,那你的数据还是上不去. |
|
|
8楼#
发布于:2004-10-10 10:50
D12TEST的扫描仪方式读,打印机方式写,循环读写交替重复上面两个步骤,要求的速度比单独一个工作方式要高,建议你把端口2的处理在中断
里直接处理。十一期间我仔细分析了D12TEST的源代码,我的理解是只要 单片机的处理速度够的话,他们的配合不会有问题,虽然仍有一些不尽人意的地方。 |
|
9楼#
发布于: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的扫描和打印方式都可以用了,循环方式总是成功为零,全部都失败,什么原因呢? |
|
10楼#
发布于:2004-10-09 12:32
搞好了吗?我知道你的问题出在什么地方了,ZLGD12TEST用的同步方式与驱动通信,有时会造成堵赛,不过没有关系,你用的单片机ZLG
的C程序,在MAIN()中处理SETUP包,如果MAIN()中你加入了很多你的 处理程序,会影响到对SETUP包处理的响应速度,导致上为机要求端 点得不到回应,建议,MAIN()中轻装,不要主循环中加延时,D12TEST和ZLG驱动可以用,没有问题,以上结论,我已经过验证,没有问题。 |
|
11楼#
发布于:2004-10-02 10:19
不知,lhaih采用的是那种传输方式?是中断传输方式吗?为什么还存在:HOST发送IN令牌,取走后buff里的数据产生中断呢?这个中断做啥用的?
|
|
|
12楼#
发布于: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: |
|
13楼#
发布于:2004-09-30 15:30
metalwing:
如果你仅收到IN令牌,而没有收 到相应端点的IN令牌的话,数据也是发不出去的. 这句话是什么意思? |
|
14楼#
发布于:2004-09-29 09:46
他的驱动和测试程序是不是仅仅是针对他做的板子,我的板子,用不了他的D12test测试程序了。
是的,但也不是说你用不了.只要你的固件跟着他的固件走就可以了. 也就是说,你的设备的接口,使用端点及类型,设备描述符==要和他的 一样就可以了. |
|
|
15楼#
发布于:2004-09-29 00:30
兄弟,别急!
有些问题要从根上解决。 usb是主从通信方式,且是一对多的。 所以,usb host 与 slave并不存在真正的中断方式,只有查询方式。所谓的中断方式只是总线驱动(由操作系统提供)帮你查询后再通知你的驱动和应用。 任何通信都得有一个发起方。对于Bulk方式,发起方只能是应用程序。也就是说,应用程序调用你的驱动,你的驱动调用总线驱动,token IN才会发出。否则怎么说Bulk传数比较节约带宽呢?因为它平时根本不工作。 另外一个就是驱动中读处理。标准驱动(或者说简化版)不提供超时处理,当要求读16字节时,如果固件只给10个字节,它会一直死在那里,如果加了超时,则可以返回错误代码,但这些完全由Driver作者指定。所以,如果driver不是你写的,或者你无法与作者沟通,那你会比较麻烦的。 |
|
|
16楼#
发布于:2004-09-25 23:30
真是焦头烂额了,一个星期都没有进展,他的驱动和测试程序是不是仅仅是针对他做的板子,我的板子,用不了他的D12test测试程序了。
按下Start 提示,“Requesting data transfer on PIPE failed!Aborted”。 这是什么意思呢。点D4 D3 D2 D1,goodlink闪一下, 唉,郁闷死了,什么才能结束. |
|
17楼#
发布于:2004-09-25 16:51
你用的测试程序也应当是ZLG的,而且要对应起来.据我所知,ZLG的驱
动好象和他的测试程序是对应的. [编辑 - 9/25/04 by metalwing] |
|
|
18楼#
发布于:2004-09-25 16:26
那怎么办,我用的驱动是周立功给的,有一次偶发的贴子,曾经问到周立功给的驱动我能不能直接用,回答说是可以,而且很好用。不知道里面怎么写的,而且我也没有做过驱动,难道非要自己写吗?
|
|
19楼#
发布于:2004-09-25 09:00
让HOST主动给你发IN令牌是在驱动或应用程序里做的,固件里没有.
|
|
|
上一页
下一页