USB是怎么传输数据的,怎么识别设备的(较详细)

USB是怎么传输数据的,怎么识别设备的(较详细)
USB是怎么传输数据的,怎么识别设备的(较详细)

USB是怎么传输数据的,怎么识别设备的

Dodo 原创于2008.6.15

读这篇文章之前要对USB有一定的了解,知道什么是主机,设备,USB是一个主从结构的接口。

先说说USB主机是怎么识别一个U盘的吧,当你把一个U盘插到电脑上的时候,电脑的USB接口上会发生一些变化,这里先得说说USB数据线是怎样的,它里面一般有用的有四根线,ground,VCC,DM(D-),DP(D+),而DM,DP是用来传输数据的,当U盘(以后简称U)插到电脑上的时候,U会把DP(D+)拉高,使DP,DM保持一个J状态(DP为高DM 为低,有关总线的状态又有很多,想了解的自己去研究),电脑主板的USB主机芯片检测到这个J状态(DP(D+)拉高),(大概是这样,愿意详细了解的要仔细看协议),知道有设备连接上了(这里提到的主机和设备是指连接在USB线两端的USB接口芯片),电脑的驱动会对连接上的这个设备进行识别,我们把它叫做列举,这个过程是为了让电脑知道连接上的这个设备是什么东西(是U盘,还是USB鼠标,还是USB键盘,或是其他的什么)。

以下是一个U盘的全部列举过程,用图来说明,(有两个附件,一个USB分析仪软件,一个是U盘的的全部列举过程(部分),用USB分析仪软件打开)

在这之前先说说USB数据是怎么在DM,DP上传输的吧,当主机检测到有设备连接上,驱动先会对这个设备作些必备的事情,识别他的速度(这个过程又有很多协议,不多说了,要了解的仔细研究协议),然后就是复位等等,之后就开始在总线(DM,DP)上发送1ms间隔的SOF包(全速)或125us间隔的SOF包(高速),低速(我也不太清楚,呵呵),什么是SOF包呢,SOF 就是start of frame (帧开始),其实就是帧开始的一个标记,其中有帧号,什么是帧呢,帧就是1ms的间隔(全速)或125us的间隔(高速),所有的数据都是在帧内传输的。

USB数据都是以包的形式发出的,包都有固定的格式,它以一个sync(同步)开始,

以一个eop(end of packet,包结束)结束,sof 包也是一样的,高速的sync,eop和全速的sync,eop不同。下面是包的结构图,

从左到右依次是sync场,pid场,。。。。。。当然PID后面是什么,还有没有数据要看具体发什么包了。后面的令牌包,帧开始包,数据包,握手包决定了PID 后面是什么,握手包的PID后面什么都没有,直接是EOP。

不得不说的是pid(packet ID 包的ID),就是说明这个包是什么包,包的类型有四种:令牌包,数据包,握手包,特殊包。不同类型的包又有不同的格式,每种类型又有不同的PID:

附一份中文的(不全)。

下面是各个包的格式:

令牌包

图8-5显示了标记包的字段格式。标记由PID,ADDR和ENDP构成,其中PID指定了包是输入,输出还是建立类型。对于输出和建立事务,地址和端口字段唯一地确定了接下来将收到数据包的端口。对于输入事务的,这些字段唯一地确定了哪个端口应该传送数据包。只有主机能发出标记包。输入PID定义了从功能部件到主机的数据事务。输出和建立PID定义了从主机到功能部件的数据事务。

图8-5 标记包格式

如上图所示,标记包包括了覆盖地址和端口字段的5位CRC。CRC并不覆盖PID,因为它有自己的校验字段。标记和帧开始(SOF)包是由3个字节的包字段数据后面的包结束(EOP,End of Packet)界定的。如果包被译码为合法标记或SOF,但却没有在3个字节之后以EOP终止,则它被认为是无效的,并被接收器忽略。

帧开始(SOF,Start-of-Frame)包

主机以每1.00 ms ±0.0005 ms一次的额定速率发出帧开始(SOF)包。如图8-6中所示,SOF 包是由指示包类型的PID和其后的11位的帧号字段构成。

图8-6 帧开始包

SOF标记组成了仅有标记的(token-only)事务,它以相对于每帧的开始精确计算的时间间隔发送SOF记号(Marker)和伴随的帧数。包括集线器的所有全速功能部件都可收到SOF包。SOF 标记不会使得接收功能部件产生返回包;因此,不能保证向任何给定的功能部件发送的SOF 都能被收到。SOF包发送2个时间调配(Timing)信息。当功能部件探测到SOF的PID的时候,它被告知发生SOF。对帧时间敏感而不需要追踪帧数(例如集线器)的功能部件,仅需对SOF 的PID译码;可忽略帧数和其CRC。如果功能部件需要追踪帧数,它必须对PID和时间戳都进行译码。对总线时间调配信息的没有特别需要的全速设备可以忽略SOF包。

8.4.3数据包

如图8-7所示,数据包由PID,包括至少0个字节数据的数据区和CRC构成。有2种类型的数据包,根据不同的PID:DA TA0和DA TA1来识别。2种数据包PID是为了支持数据切换同步(Data Toggle Synchronization)(在第8.6节提到)而定义的。

图8-7 数据包格式

数据必须以整数的字节数发出。数据CRC仅通过对包中的数据字段计算而得到,而不包括PID,它有自己的校验字段。

握手包

如图8-8所示,握手包仅由PID构成。握手包用来报告数据事务的状态,能还在表示数据成功接收,命令的接收或拒绝,流控制(Flow Control)和停止(Halt)条件。只有支持流控制的事务类型才能返回握手信号。握手总是在事务的握手时相(Phase)中被返回,也可在数据时相代替数据被返回。握手包由1个字节的包字段后的EOP确定界限。如果包被解读为合法的的握手信号,但没有以1个字节后面的EOP终止,则它被认为是无效的,且被接收机忽略。

图8-8 握手包

eop是在发完包后只表现在DM,DP上的一个标记,一个完整的包就是这样的,这只是以数据的形式表现出来的包,但是怎么把它发到DP,DM线上呢,有一种编码方式叫做NRZI编码,就是如果发的数据是1,DP,DM取反(相对于前一个数据),就是如果发的数据是0,DP,DM保持原有的值不变(保持前一个数据的值),取反和保持多久呢,是一个位时间,位时间?比如说全速12Mb/s ,算一下它发一个位的时间是83.33ns,这就是全速位的位时间。DP,DM在发送数据之前是J状态(DP为高DM为低),还要注意,数据是按场发出去的,先发sync,然后pid,依次,每个场的数据都是先发低位然后次低位,最后最高位。(数据场值得注意,按字节顺序发,每个字节先发低位)数据就是这样发到DP,DM 上的。其中还有位填充==,很多其他的东西,这里不讲了,要了解的自己研究协议。

