请教:68013USB通信,PC端读取数据时程序反应慢的解决方法如题,DSP通过USB(68013)与计算机通信,固件、驱动、通信程序均能正常工作。采用中断传输,在PC端使用一个线程一直读USB数据。监测到的情况是,向USB发送一个读取命令时,程序就等待读取完成,程序假死,造成程...
全文
回复(14) 2008-07-22 13:02 来自版块 - USB驱动开发
表情
jack_qidyzix 在5楼里的程序代码只是读USB设备数据的,没有启动线程方面的问题,所说的“创建一个线程,死循环读数据放到Buffer中,主循环中处理这些数据。读的时候,如果我的MCU不发数据的话,就等待读取Pending。”想请教下软件部分怎么实现?在这读数据函数里怎么加多线程来处理...(2008-08-06 11:52)
jack_qi引用第9楼summerfruit 于2008-07-22 17:40:39发表的 "应用程序里面设置线程就可以了。这个线程就是读数据,读不到就一直pending都可以啊。" 我也这么想的,不过在软件里怎么实现?(2008-08-06 11:45)
hoguowi不知道楼主的如何解决PC端读取数据时程序反应慢(当USB设备没发数据的时候,PC又在读会卡在读函数那里)这个问题我一直没有很好的解决,如果解决了这个问题,弄USB又是一个突破,我也愿意把我之前弄USB一点经验共享出来!之前已经写了 《USB驱动的制作过程与体会》但现在觉得还有很多...(2008-08-02 09:52)
zhang3ezusb.sys驱动不支持异步方式,在应用层只能用多线程方式。 如果上行数据够快,还应该开多个线程同Pending,这样才不会丢数据。(2008-08-01 11:31)
dyzix关键是,新创建的线程一挂起,整个程序都无响应……(2008-07-23 08:30)
summerfruit按照你的想法,其实我认为不需要在驱动里面设置线程,只要在应用程序里面设置线程就可以了。这个线程就是读数据,读不到就一直pending都可以啊。(2008-07-22 17:40)
dyzix引用第7楼zhoujiamurong于2008-07-22 15:39发表的 : USB驱动中要实现异步读取就有点麻烦了,USB驱动中开两个线程一读一写,没有状况发生就在KeWaitforSingleObject(或Muti),读取是设置较短的超时....... 谢谢再次指...(2008-07-22 15:54)
zhoujiamurong创建一个线程,死循环读数据放到Buffer中 ================ 我的理解,不知道对否: 如果原有驱动没有实现异步,那 .... USB驱动中要实现异步读取就有点麻烦了,USB驱动中开两个线程一读一写,没有状况发生就在KeWaitforSingleObject(或M...(2008-07-22 15:39)
dyzix引用第3楼summerfruit于2008-07-22 14:38发表的 : 你可以在驱动中自建一个thread,在这个thread中发送读URB,然后等待返回,读到数据放入buffer里面,读不到这个包含URB的IRP会pending的。主程序继续运行。 多谢指点。 正像你...(2008-07-22 15:04)
dyzix引用第2楼zhoujiamurong于2008-07-22 14:22发表的 : 这个使用线程是否是后台的工作线程,还是直接用的死循环在用户线程中跑的? 如果是后台线程还是假死,看读取的时候是否是停滞在ReadFile等待返回? ....... 多谢楼上两位指点!我使用的是...(2008-07-22 14:54)

返回顶部