版块
论坛
喜欢
话题
应用
搜索
登录
注册
dyzix的个人空间
访问量
0
新鲜事
帖子
资料
http://bbs3.driverdevelop.com/index.php?m=space&uid=180417
【分享】USB通信,PC端通信编程及常见问题解决方法
请教:68013USB通信,PC端读取数据时程序反应慢的解决方法如题,DSP通过USB(68013)与计算机通信,固件、驱动、通信程序均能正常工作。采用中断传输,在PC端使用一个线程一直读USB数据。监测到的情况是,向USB发送一个读取命令时,程序就等待读取完成,程序假死,造成程...
全文
回复
(
14
)
2008-07-22 13:02
来自版块 -
USB驱动开发
◆
◆
表情
告诉我的粉丝
提 交
jack_qi
:
dyzix 在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)
回复
zhang3
:
ezusb.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)
回复
1
2
下一页 »
dyzix
加关注
写私信
0
关注
1
粉丝
12
帖子
返回顶部