阅读:1336回复:5
什么时候用Write?什么时候用DeviceControl?
我看了一下ds提供的ezusb的例子,在它的函数里没有Write,而涉及到向下传输数据的,它都是通过DeviceControl这个函数做的。
我现在用ds的Write函数,发现如果仅执行BuildVendorRequest、SubmitUrb这2个函数(ezusb这个例子中的DeviceControl里面,是这样简单的执行的),有问题,不知道执行到哪里,就陷入了死循环。 我想知道,ds在封装Write、DeviceControl这两个函数的时候是不是做的一样的工作?既然向下传输可以通过DeviceControl实现,还要Write有什么用?什么情况下用Write?什么情况下用DeviceControl? 谢谢! |
|
沙发#
发布于:2004-03-12 21:08
一般来讲,Read, Write完成设备的主要工作。对于绝大多数流设备,这两个函数是最常用的。而且对于应用程序而言,这两个接口是标准的。而DeviceIOControl则更适合于作辅助性或产品特有的工作。甚至有时候可能是不对一般用户开放的接口。一般来讲,很多产品在符合了标准类接口的同时,还会提供一些自己的接口,可以使用IoControl。例如:串口的收发使用Read,Write.而设置波特率则使用IoControl。
|
|
|
板凳#
发布于:2004-03-16 09:26
还请教一下你:
我现在用DeviceControl进行控制传输,在调试固件程序的时候,当走到 if (SETUPDAT[1] == VR_LED) { ... } 这里的时候,就走进不去了,我看了SETUPDAT,的确是我在DeviceControl中发的控制,可不明白为什么走到这就进不去呢?程序好像不知道在哪进入了死循环,zmwk,你遇到过这种情况吗? |
|
地板#
发布于:2004-03-16 17:48
写,读方向要对牢
|
|
|
地下室#
发布于:2004-03-17 10:02
一个是如楼上所说,通信方向的问题。
另一个要看你的固件代码是否有问题:包括-中断是否正常清掉,是否有死循环代码,是否内存溢出等。 |
|
|
5楼#
发布于:2004-03-22 09:06
呵呵,谢谢二位.
这个问题我解决了,原来我在固件程序里加了中断,但又没有触发它,结果就一直进不去,其实我要实现的东西根本不需要中断,去掉一切ok! |
|