下面是NRZI 编码的图解:数据的编码与解码

在包传送时,USB使用一种NRII(None Return Zero Invert,即无回零反向码)编码方案。在该编码方案中,“1”表示电平不变,“0”表示电平改变。图8列出了一个数据流及其

它的NRII编码,在该图的第二个波形图中,一开始的高电平表示数据线上的J态,后面就是NRII编码。

一个包就是这样发出去的。

下面接着前面的列举说。列举的整个过程是这样的:

建立阶段:主机发一个SETUP 令牌包,后面紧跟一个(data)包(主机发的),这个data包是一个请求(请求是主机发给设备的,请求的作用是告诉设备主机下一步要干什么或者告诉设备该干什么,协议里规定了每个请求的格式和标准请求代码)比如说第一个请求是告诉设备要设备返回一个它的(设备的)设备描述符。设备收到这个包无错误后会返回一个ACK握手包告诉主机已收到数据

数据阶段:然后主机会发一个in令牌包,设备收到IN令牌包后,设备用数据(data)包(设备发的)返回他自己的设备描述符(协议里规定了各个设备的标准的描述符),描述符里会有一些设备的描述,(描述他是什么东西,是U盘,还是USB鼠标,还是USB键盘,或是其他的什么)。主机收到数据无错误后会返回一个ACK握手包,这个阶段主机也可能发out令牌包+数据包(主机发的),数据阶段可以没有。

状态阶段:主机会发一个与数据阶段相反的令牌包,数据阶段如果是IN,现在发OUT +一个空的数据包(数据场没有数据的包),设备会用ACK握手包相应。数据阶段如果是OUT,现在发IN不+数据包,设备会返回空的数据包,当主机收到包且无错误时,主机会发一个握手包ACK。

以上是一个无任何错误请求的全过程,在列举过程中会有很多这样的请求,主机不是只问一次就可以知道这个设备是什么,通过多次的请求。直到知道这个设备是什么为止。之后通过请求会对这个设备配置地址==。电脑就是通过这个地址来区分插在电脑上的两的U 盘的。

以上的传输方式属于控制传输。控制传输至少有两个阶段:建立和状态。其他传输不是按这个(建立阶段,数据阶段,状态阶段)传输的,可以直接传输一个OUT包。只有控制传输是这样的。至于其他的传输类型只是区分一下每次传输的最大数据量,每帧传输的次数==。自己看协议吧!下面是控制传输的图

以上的过程当中还有可能出错,返回NAK而不是ACK ,数据触发机制(和发data0还是data1有关的),设备无相应,重试三次==一些问题没有讲,讲出来太多了。要研究的自己看协议吧。

这篇文章主要是讲一下整个USB是怎么传输数据的,怎么认识一个设备的。其中有很多没有讲,讲起来就要把协议全搬出来了,太多了。要研究的看看这两本书,1。《USB2.0与OTG规范及开发指南》。北航出的,周立功编著,包括了所有USB的协议,高速,全速,OTG,HUB==,这本书把英文版的UAB 协议整个翻译了一遍,里面又很多错误的,他是按字面意思直接翻译的,没有联系到协议本身的意思。2.《》国防工业大学出版的,已经有第二版了。主要是电气规范,数据传输协议,设备开发和一些驱动开发。

以后的便携式设备越来越多,USB 的设备也越来越多,什么SD,MMC ,CF 这些卡,鼠标,键盘,==全用USB来连接到电脑。以后USB的应用会更多,INTEL正在研发USB3.0,很期待啊。

希望对刚开始学习USB的网友们有帮助。有什么问题可以和我一起讨论,QQ:279062488 加我时告诉我是有关USB的,谢谢,邮箱:kk163email@https://www.360docs.net/doc/7815652920.html,.

网络基本功:细说网络传输

网络基本功(一):细说网络传输 常言道:欲练神功,必先练好基本功。之前做了一个关于IP路由,默认网关和掩码的问答贴,做完这个帖子觉得如果对网络知识点做一个系统的阐述,应该会很有帮助。 本系列文章着重于讲解网络管理实际应用中常常涉及的重要知识点,尽量以实用为主。准备写的几个章节暂时有(可能会有增减): ?网络传输 ?交换机 ?IP地址 ?VLAN ?Trunk ?链路聚合 ?静态路由 ?动态路由 ?集群 ?常用诊断工具:ping ?常用诊断工具:netstat ?常用诊断工具:tcpdump 更多信息 首先来看一个例子: 示例:网络服务器向客户端传送数据的过程: 在详细阐述网络传输过程之前,先来看一个最常见的例子,下图显示了一个网络服务器向客户端传送数据的完整过程: 1.需要传送的数据是网络服务器的HTML页面。 2.应用协议HTTP报文头添加到HTML数据之前。报文头信息包括:服务器所使用的HTTP 版本,以及表明它包含发给网络客户端信息的状态编码。 3.HTTP应用层协议将HTML格式的网页数据发送给传输层。TCP传输层用于管理网络服务器和客户端之间的会话。

4.IP信息添加到TCP信息之前。IP指定适当的源和目的IP地址。这些信息就构成了IP报文。 5.以太网协议添加到IP报文的两端之后,就形成了数据链路帧。上述帧发送至通向网络客户端的路径上的最近一个路由器。路由器移除以太网信息,观察IP报文,判定最佳路径,将报文插入一个新的帧,并发送至目标路径上下一个相邻路由器。每一个路由器在转发之前都移除并添加新的数据链路层信息。 6.数据通过互联网络传输,互联网络包含媒介和中间设备。 7.客户端接收到包含数据的数据链路帧,处理各层协议头,之后以添加时相反的顺序移除协议头。首先处理并移除以太网信息,之后是IP协议信息,接下来TCP信息,最后是HTTP 信息。 8.之后,将网页信息传递给客户端网页浏览器软件。 数据封装: 消息要在网络中传输,必须对它进行编码,以特定的格式进行封装,同时需要适当地封装以足够的控制和地址信息,以使它能够从发送方移动到接收方。 消息大小 理论上,视频或邮件信息是能够以大块非中断型流从网络源地址传送到目的地址,但这也意味着同一时刻同一网络其他设备就无法收发消息。这种大型数据流会造成显著延时。并且,如果传输过程中连接断开,整个数据流都会丢失需要全部重传。因此更好的方法是将数据流分割(segmentation)为较小的,便于管理的片段,能够带来两点好处: ·发送较小片段,网络上同时可有多个会话交错进行。这种在网络上将不同会话片段交错进行的过程称为多路传输(multiplexing)。 ·分割可提高网络通讯的可靠性。各消息片段从源地址到目的地址无需经过相同路径,如果一条路径被堵塞或断开,其余消息可从替换路径到达目的地址。如果部分消息到不了目的地址,那只需重传丢失部分。 通过对片段打上标签的方式来保证顺序以及在接收时重组。 协议数据单元(Protocol Data Unit, PDU) 应用层数据在传输过程中沿着协议栈传递,每一层协议都会向其中添加信息。这就是封装的

