本帖最后由 arthur0561 于 2009-10-28 17:49 编辑
今年3月份搞了一阵USB后,相隔7个月又有这方面的事情做。于是接着开发USB,这次依然是试验开发,离产品化还有相当大的距离,主要驱动这方面很麻烦,听老前辈们说驱动很难搞。这次USB开发一个重要的用途是传输图片数据,70K左右,按照之前写的程序,速度只能到33k byte/s,远远达不到要求,经多方求助及亲身试验,找到一个能到达300k以上的做法。整个上位机,驱动,设备的程序实现我都在之前的帖子中写到了。
我的设备packagesize (包最大长度)为64字节。于是我在用driverstdio3.2生成驱动时进行endpoint设置时设置了最大传输尺寸为64.恰恰是这个限制了速度。
其实是没关系的,我们只要在他最后生成的驱动程序工程文件找到如下两句
m_Endpoint1IN.Initialize(m_Lower, 0x81, 64);
m_Endpoint3OUT.Initialize(m_Lower, 0x3, 64);
将其改成512,然后编译重新安装驱动,注意要把原始的驱动文件彻底删除后重新安装,他们在C:\WINDOWS\inf跟C:\WINDOWS\system32\drivers下,找到相应的文件删除即可。
驱动安装好后还要在应用程序中改一个地方,那就是我们读写函数,
ReadFile(hRead,(UCHAR *)(radomp),512,&nRead,NULL);
好了,你的速度可以上一个档次了。 |