阅读:1610回复:10
吐血给分!!!关于使用EasyD12.dll 访问 D12 USB的速度问题
开发环境WINXP + VC6.0
代码: //测试连续读取端点2数据100次需要多少时间 void CUsbD12Test1Dlg::OnButton1() { //定义缓冲区变量 unsigned char databuff[64]; //取读取端点2前的时间 CTime time=CTime::GetCurrentTime(); m_1=time.Format(\"20%y-%m-%d %H:%M:%S\"); UpdateData(false); //读取端点2数据到缓冲区 //连续读100次 for (int i=0;i<100;i++) DWORD st=ReadPort2(databuff,64); //取读取100次后的时间 time=CTime::GetCurrentTime(); m_2=time.Format(\"20%y-%m-%d %H:%M:%S\"); UpdateData(false); } 测试结果: 读100次 需要7秒钟 结论: 由于读取端点2每次读取64个字节,所以平均速率为: 64Byte * 100 / 7s = 914 (Byte/s) 这样的速度实在太慢了,1KByte/s都达不到. 这是为什么?问题在哪里? 是使用EasyD12.dll访问D12 USB的造成的吗? 还是有其他原因!!!! 各位大哥救救我!!!! 我折腾了很久了总是没有答案. 感谢!感谢!感谢! |
|
沙发#
发布于:2003-06-24 12:55
你把64扩大100倍再试一下,也就是说一次读6.4k,看看是否有起色。最大值一般为65535,只要不超过这个值你都可以试。另外,你计算时间的方式挺特别,我喜欢用下面的方法计算时间,我想你的时间不是太精确。你可以试试用timeGetTime()或者GetTickCount(),使用方法:
DWORD Time, Time0, Time1; Time0 = timeGetTime();//开始计算时间 . . . . Time1 = timeGetTime();//计时结束 Time = Time1 - Time0;//耗费的总时间。 两个函数的返回的都是毫秒,这两个函数为1.1计算时间是比较好的。 |
|
板凳#
发布于:2003-06-24 16:26
谢谢jinghuiren.
我将缓冲区改为64000 unsigned char databuff[64000]; ReadPort2(databuff,64000); 但是执行时有错误提示: 端口打开失败! 我查看了databuff[64000]里的数据,databuff只有前面的1024个 得到端点2的数据. 也就是说 unsigned char databuff[1024]; ReadPort2(databuff,1024); 就可以正确了. 大于1024就出错. 这样的速率也时远远不够的,只有1K左右. 请问这是怎么回事呢? 我在98下和XP下得到的都是这个结果. 我用的是D12 ,不知道是什么地方会影响到速率这么低? |
|
地板#
发布于:2003-06-24 17:00
我找到答案了。
问题不在我这边,在c51那边。 谢谢。分都给你。 |
|
地下室#
发布于:2003-06-24 17:02
你有应用程序的源代码吗?
有的话可以找到相应的位置把这个限制去掉就行了,你可以纪录一下瞬时速度是多少,也就是没发送64000你就记录一下,也许会快一些,其它的我就不太明白了,我没做过d12的。 还有就是你用的是什么传输方式,是bulk吗?如果是bulk的话不应该这么慢的,他们最低的还几十k呢,你可以再等一下让他们来回答,而且关于这个讨论的贴子前几天还有,你往前翻几页看看。 |
|
5楼#
发布于:2003-06-24 17:04
呵呵,问题解决了就好 :D
|
|
6楼#
发布于:2003-06-24 17:05
我怎么把分给你呢?
我第一次问问题. |
|
7楼#
发布于:2003-06-24 20:29
你的第一贴下面那排按钮里有一个给分键,单击它!!! :D
|
|
8楼#
发布于:2003-06-24 21:03
ahzhq,请问你使用的easyd12.dll动态连接库是随开发板购买的吗?
如果我用这个库往自己做的设备上传数,在win2000还要驱动吗? |
|
9楼#
发布于:2003-06-25 08:11
好的.马上给分!谢谢
是一起购买的,要驱动! |
|
10楼#
发布于:2003-06-25 09:34
easyd12.dll 提供四个函数的接口随开发板一起提供,在WIN98,2K 下有*.sys驱动提供,但XP下要自己去找!当然也可以自己用VC DDK 生成DLL,比较麻烦!
|
|