数据采集存储与传输

数据采集、存储和传输 压缩机转速为8k转/分时,频率133.33 f≈Hz,若要分析到信号频率的4倍频时,有经验公式得采样频率: 2.54133.33 1.33 f≥??≈kHz。所要采集的振动 s 信号是,x y轴两个方向的信号,故要使用采集卡的两个通道进行数据采集,所以,采样频率 f应大于2.66kHz。所以,采集卡的最高采样速率达到3kHz即可满足 s 转速为8k转/分的压缩机的振动信号采集。 中断采集: 在LabView中软件触发方式比较简单,但采样速度较低,在采集振动信号时不能满足实际要求。而采用中断触发方式可以实现数据的高速采集,最高采样速率可达100kHz。 以下是LabView下采用中断触发方式实现数据高速采集时用到的几个关键子VI的简单介绍: DeviceOpen:打开指定的设备并返回一个驱动句柄,之后所有执行相应I/O 操作的子VI 都应基于该句柄参数所获得的配置数据。该子VI 必须在调用其他驱动子VI 之前调用。 AllocDSPBuf:为用户缓冲区分配参数Count 指定大小的空间。该子VI 的输出用作FAITransfer 子VI的输入,通过MemoryType 参数可以选择以电压形式或二进制形式显示数据。程序运行结束后,LabVIEW自动释放此内存空间。EnableEvent:通过指定相应的事件类型代码来使用或禁用一个指定的事件,并通知由DriverHandle所指定的硬件设备。 MultiChannelINTSetup:开始多通道中断触发方式的A/D转换,并将采集到的数据储存到内部缓冲区,该操作将一直进行,直到调用FAIStop子VI。该子VI 运行时将自动调用AllocINTBuf子VI,分配FAIINTStart.Count参数所指定大小的内部缓冲区。与用户缓冲区不同的是,在程序结尾需另外调用子VI释放此内存空间。通过该子VI可以设置采样率、各通道增益代码、循环方式、是否使用FIFO缓存器等。 WaitFastAIOEvent:使程序进入等待状态,直到设定的事件发生(内部缓冲区半满或全满,等待结束,内部缓冲区全满)或等待时间超出用户通过Timeout参数设定的值。该子VI可以用来捕获内部缓冲区半满或全满事件。BufferChangeHandler:将数据从内部缓冲区传送到用户缓冲区。该子VI能够判断内部缓冲区当前的状态是半满还是全满,从而执行不同的操作:半满时,从内部缓冲区取出1/2Count数量的数据到用户缓冲区;全满时,不做任何传输操作。要实现连续数据采集,程序中需要反复调用该子VI。此外,如果在AllocDSPBuf中选择的是以电压形式显示数据,该子VI还负责完成从原始数据到电压值的转换。 ClearOverHandler:用来处理FAI采样缓冲区的溢出状态,并清除溢出标志。即当采集数据的数量达到FAIINTStart.Count 的值后归零,重新开始计数。OverRun:显示缓冲区中的数据是否已被及时地传送出去;HalfReady:显示内部

无法识别的USB设备

"无法识别的USB设备:跟这台计算机连接的一个USB设备运行不正常,WINDOWS无法识别"问题的几个解决办法 1、我朋友的电脑今天插上U盘就会出现:"无法识别的USB设备:跟这台计算机连接的一个USB设备运行不正常,WINDOWS无法识别",怎么折腾也找不到原因,后来把计算机电源线从插座上拔下来,将插头短接一段时间后重新启动就好了,哈哈!windows 真奇怪! 2、现在的电脑一般都会有4~8个USB接口,但有些装了Windows XP 的电脑会出现USB接口不稳定的现象,典型的就如USB鼠标、USB键盘会莫名其妙失灵。其实这是因为Windows XP默认开启了USB的节电模式,致使某些USB接口供电不足,使USB设备间歇性失灵。只要将USB节电模式关闭,USB设备就可恢复正常。右击“我的电脑”选“属性”,打开“系统属性”对话框,切换到“硬件”选项卡,打开“设备管理器”,双击“通用串行总线控制器”,会看到有好几个“USB Root Hub”,双击任意一个,打开“USB Root Hub属性”对话框,切换到“电源管理”选项卡,去除“允许计算机关闭这个设备以节约电源”前的勾选,点击“确定”返回,依次将每个USB Root Hub

的属性都修改完后重启电脑,USB设备就能恢复稳定运行了。 3、最后无意中一个办法:插入U盘,在设备管理器--通用串行总线控制器中,删除了3个USB程序中一个,立刻,弹出U盘所在的卷,识别了这个U盘,然后,我再度刷新,当3个全现时,不行。于是将此设备禁用。(注:另2个USB程序一致,这一个不同) 有感同仁苦恼,特献此策。此法不伤机,不费时,有用则用,无用无伤。 4、在“设备管理器”的“通用串口总线控制器”中我逐个停用USB 控制器设备,我发现一个奇怪的现象:只要停用“SiS PCI to USB Enhanced Host Controller”,卸载“unkown device”设备,进行扫描检测硬件改动能找到插在计算机上的打印机和U盘了,而且插在其它的USB口上也能识别。难道是“SiS PCI to USB Enhanced Host Controller”这个USB2.0主控器惹的祸吗?我在网上也查不到有关USB2.0主控器启用后导致“无法识别”USB设备的相关的问题。只好向联想技术服务人员咨询,答复有可能是计算机静电引发。启用“SiS PCI to USB Enhanced Host Controller”设备,关机后对计算机进行静电释放,重新启动计算机,连接在计算机上的打印机和U盘很快被识别。 计算机静电释放的正确方法:拔除主机上所有的连线(包括电源线,鼠标键盘线,显示器数据线,网线,外接设备连线等),按主机电源开关3-5次,每次按住开关一秒钟,中间间隔1-2秒。 现时值冬季,气候变得越来越干燥,计算机更容易积累静电导致莫名的计算机故障,严重的会致使硬件损坏。所以,在冬季,做好计算机的静电防止工作显得更加重要,尤其是计算机房的静电防止。

网络是如何传输数据的

