kimlon
驱动牛犊
驱动牛犊
  • 注册日期2003-05-21
  • 最后登录2010-03-07
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:3039回复:28

这个贴我一定要搞明白,到底USB是怎么通信的。

楼主#
更多 发布于:2003-09-20 08:31
我现在用到的EZUSB,AN2131芯片。固件不用我写。我主要就是做高级语言方面的。但是十多天了,我都搞不明白要与USB通信的基本步骤,那位高人请指点我一下。

先说一下USB要做的事,就是要跟USB通信之后,将固件下载到USB,然后再从USB发送或接收数据,就是这样,(调用EZUSB.sys)

比如:
1,用createfil(\\\\.\\EZUSB-0,......)取得设备句柄。
2,......
3......
4......

最新喜欢:

abei11abei11
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-09-20 08:38
我感觉好象固件程序你也得参与写,不然usb是不会动的。 你得知道你们自己的请求,然后象标准请求那样加到固件中去,在驱动和应用程序中,用相应的ioctl来和固件程序配合。

我才做了2个月,感觉好象是这样,不对的地方高手一定要指出来。 :D


[编辑 -  9/23/03 by  wdy9927]
kimlon
驱动牛犊
驱动牛犊
  • 注册日期2003-05-21
  • 最后登录2010-03-07
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-09-20 09:01
可惜我只会delphi,要是会C那就好办了,唉。。。。
kimlon
驱动牛犊
驱动牛犊
  • 注册日期2003-05-21
  • 最后登录2010-03-07
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-09-20 09:05
能不能先跟我说说与USB通信在高级语言上具体那些步骤呀?

也好让我有一个思路,到底那些先那些后。要用到那些。谢谢
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2003-09-20 09:22
能不能先跟我说说与USB通信在高级语言上具体那些步骤呀?

也好让我有一个思路,到底那些先那些后。要用到那些。谢谢


这可难为我了,我也才学不久,能说到是能说一点,但我怕说错了误导你呀。

仅供参考:
做usb应该有3个方面,1是固件程序,2是驱动程序,3就是应用程序。你说的高级语言应该包括2和3吧。

驱动程序最好自己看书,或找别人问问在这里根本不能说明白(其实我也不是很懂 哈哈)。 和usb通信主要还是ioctl的问题。最好找个例子看看,再自己做一下。 我用driverstudio,所以说不出什么名堂来。

应用程序我是用vc写的,还是ioctl的问题(要想实现通信,好象就是它的事)。 这里的ioctl一定要和驱动里的相应,他们的ordinal都是从0x800开始的,之前的可不能用。

哈哈,不知道说了什么,能有帮助就看看吧。 有空的时候学学c,很有用的。   :D

kimlon
驱动牛犊
驱动牛犊
  • 注册日期2003-05-21
  • 最后登录2010-03-07
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-09-20 09:27
我现在要做的就是三。
固件不用我写,驱动用CY自带的EZUSB.sys。
所以我就只写应用程序就行了。都这么久了,我还没有半点头绪,唉。。

是不是就是用createfile先取得句柄,然后用deviceIOcontrol来取得XXX,,然后再用readfile或writefile来读写呀。。????
kimlon
驱动牛犊
驱动牛犊
  • 注册日期2003-05-21
  • 最后登录2010-03-07
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-09-20 09:36
谢谢你。
lvwj
驱动老牛
驱动老牛
  • 注册日期2001-08-21
  • 最后登录2021-01-31
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望181点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2003-09-20 11:09
其实步骤你自己已经清楚了,只是没有做而已。

creatfile 取得句柄

deiveioXXX / read/ write 传输数据

closedevice 关闭程序退出

你需要做的是需要和硬件工程师定制一分通行协议,你发什么样的数据给他,他执行什么样的操作
www.bjjcz.com
kimlon
驱动牛犊
驱动牛犊
  • 注册日期2003-05-21
  • 最后登录2010-03-07
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-09-20 12:54
读写数据是不是用deviceIOcontrol这个函数来做的呀???

的确,我这几天看了很多资料,但是还是搞不懂要怎么做才可以。
liuiang
驱动牛犊
驱动牛犊
  • 注册日期2002-11-21
  • 最后登录2007-11-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-09-20 14:01
读写数据是不是用deviceIOcontrol这个函数来做的呀???

的确,我这几天看了很多资料,但是还是搞不懂要怎么做才可以。


这要看驱动怎么实现的,实际上什么调用都可以读写,,
只要相应的驱动支持,,,实际上是app调用writefile,,
readfile,,deviceiocontrol等函数,,到了你驱动这一层时,,
驱动进行相应处理,,完成应用程序的响应,,并且如果
需要向设备发数据,,就发,,应该收数据就收,,对于你是否
应该发,要看你驱动的接口(对于应用程序)想要实现什么功能,,
对于发什么数据,设备该怎么响应,,你应该和固件工程师讨论,,
你们两个定一下应该怎么交换数据完成通信....比如先发同步字,,
然后是命令字,,然后是参数,,最后是校验码什么的......

我没写过usb驱动,,也没写过基于usb的固件程序,,只是这么理解的,,
不知是否正确,,希望你能从回答中得到应该正确的信息...
被上帝遗忘的天使......
liuiang
驱动牛犊
驱动牛犊
  • 注册日期2002-11-21
  • 最后登录2007-11-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-09-20 14:10
