asslittle
驱动牛犊
驱动牛犊
  • 注册日期2003-12-18
  • 最后登录2004-09-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1336回复:5

什么时候用Write?什么时候用DeviceControl?

楼主#
更多 发布于:2004-03-12 16:30
我看了一下ds提供的ezusb的例子,在它的函数里没有Write,而涉及到向下传输数据的,它都是通过DeviceControl这个函数做的。

我现在用ds的Write函数,发现如果仅执行BuildVendorRequest、SubmitUrb这2个函数(ezusb这个例子中的DeviceControl里面,是这样简单的执行的),有问题,不知道执行到哪里,就陷入了死循环。

我想知道,ds在封装Write、DeviceControl这两个函数的时候是不是做的一样的工作?既然向下传输可以通过DeviceControl实现,还要Write有什么用?什么情况下用Write?什么情况下用DeviceControl?

谢谢!
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-12 21:08
一般来讲,Read, Write完成设备的主要工作。对于绝大多数流设备,这两个函数是最常用的。而且对于应用程序而言,这两个接口是标准的。而DeviceIOControl则更适合于作辅助性或产品特有的工作。甚至有时候可能是不对一般用户开放的接口。一般来讲,很多产品在符合了标准类接口的同时,还会提供一些自己的接口,可以使用IoControl。例如:串口的收发使用Read,Write.而设置波特率则使用IoControl。
A strong man can save himself. A great man can save another.
asslittle
驱动牛犊
驱动牛犊
  • 注册日期2003-12-18
  • 最后登录2004-09-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-16 09:26
还请教一下你:

我现在用DeviceControl进行控制传输,在调试固件程序的时候,当走到
if (SETUPDAT[1] == VR_LED)
{
...
}
这里的时候,就走进不去了,我看了SETUPDAT,的确是我在DeviceControl中发的控制,可不明白为什么走到这就进不去呢?程序好像不知道在哪进入了死循环,zmwk,你遇到过这种情况吗?
yyouking
驱动老牛
驱动老牛
  • 注册日期2003-12-18
  • 最后登录2020-04-28
  • 粉丝0
  • 关注0
  • 积分967分
  • 威望114点
  • 贡献值1点
  • 好评度78点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-03-16 17:48
写,读方向要对牢
提供: AT89S52+D12开发套件 W78E54+Sl811HST单片机读写U盘套件 PL2303HX-串口转USB 网站http://www.devking.cn 联系 sl811hs@yahoo.com.cn QQ:14441292
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-17 10:02
一个是如楼上所说,通信方向的问题。
另一个要看你的固件代码是否有问题:包括-中断是否正常清掉,是否有死循环代码,是否内存溢出等。
A strong man can save himself. A great man can save another.
asslittle
驱动牛犊
驱动牛犊
  • 注册日期2003-12-18
  • 最后登录2004-09-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-03-22 09:06
呵呵,谢谢二位.

这个问题我解决了,原来我在固件程序里加了中断,但又没有触发它,结果就一直进不去,其实我要实现的东西根本不需要中断,去掉一切ok!

游客

返回顶部