?网络是如何传输数据的? 互联?网络重要的特性是能由采?用完全不不同和不不兼容技术的各种局域?网和?广域?网组成。如何让某台源主机跨过所有这些不不兼容的?网络发送数据到另?一台?目标主机呢? 解决办法是?一层运?行行在每台主机和路路由器?上的协议软件,这个软件实现?一种协议,这种协议控制主机和路路由器?协同?工作来实现数据传输,从?而消除不不同?网络之间的差异。这种协议必须提供两种基本能?力力: 命名机制。不不同局域?网技术有不不同和不不兼容的?方式来为主机分配地址,互联?网络协议通过定义?一种?一致的主机地址格式消除了了这些差异,每台主机会被分配?至少?一个这种互联?网络地址(Internet address),这个地址唯?一标识了了这台主机。 传送机制。在电缆上编码位和将这些位封装成帧?方?面,不不同的联?网技术有不不同的和不不兼容的?方式,互联?网络协议通过定义?一种把数据位捆扎成不不连续的?片(包)的统?一?方式,消除了了这些差异。?一个包由包头和有效载荷组成,其中包头包括包的?大?小以及源主机和?目标主机的地址,有效载荷包括从源主机发出的数据位。

上图展示了了主机和路路由器?如何使?用互联?网络协议在不不兼容的局域?网间传送数据的?一个示例例。这个互联?网络示例例由两个局域?网通过?一台路路由器?连接?而成,?一个客户端运?行行在主机A上,主机A与LAN1相连,它发送?一串串数据字节到运?行行在主机B上的服务器?端,主机B连接在LAN2上。这个过程有8个基本步骤: 1. 运?行行在主机A上的客户端进?行行?一个系统调?用,从客户端的虚拟地址空 间复制数据到内核缓冲区中; 3. 主机A上的协议软件通过在数据前附加互联?网络包头和LAN1帧头,创 建了了?一个LAN1的帧。互联?网络包头寻址到互联?网络主机B,LAN1帧头寻址到路路由器?,然后它传送此帧到适配器?。注意LAN1帧的有效载荷是?一个互联?网络包,?而互联?网络包的有效载荷是实际的?用户数据,这种封装是基本的?网络互连?方法之?一; 4. LAN1适配器?复制该帧到?网络上; 5. 当此帧到达路路由器?时,路路由器?的LAN1适配器?从电缆上读取它,并把 它传送到协议软件; 6. 路路由器?从互联?网络包头中提取出?目标互联?网络地址,并?用它作为路路由 表的索引,确定向哪?里里转发这个包,本例例中是LAN2。路路由器?剥落旧的LAN1的帧头,加上寻址到主机B的新的LAN2帧头,并把得到的帧传送到适配器?; 7. 路路由器?的LAN2适配器?复制该帧到?网络上; 8. 此帧到达主机B时,它的适配器?从电缆上读到此帧,并将它传送到协 议软件; 9. 最后主机B上的协议软件剥落包头和帧头。当服务器?进?行行?一个读取这 些数据的系统调?用时,协议软件最终将得到的数据复制到服务器?的虚拟地址空间。 全球IP因特?网 全球IP因特?网是最著名和最成功的互联?网络实现。从1969年年开始出现,因特?网内部体系结构不不断发展变化。但从20世纪80年年代早期开始,客户端-服务器?应?用的组织就?一直保持着相当的稳定。

USB设备无法识别故障排除

USB设备无法识别故障排除 当你想用闪存或移动硬盘来和电脑交换数据时,但插上USB口时你却发现系统居然无法识别出USB 设备,这是什么原因造成的呢?其实这样的现象我们时常见到,接下来介绍一下简单的处理方法。 一、在排除USB存储设备本身故障后,出现无法识别现象的原因一般是由以下几个方面所造成的: 一是USB接口电压不足。这种故障通常存在于移动硬盘身上,当把移动硬盘接在前置USB口上时就有可能发生系统无法识别出设备的故障,原因是移动硬盘功率比较大要求电压相对比较严格,前置的USB 接口是通过线缆连接到机箱上的,在传输时便会消耗大掉的电压,因此,在使用移动硬盘时,要注意尽量接在后置主板自带的USB接口上,否则也可以通过外接的电源适配器来提供单独供电。当然,在一些老的主板上,必须要使用独立供电才能供正常使用USB设备。 二是前置USB线接错。当主板上的USB线和机箱上的前置USB接口对应相接时把正负接反就会发生这类故障,这也是相当危险的,因为正负接反很可能会使得USB设备烧毁,严重还会烧毁主板。三是主板和系统的兼容性问题。这类故障中最著名的就是NF2主板与USB的兼容性问题。假如你是在NF2的主板上碰到这个问题的话,则可以先安装最新的nForce2专用USB2.0驱动和补丁、最新的主板补丁和操作系统补丁,还是不行的话尝试着刷新一下主板的BIOS一般都能解决。四是系统或BIOS问题。当你在BIOS或操作系统中禁用了USB时就会发生USB设备无法在系统中识别。解决方法是开启与USB设备相关的选项。 二、U盘插入电脑,提示“无法识别的设备”故障 维修思路:对于此现象,首先的一点说明U盘的电路基本正常,而只是跟电脑通信方面有故障,而对于通信方面有以下几点要检查: (1)U盘接口电路,此电路没有什么特别元件就是两根数据线D+ D-,所以在检查此电路时只要测量数据线到主控之间的线路是否正常即可,一般都在数据线与主控电路之间会串接两个小阻值的电阻,以起到保护的作用,所以要检查这两个电阻的阻值是否正常。 (2)时钟电路,因U盘与电脑进行通信要在一定的频率下进行,如果U盘的工作频率和电脑不能同步,那么系统就会认为这是一个“无法识别的设备”了。这时就要换晶振了。而实际维修中真的有很多晶振损坏的实例! (3)主控,如果上述两点检查都正常,那就可以判断主控损坏了。 三、Windows XP操作系统下,系统提示已经找到新的硬件并且硬件正常被安装可以使用,但无法找到闪存盘的盘符,且闪存盘的灯在不停的闪亮 故障分析:这种故障一般是由于非法操作所造成的,认为闪存盘是可以支持热插拔的,于是在没有正确删除移动设备的情况下,直接进行了插拔操作,不正确的操作是导致闪存消失的根本原因。 故障排除:进入Windows 98系统,用鼠标右击“我的电脑”,选择属性进入“设备管理器”,在“磁盘驱动器”下看到比原来多了一个“Netac Onlydisk”的设备,双击进入,在弹出的新窗口中看到了四个新的选项:“断开”、“可删除”、“同步数据传输”和“Int 13单元”,仔细观察发现“可删除”前面的选项是没有打勾的。在“可删除”选项前的空格内打入勾并单击确定后重新启动电脑。 故障小结:此故障依然是由于误操作使用闪存盘导致的问题,可以看出由于不正常使用闪存盘而导致故障出现的机率是非常大的,因此大家在使用中一定要遵循规格,以保证闪存的正常使用。 四、可以认U盘,但打开时提示“磁盘还没有格式化”但系统又无法格式化,或提示“请插入磁盘”,打开U盘里面都是乱码、容量与本身不相符等。 维修思路:对于此现象,可以判断U盘本身硬件没有太大问题,只是软件问题而以了。 解决方法:找到主控方案的修复工具搞一下就可以了。这个就要大家自己看U盘的主控是什么方案的来决定了。 U盘故障大概也就是这些主要问题了。而对于无法写文件、不存储等现象,一般都是FLASH性能不良或有坏块而引起的。大家看完之后有没有一个清晰的思路了呢。随便说明一下,U盘不同于MP3,他不存在固件之说,但有些厂家把自己的软件放到里面,低格一下就会没有的。 告诉大家一个非常简单的方法,就是在碰到主控损坏或找不到相应的修复工具时,可以用U盘套件来重新搞一个新的U盘,方法就是把故障机的FLASH拆下来,放到新的PCB板上就可以了。U盘套件包括(PCB带主控(分1.1和2.0之分)及外壳一套),维修起来非常简单,做数据恢复就更方便了。