我建议你看一下别人提供的驱动的资料,,,,
你的意思无非就是写一个基于ddk的应用程序,,,
那么首先你要看一下io_ctl中各个码子怎么调用,,
需要什么参数,,实现什么功能..先不用考虑驱动,,
把精力放在ddk的应用上....
被上帝遗忘的天使......
kimlon
驱动牛犊
驱动牛犊
  • 注册日期2003-05-21
  • 最后登录2010-03-07
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-09-22 08:19
我要编的只是应用程序,而驱动我是直接调用CY的EZUSB.SYS,但是我看了他带的VB例程,因为不懂VB,所以有些也看不懂。

是不是要对USB进行读写只用到deviceIOcontrol就个就行了,因为他的IO_CTL有读作写的参数。是不是呀??
能不能写一条例子给我,对USB进行读或写的一条函数呀。
jeric
驱动牛犊
驱动牛犊
  • 注册日期2002-10-23
  • 最后登录2003-09-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-09-22 10:19
用WinDriver吧
andy_ee
驱动牛犊
驱动牛犊
  • 注册日期2002-11-15
  • 最后登录2004-05-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-09-23 12:58
呵呵,我们是同路的,虽然我要做驱动,但是也只是在标准例子上改改。互相鼓励鼓励吧:)
其实高级语言的特点就是friendly,建议你好好研究一下driverstudio里的ezusb例子,对于理解驱动的框架很有用。虽然是c++的,但是看懂程序的结构和DeviceControl()等几个重点函数应该是不成问题。
你可以先试着用DeviceIoControl()实现取设备描述符的功能。
我的驱动还在艰难的编造中,不过应用程序部分已经实现了读取u盘的各种描述符的功能(使用ds带的ezusb驱动),如果需要可以发给你参考。

我要编的只是应用程序,而驱动我是直接调用CY的EZUSB.SYS,但是我看了他带的VB例程,因为不懂VB,所以有些也看不懂。

是不是要对USB进行读写只用到deviceIOcontrol就个就行了,因为他的IO_CTL有读作写的参数。是不是呀??
能不能写一条例子给我,对USB进行读或写的一条函数呀。
kimlon
驱动牛犊
驱动牛犊
  • 注册日期2003-05-21
  • 最后登录2010-03-07
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-09-23 13:10
谢谢andy_ee兄,请发一份给我参考参考。kimlon@163.com
Always!978
驱动小牛
驱动小牛
  • 注册日期2002-05-09
  • 最后登录2005-04-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-09-23 15:53
[quote]能不能先跟我说说与USB通信在高级语言上具体那些步骤呀?

也好让我有一个思路,到底那些先那些后。要用到那些。谢谢


这可难为我了,我也才学不久,能说到是能说一点,但我怕说错了误导你呀。

仅供参考:
做usb应该有3个方面,1是固件程序,2是驱动程序,3就是应用程序。你说的高级语言应该包括2和3吧。

驱动程序最好自己看书,或找别人问问在这里根本不能说明白(其实我也不是很懂 哈哈)。 和usb通信主要还是ioctl的问题。最好找个例子看看,再自己做一下。 我用driverstudio,所以说不出什么名堂来。

应用程序我是用vc写的,还是ioctl的问题(要想实现通信,好象就是它的事)。 这里的ioctl一定要和驱动里的相应,他们的ordinal都是从0x800开始的,之前的可不能用。

哈哈,不知道说了什么,能有帮助就看看吧。 有空的时候学学c,很有用的。   :D

 [/quote]

知音阿,老兄和我一样,我觉得这种处境挺尴尬,你觉得呢?
Tomorrow Never Die
wdy9927
驱动老牛
驱动老牛
  • 注册日期2003-08-04
  • 最后登录2017-02-04
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望143点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分0分
  • 社区居民
16楼#
发布于:2003-09-23 17:16
[quote][quote]能不能先跟我说说与USB通信在高级语言上具体那些步骤呀?

也好让我有一个思路,到底那些先那些后。要用到那些。谢谢


这可难为我了,我也才学不久,能说到是能说一点,但我怕说错了误导你呀。

仅供参考:
做usb应该有3个方面,1是固件程序,2是驱动程序,3就是应用程序。你说的高级语言应该包括2和3吧。

驱动程序最好自己看书,或找别人问问在这里根本不能说明白(其实我也不是很懂 哈哈)。 和usb通信主要还是ioctl的问题。最好找个例子看看,再自己做一下。 我用driverstudio,所以说不出什么名堂来。

应用程序我是用vc写的,还是ioctl的问题(要想实现通信,好象就是它的事)。 这里的ioctl一定要和驱动里的相应,他们的ordinal都是从0x800开始的,之前的可不能用。

哈哈,不知道说了什么,能有帮助就看看吧。 有空的时候学学c,很有用的。   :D

 [/quote]

知音阿,老兄和我一样,我觉得这种处境挺尴尬,你觉得呢? [/quote]

 :D 多多交流,共同进步。 这就好了。
usb_anywhere
驱动小牛
驱动小牛
  • 注册日期2003-07-29
  • 最后登录2005-11-22
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-10-08 12:34
努力吧,没什么难得,我的已经搞定了
驱网是你们的,也是我们的,归根结底还是大家的!
kimlon
驱动牛犊
驱动牛犊
  • 注册日期2003-05-21
  • 最后登录2010-03-07
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-10-08 13:06
usb_anywhere兄,能不能说说经验呀,

请问你一下,你有没有用EZUSB用的DLL,我要在delphi上来调用。

就是可以通过这个dll来对ezusb进行读写的。

kimlon@163.com
jansbin
驱动牛犊
驱动牛犊
  • 注册日期2003-10-08
  • 最后登录2003-10-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2003-10-08 15:07
kimlon兄,你的EZUSB的C源程序可不可以给我一份

邮箱:ytzb@netease.com

谢谢!
上一页
游客

返回顶部