USB相关问题

lili830209 2009-05-21 11:04:45
没接触过USB编程
就这几天了解一下皮毛,但是要做开发。。。
我的目的是通过USB来进行PC与设备的通讯(写文件,读文件,PC---CMD--->USB设备)
看了网上资料和DDK里面的一些SAMPLE

大体过程是 通过枚举USB端口上面的设备,匹配GUID来查找目的USB设备
然后通讯的过程我就不了解了
网上都是说CreateFile打开、DeviceIoControl,然后就开始WriteFile、ReadFile
我很难理解WriteFile、ReadFile里面的过程
比如网络通讯总是会由一个server在侦听是否有client的连接,然后握手,然后交互
那么USB通讯的过程是个什么样子的呢?USB设备也跑个服务器段?在侦听?PC去连接?

麻烦熟悉的介绍一下。。。。。分不是问题。。。估计对于回答这个问题的人来说分也不是问题
...全文
195 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
znn04006518 2011-09-15
  • 打赏
  • 举报
回复
usb设计的理念是:usb设备只是一直在接收主机(如pc)传送过来的request然后做出相应的反应,其本身基本上不会主动去和pc通信。usb的一次通信过程一般由三个阶段(stage)组成:setup、data、status。setup阶段pc告诉usb设备pc要干什么(传数据给usb或者从usb传数据给pc等等的操作),data阶段就是usb设备执行setup阶段所布置的任务的阶段,status阶段不太清楚。其实从大的方面上看,usb通信跟网络通信一样的,就是一方请求,另一方根据请求做事,只是由于物理环境不一样,所要达到的效果也不一样所以实现的细节也不一样罢了。
  • 打赏
  • 举报
回复
简单嘛。。。。我又没搞过 随便说说而已。。
lili830209 2009-05-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 ljlon 的回复:]
你是想写usb驱动,还是仅仅写usb的文件读写操作?
[/Quote]

文件读写操作
ljlon 2009-05-22
  • 打赏
  • 举报
回复
你是想写usb驱动,还是仅仅写usb的文件读写操作?
用户 昵称 2009-05-22
  • 打赏
  • 举报
回复
usb协议你也可以看成和网络一样的,你怎么接受的网络的概念,仍然可以怎么接收usb的概念。

网络----- socket bind listen recv/send
usb----- enumguid createfile read/write
doudouHuY 2009-05-21
  • 打赏
  • 举报
回复
那个不是网络通信,是本机IO
bragi523 2009-05-21
  • 打赏
  • 举报
回复
虽然没做过
但是感觉这和网络没有关系吧
lili830209 2009-05-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 cxz1985 的回复:]
可以使用RAPI的函数来对两边读写文件。。
然后PC和Device端程序开监控某文件的线程来获取通讯信息。。。
[/Quote]
死东西 说清楚一点 RAPI我都不知道啥东西。。。。

监控文件的方式来进行通讯这个方式好落后。。。
  • 打赏
  • 举报
回复
可以使用RAPI的函数来对两边读写文件。。
然后PC和Device端程序开监控某文件的线程来获取通讯信息。。。
  • 打赏
  • 举报
回复
刚刚去瞧了下同事写的USB通讯模块。。还没看明白
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
不懂帮顶。。
会思考的草 2009-05-21
  • 打赏
  • 举报
回复
只不过像UNIX那样把所有的东西都视作文件而已,不要被API的名字迷惑了。要了解清楚USB,还是去看看USB2.0的协议,USB Complete第三版也不错。
lili830209 2009-05-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ljlon 的回复:]
确实不是网络通讯,这里你可以简单的理解为:usb设备是一个磁盘或者文件,如果你理解createfile、writefile如何对文件进行操作,那么就会理解怎样操作USB设备。当然,这仅仅是api级别的操作。
[/Quote]

理解成文件来操作的话 我看了找的资料上面说的WriteFile()用以往驱动程序中写入数据
也就是说 只要通过WriteFile()告诉驱动程序我要创建一个文件,然后告诉驱动程序把接下来的数据写到这个文件里面就可以了?

littlefish636 2009-05-21
  • 打赏
  • 举报
回复
不懂,帮顶...
ljlon 2009-05-21
  • 打赏
  • 举报
回复
感觉lz是进入了一个误区,如果单单是想对usb进行读写文件操作。
你完全可以将usb设备当做卷或者磁盘来处理,因为windows确实是这样对待的。
ljlon 2009-05-21
  • 打赏
  • 举报
回复
确实不是网络通讯,这里你可以简单的理解为:usb设备是一个磁盘或者文件,如果你理解createfile、writefile如何对文件进行操作,那么就会理解怎样操作USB设备。当然,这仅仅是api级别的操作。

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