USB20协议中文版

USB 2.0 规范 USB体系简介 USB是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度可达480Mb/S。USB支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,设备最多可以获得500mA的电流。USB2.0 被设计成为向下兼容的模式,当有全速(USB 1.1)或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它们。一条USB总线上,可达到的最高传输速度等级由该总线上最慢的“设备”决定,该设备包括主机、HUB以及USB功能设备。 USB体系包括“主机”、“设备”以及“物理连接”三个部分。其中主机是一个提供USB 接口及接口管理能力的硬件、软件及固件的复合体,可以是PC,也可以是OTG设备。一个USB系统中仅有一个USB主机;设备包括USB功能设备和USB HUB,最多支持127个设备;物理连接即指的是USB的传输线。在USB 2.0系统中,要求使用屏蔽的双绞线。 一个USB HOST最多可以同时支持128个地址,地址0作为默认地址,只在设备枚举期间临时使用,而不能被分配给任何一个设备,因此一个USB HOST最多可以同时支持127个地址,如果一个设备只占用一个地址,那么可最多支持127个USB设备。在实际的USB体系中,如果要连接127个USB 设备,必须要使用USB HUB,而USB HUB也是需要占用地址的,所以实际可支持的USB功能设备的数量将小于127。 USB体系采用分层的星型拓扑来连接所有USB设备,如下图所示: 以HOST-ROOT HUB 为起点,最多支持7层 (Tier),也就是说任何一个 USB系统中最多可以允许5 个USB HUB级联。一个复 合设备(Compound Device) 将同时占据两层或更多的 层。 ROOT HUB是一个特殊的USB HUB,它集成在主机控制器里,不占用地址。ROOT HUB不但实现了普通USB HUB的功能,还包括其他一些功能,具体在增强型主机控制器的规范中有详细的介绍。 “复合设备(Compound Device)”可以占用多个地址。所谓复合设备其实就是把多个功能设备通过内置的USB HUB组合而成的设备,比如带录音话筒的USB摄像头等。 轮询的广播机制传输数据,所有的传输都由主机发起,任何时刻整个USB体USB采用轮询的广播机制 轮询的广播机制

数据存储与传输专题

数据存储与传输专题 大小印第安序: 在ARM体系中,每个字单元包含4个字节单元或者两个半字单元;1个半字单元包含两个字节单元。但是在字单元中,4个字节哪一个是高位字节,哪一个是低位字节则有两种不同的格式:big-endian格式和little-endian格式,也即大小印第安序。 在big-endian(大端)格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如图所示: little-endian(小端)格式与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如图所示: 注意:1、印第安序以字节为最小单位,不是以位为最小单位。 2、印第安序是针对字单元来说的,仅仅是定义一个字中的四个字节的顺序问题。 举例说明: SD卡内数据存储方式是小印第安序,使用WinHEX打开SD卡查看存储的数据,如下图: 注意上图画黑线的两个字节数据:C6 03,那么这两个字节真正的数值是03c6,因为是以十六进制显示的,所以得到的值为0x03c6。如果是用的大印第安序,值就是0xc6030000了。 ARM 一般使用“小端”存储器组织,但也同样可以配置为“大端”格式存储器组织。使用大印第安序的器件不是太多,比如NAND存储时以及IIS接口传输时都是使用的小印第安序,JPEG文件是大印第安序的。

其实对印第安序,很多人都有误解。有很多资料上,特别是高端ARM芯片的datasheet 上一般都会写SD控制器支持大印第安序,但也有的芯片会写其SD控制器支持小印第安序。这就比较奇怪了,同样的一个SD卡,为什么使用不同芯片就会使用不同的印第安序呢?这是因为没有分清“外设控制器”以及“硬件外设”的概念。 其实正如前面所说,印第安序仅仅是说明控制器如何组织一个字数据,也就是控制器决定数据组织,跟控制器连接的硬件外设无关。如SD卡以及NAND Flash虽然均是以页为基本数据块进行读写的,但从微观上看依然是一个字节一个字节写入其Flash中的,这些硬件外设很蠢,控制器向它输出一个字节,这些外设就依次把此字节存入flash,根本不会考虑大小印第安序问题,也就是说SD控制器以及NAND控制器再从ARM内核那里得到字数据后会按照预先设定的印第安序方式重新组着一下这个字数据,然后顺序发送给硬件外设。如果不理解“外设控制器”以及“硬件外设”的作用,很容易就错以为SD卡或者Flash本身就具有印第安序组织的功能。 你们很快都会学到在单片机上驱动SD卡或者外扩NandFlash,除了高端ARM有SD控制器以及Nand控制器外,一般单片机基于芯片成本考虑都没有这两个控制器。其实这两个控制器的最基本的作用就是产生对应的时序,如SD控制器,如上图所示,它的作用就是将单片机想要发送的字数据转换为时序信号传送给SD卡,SD卡会解析传输来的信号并将数据一一存储。那么只要我们使用IO口模拟了这种时序,也就可以随意的读写SD卡了,也就是说我们使用软件写了一个上图所示的简单SD控制器。 其实此时印第安序就是由你的读写代码来控制了,假如你要往SD卡里写入4个字节数据,也就是一个字数据,如果先发送低字节,再发送高字节,那用的就是小印第安序,读取数据时应该把第一个读到的字节作为字数据的最低字节,比如你写入的是(低)01 02 03 04(高),你读取SD卡时第一个读到的应是01,但如果你使用大印第安序来理解,那么读到的数据就是(低)04 03 02 01(高)了。到这里也应该能看出来了,印第安序仅仅是编程人员对数据组织的理解,或者说是对应控制器对数据组织的理解,只要理解得当,大小印第安序其实没有分别,只不过存储顺序稍微不同而已。 MSB与LSB: 我们知道现在大部分的通信接口都串行的,也即一次只能传输一位,那么一个字节数据需要传输8次,但是先传送第8位还是先传送第1位?这里就有了分歧,由此分出“最低有效位(LSB)”和“最高有效位(MSB)”两个词。 注意:大小端是用来区分一个字数据中的四个字节的存放顺序的,而MSB和LSB是用来标识一个字节中的每个位的传送顺序的。 -- 六 度 空 间 -- 2010/11/15

(设备管理)无法识别的设备处理方法总结

无法识别的usb设备处理方法总结 无法识别的usb设备网友经常遇到这类问题,如今我们身边的USB设备越来越多,那我们来分析下无法识别usb 设备故障解决办法,无法识别的usb设备处理方法总结汇集了最全usb设备处理方法,希望对雨林木风的网友提供帮助。 1.前置USB线接错。当主板上的USB线和机箱上的前置USB 接口对应相接时把正负接反就会发生这类故障,这也是相当危险的,因为正负接反很可能会使得USB设备烧毁。所以尽量采用机箱后置的USB接口,也少用延长线.也可能是断口有问题,换个USB端口看下. https://www.360docs.net/doc/7815652920.html,B接口电压不足。当把移动硬盘接在前置USB口上时就有可能发生系统无法识别出设备的故障。原因是移动硬盘功率比较大要求电压相对比较严格,前置接口可能无法提供足够的电压,当然劣质的电源也可能会造成这个问题。解决方法是移动硬盘不要接在前置USB接口上,更换劣质低功率的电源或尽量使用外接电源的硬盘盒,假如有条件的话。 3.主板和系统的兼容性问题。呵呵这类故障中最著名的就是NF2主板与USB的兼容性问题。假如你是在NF2的主板上碰到这个问题的话,则可以先安装最新的nForce2专用USB2.0驱动和补丁、最新的主板补丁和操作系统补丁,还是不行的话尝试着刷新一下主板的BIOS一般都能解决。 4.系统或BIOS问题。当你在BIOS或操作系统中禁用了USB时就会发生USB设备无法在系统中识别。解决方法是开启与USB设备相关的选项。就是开机按F2或DEL键,进入BIOS,把enable usb device选择enable。 5.拔插要小心,读写时千万不可拔出,不然有可能烧毁芯片。XP中任务栏中多出USB设备的图标,打开该图标就会在列表中显示U盘设备,选择将该设备停用,然后你再拔出设备,这样会比较安全。 其实判断软件硬件问题很简单,在别的机器或换个系统试试就可以了.有些小的问题不妨先用专门软件格式化下.还有提醒大家WINDOWS下格式化时要选择FAT,不要选FAT32。 提示无法识别的USB设备维修 故障提示如图:

信号是数据在传输过程中的1

信号是数据在传输过程中的____的表现形式。 A.电信号B.代码 C.信息D.程序 无线电广播是____通信方式 A、全双工 B、半双工 C、单工 D、不确定,与广播内容有关 ____信号的电平是连续变化的。 A.数字B.模拟 C.脉冲D.二进制 ____是指在一条通信线路中可以同时双向传输数据的方法。A.单工工通信B.半双工通信 C.同步通信D.全双工通信 传输速率的单位“b/s”代表________ A、bytes per second B、bits per second C、baud per second D、billion per second 在光纤中采用的多路复用技术是______。 A.时分多路复用(TDM) B.频分多路复用(FDM) C.波分多路复用(WDM) D.码分多路复用(CDMA) 习题: FDM是按照____的差别来分割信号的。 A.频率参量 B.时间参量 C.码型结构 D.A、B、C均不是 习题: 家庭中使用的有线电视可以收看很多电视台的节日,有线电视使用的是____技术。 A.频分多路复用B.时分多路复用C.时分多路复用D 码分多路利用 计算机网络中广泛使用的交换技术是_____。 A、线路交换 B、报文交换 C、分组交换 D、信源交换 习题:

虚电路服务是_______。 (1)面向连接的、可靠的、保证分组顺序到达的网络服务(2)面向无连接的、可靠的、保证分组顺序到达的网络服务(3)面向连接的、可靠的、保证分组顺序到达的网络服务(4)面向无连接的、可靠的、不保证分组顺序到达的网络服务 习题: 当采用偶校验编码时,每个符号(包括校验位)中含有“1”的个数是_______。 A.奇数B.偶数 C.未知数D.以上都不是 习题: 在循环冗余校验中,______是CRC码。 A .除数; B .被除数; C .商; D .余数 光纤的规格有和两种 双绞线有、两种 局域网的特征是____ A 有效范围广 B造价便宜 C传输速率高 D有效性好但可靠性差 局域网的协议结构一般不包括:____(A)网络层 (B)物理层 (C)数据链路层 (D)介质访问控制层 局域网分类中,____不属于按网络拓扑结构分类。 A星型局域网 B总线型局域网 C树型局域网 D虚拟局域网 对局域网来说,网络控制的核心是___ A.工作站 B.网卡

U盘插入电脑后显示“无法识别的设备”

U盘插入电脑,电脑提示“无法识别的设备”故障诊断方法如下: 第1步:如果U盘插入电脑,电脑提示“无法识别的设备”,说明U盘的供电电路正常。接着检查U盘的USB接口电路故障。 第2步:如果U盘的USB接口电路正常,则可能是时钟电路有故障(U盘的时钟频率和电脑不能同步所致)。接着检测时钟电路中的晶振和谐振电容。 第3步:如果时钟电路正常,则是主控芯片工作不良。检测主控芯片的供电,如果供电正常,则是主控芯片损坏,更换即可。 另外还有一种原因,就是USB接口供电不足,可能是USB接口连接的外设太多造成供电不足。建议使用带电的USBHUB或者使用USB转PS/2的转接头。还有可能WindowsXP默认开启了节电模式,致使USB 接口供电不足,使USB接口间歇性失灵。右击我的电脑/属性/硬件/设备管理器,双击“通用串行总线控制器”会到好几个“USB Root Hub”双击任意一个,打开属性对话框,切换到“电源管理”选项卡,去除“允许计

算机关闭这个设备以节约电源”前的勾选,点击确定返回,依次将每个USB RootHub的属性都修改完后重新启动电脑。USB设备就能恢复稳定运行了,频率尽量设低一些。 如果是系统或系统自带的驱动的原因,可以按下面方法修复一下。 1、开机按F8进入安全模式后在退出,选重启或关机在开机,就可以进入正常模式(修复注册表)。 2、如果故障依旧,请你用系统自带的系统还原,还原到你没有出现这次故障的时候修复(如果正常模式恢复失败,请开机按F8进入到安全模式中使用系统还原)。 3、如果故障依旧,使用系统盘修复,打开命令提示符输入SFC /SCANNOW 回车(SFC和/之间有一个空格),插入原装系统盘修复系统,系统会自动对比修复的。 4、如果故障依旧,在BIOS中设置光驱为第一启动设备插入系统安装盘按R键选择“修复安装”即可。 5、如果故障依旧,建议重装操作系统。

网络中数据传输过程的分析

网络中数据传输过程的分析 我们每天都在使用互联网,我们电脑上的数据是怎么样通过互联网传输到到另外的一台电脑上的呢?把自己的理解写一下,可能有很多细节还没有能的很清楚!希望在以后可以使之更加的完善!有不对的地方还请指正. 我们知道现在的互联网中使用的TCP/IP协议是基于,OSI(开放系统互联)的七层参考模型的,(虽然不是完全符合)从上到下分别为应用层表示层会话层传输层网络层数据链路层和物理层。其中数据链路层又可是分为两个子层分别为逻辑链路控制层(Logic Link Control,LLC )和介质访问控制层((Media Access Control,MAC )也就是平常说的MAC层。LLC对两个节点中的链路进行初始化,防止连接中断,保持可靠的通信。MAC层用来检验包含在每个桢中的地址信息。在下面会分析到。还要明白一点路由器是在网路层的,而网卡在数据链路层。 我们知道,ARP(Address Resolution Protocol,地址转换协议)被当作底层协议,用于IP地址到物理地址的转换。在以太网中,所有对IP的访问最终都转化为对网卡MAC地址的访问。如果主机A的ARP列表中,到主机B的IP地址与MAC地址对应不正确,由A发往B数据包就会发向错误的MAC地址,当然无法顺利到达B,结果是A与B根本不能进行通信。 首先我们分析一下在同一个网段的情况。假设有两台电脑分别命名为A和B,A需要相B发送数据的话,A主机首先把目标设备B的IP地址与自己的子网掩码进行“与”操作,以判断目标设备与自己是否位于同一网段内。如果目标设备在同一网段内,并且A没有获得与目标设备B的IP地址相对应的MAC地址信息,则源设备(A)以第二层广播的形式(目标MAC地址为全1)发送ARP请求报文,在ARP请求报文中包含了源设备(A)与目标设备(B)的IP地址。同一网段中的所有其他设备都可以收到并分析这个ARP请求报文,如果某设备发现报文中的目标IP地址与自己的IP地址相同,则它向源设备发回ARP响应报文,通过该报文使源设备获得目标设备的MAC地址信息。为了减少广播量,网络设备通过ARP表在缓存中保存IP与MAC地址的映射信息。在一次ARP 的请求与响应过程中,通信双方都把对方的MAC地址与IP地址的对应关系保存在各自的ARP表中,以在后续的通信中使用。ARP表使用老化机制,删除在一段时间内没有使用过的IP与MAC地址的映射关系。一个最基本的网络拓扑结构:

USB2.0协议中文版

USB 2.0 规范 USB 体系简介 USB 是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度可达480Mb/S。USB 支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,设备最多可以获得500mA 的电流。USB2.0 被设计成为向下兼容的模式,当有全速(USB 1.1)或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它们。一条USB 总线上,可达到的最高传输速度等级由该总线上最慢的“设备”决定,该设备包括主机、HUB 以及USB 功能设备。 USB 体系包括“主机”、“设备”以及“物理连接”三个部分。其中主机是一个提供USB 接口及接口管理能力的硬件、软件及固件的复合体,可以是PC,也可以是OTG 设备。一个USB 系统中仅有一个USB 主机;设备包括USB 功能设备和USB HUB,最多支持127 个设备;物理连接即指的是USB 的传输线。在USB 2.0 系统中,要求使用屏蔽的双绞线。 一个U S B H O S T最多可以同时支持128个地址,地址0作为默认地址,只在设备枚举期间临时使用,而不能被分配给任何一个设备,因此一个U S B H O S T最多可以同时支持127个地址,如果一个设备只占用一个地址,那么可最多支持127个U S B设备。在实际的U S B体系中,如果要连接127个U S B 设备,必须要使用U S B H U B,而U S B H U B也是需要占用地址的,所以实际可支持的U S B功能设备的数量将小于127。 USB 体系采用分层的星型拓扑来连接所有USB 设备,如下图所示: 以HOST-ROOT HUB Array为起点,最多支持7 层 (Tier),也就是说任何一个 USB 系统中最多可以允许5 个USB HUB 级联。一个复 合设备(Compound Device) 将同时占据两层或更多的 层。 R OO T H U B是一个特殊的U S B H U B,它集成在主机控制器里,不占用地址。R OO T H U B不但实现了普通U S B H U B的功能,还包括其他一些功能,具体在增强型主机控制器的庂范中有详细的介绍。 “复合设备(C o m p o u n d D e v i c e)”可以占用多个地址。所谓复合设备其实就是把多个功能设备通过内置的U S B H U B组合而成的设备,比如带录音话筒的U S B摄像头等。 USB 采用轮询的广播机制传输数据,所有的传输都由主机发起,任何时刻整个USB 体

U盘无法识别的解决方法

U盘无法识别的解决方法 如果U盘插入电脑,电脑提示“无法识别的设备”,说明U盘的供电电路正常。接着检查U盘的USB接口电路故障。下面是jy135收集的U盘无法识别的解决方法,欢迎阅读。 USB不被电脑识别,如果是系统或系统自带的驱动的原因,可以按下面方法修复一下。 1、开机按F8进入安全模式后在退出,选重启或关机在开机,就可以进入正常模式(修复注册表)。 2、如果故障依旧,请你用系统自带的系统还原,还原到你没有出现这次故障的时候修复(如果正常模式恢复失败,请开机按F8进入到安全模式中使用系统还原)。 3、如果故障依旧,使用系统盘修复,打开命令提示符输入SFC /SCANNOW 回车(SFC和/之间有一个空格),插入原装系统盘修复系统,系统会自动对比修复的。 4、如果故障依旧,在BIOS中设置光驱为第一启动设备插入系统安装盘按R键选择“修复安装”即可。 5、如果故障依旧,建议重装操作系统。 U盘插入电脑,电脑提示“无法识别的设备”故障诊断方法如下。 第1步:如果U盘插入电脑,电脑提示“无法识别的设备”,说明U盘的供电电路正常。接着检查U盘的USB接口电路故障。

第2步:如果U盘的USB接口电路正常,则可能是时钟电路有故障(U盘的时钟频率和电脑不能同步所致)。接着检测时钟电路中的晶振和谐振电容。 第3步:如果时钟电路正常,则是主控芯片工作不良。检测主控芯片的供电,如果供电正常,则是主控芯片损坏,更换即可。 另外还有一种原因,就是USB接口供电不足,可能是USB接口连接的外设太多造成供电不足。 建议使用带电的USBHUB或者使用USB转PS/2的转接头。还有可能WindowsXP默认开启了节电模式,致使USB接口供电不足,使USB接口间歇性失灵。右击我的电脑/属性/硬件/设备管理器,双击“通用串行总线控制器”会到好几个“USB Root Hub”双击任意一个,打开属性对话框,切换到“电源管理”选项卡,去除“允许计算机关闭这个设备以节约电源”前的勾选,点击确定返回,依次将每个USB RootHub的属性都修改完后重新启动电脑。USB设备就能恢复稳定运行了,频率尽量设低一些。 如果是有盘符而没有显示出来的,解决方法:右击我的电脑/ 管理/存储/磁盘管理,然后右击“可移动磁盘”图标”单击快捷菜单中的“更改驱动器和路径”选项,并在随后的界面中单击“添加”按钮,接下来选中“指派驱动器号”,同时从该选项旁边的下拉列表中选择合适的盘符,在单击确定即可。最后打开我的电脑,就能看到移动硬盘的盘符了。

USB设备无法识别 unknown device

USB设备无法识别或者 unknown device 的故障解决 2008年09月08日星期一 15:10 插入U盘,出现“USB设备无法识别”等提示的解决办法 2008年07月08日星期二 14:12 故障现象: 插入1G以上大容量U盘,出现“USB设备无法识别”或者“unknown device”提示,在我电脑中无法显示U盘盘符。 故障原因: 1、主要是由于电脑主板供电不稳定或者对 USB2.0 支持性不好。例如:Intel(R) 82801 DB、Intel(R) 82801 EB、SIS 7001等芯片组的主板。 2、连接电脑和打印机的 USB 数据线如果过长或者损坏了,也会出现“unknown device”的提示信息。建议 USB 数据线长度不要超过 2 米。 解决方法: 1、在设备管理器的通用串行总线控制器中停用 USB2.0 的设备。 2、在 CMOS 中禁用 USB2.0 Controller。 3、如果确认是 USB 数据线导致的故障,可以更换符合标准的数据线。 通用串行总线控制器中停用 USB2.0 的设备,操作方法如下: 1、桌面上“我的电脑”右键点击属性,然后依次点击“硬件”,“设备管理器”,“通用串行总线控制器”,在 USB2 的设备上右键点击停用。如图 1 “通用串行总线控制器”所示: 1.图 1: 通用串行总线控制器

2、禁用 USB2.0 设备后,再重新把数据线连接上电脑 USB 端口应该可以正确的识别打印机端口。 CMOS 中禁用 USB2.0 Controller,操作方法如下: 1、开机后,按 F10 键或者 DEL 键进入 CMOS,如图 2 “CMOS” 所示: 1.图 2: CMOS

USB四种传输方式

USB定义了4中传输类型 控制传输:可靠的、非周期的、由主机软件发起的请求或者回应的传输,通常用于命令事物和状态事物。 同步传输:在主机与设备之间的周期性的、连续的通信,一般用于传输与时间相关的信息。这种类型保留了将时间概念包含于数据总的能力。但这并不意味着传输这样的数据的时间总是很重要,基传输并不一定很紧急。 中断传输:小规模数据的、低速的、固定延迟的传输。 批量传输:非周期的、打包的、可靠地传输。一般用于传输那些可以利用任何带宽,以及在没有可用带宽时,可以容忍等待的数据。 控制传输: 控制传输允许访问一个设备的不同部分。控制传输用于支持在客户软件和他的应用之间关于设置信息、命令信息、状态信息的传输。控制传输由以下几个事物组成: a.建立联系,把请求信息从主机传到他的应用设备; b.零个或多个数据传输事物,按照a事物中致命的方向传输数据; c.状态信息回传,将状态信息从应用设备传到主机。 Setup包的数据格式属于一个命令集,这个集合能保证主机和设备之间正常通信。这个格式允许一些销售商对设备命令进行扩展。Setup包后的数据应具有USB定义的格式,除非这个数据是销售商提供的信息,回传的状态信息荏苒具有USB定义的格式。 控制传输使用的是消息通道上的双向信息流。所以,一旦一个控制通道被确认之后,这个通道就试用了具有某个端点号的两个端点,两个断电,一个输入,一个输出。 控制传输的端点决定了他所能接收或发送的最大数据静净负荷区长度。Setup后的所有数据包都要遵守这个约定,这个约定是针对这些数据包中的数据净负荷区的,不包括包中的协议要求的额外信息。 对于缺省控制通道的最大数据区长度,USB系统软件要从设备描述器的头8个字节中读出,设备将这8个字节放在一个包中发出,其中7个字节包含了缺省通道的wMaxPackSize。对其他的控制端点来说,USB系统软件在他们被设置后,获得此长度,然后USB系统软件就会保证数据净负荷区不会超长。另外,主机总是认为数据净负荷区的最大长度至少为8. 当端点做了两件事时,可以认为控制传输的数据阶段接收:

C# 图片数据流的传送方法

C# 图片数据流的传送方法 2009-07-15 16:57 //----引入必要的命名空间 using System.IO; using System.Drawing.Imaging; //----代码部分----// private byte[] photo;//公用缓冲区 public string SourFilePath;//源图片文件路径 public string ObjFilePath;//目标图片路径 public int FileToStream()//文件到流的转换 { Image img = new Bitmap(SourFilePath); MemoryStream stream = new MemoryStream(); img.Save(stream, ImageFormat.Bmp); BinaryReader br = new BinaryReader(stream); photo = stream.ToArray(); stream.Close(); return0; } public Image ShowPic()//根据流显图 { byte[] bytes = photo; MemoryStream ms = new MemoryStream(bytes); ms.Position = 0; Image img = Image.FromStream(ms); ms.Close(); return img; } public int StreamToFile()//反向转换 { byte[] bytes = photo; FileStream fs = new FileStream(ObjFilePath, FileMode.Create, FileAccess.Write); fs.Write(bytes, 0, bytes.Length); fs.Flush(); fs.Close(); return0; }

相关文档
最新文档