《USB数据传输驱动设计》8600字(论文)_第1页
《USB数据传输驱动设计》8600字(论文)_第2页
《USB数据传输驱动设计》8600字(论文)_第3页
《USB数据传输驱动设计》8600字(论文)_第4页
《USB数据传输驱动设计》8600字(论文)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

USB数据传输驱动设计目录TOC\o"1-3"\h\u6087一、绪论 一、绪论1.1研究背景和意义随着嵌入式芯片的制造工艺以及对信息处理技术的迅猛发展,处理器的数据处理速度也越来越快,数据采集装置所需要采集到的数据量也变得更加巨大,随之而来的是数据高速传输的瓶颈。近年来,数据采集技术领域普遍关注的问题主要从五个角度聚焦:通过改善采集系统的可靠性和传输速度、提高采集系统的总体性能、增强采集系统的可靠性和信号质量、提高系统的集成程度和减少生产费用。其中,提高数据采集系统的可靠性和传输速度在所有受到广泛关注的因素中,它们都占据最重要的位置。怎样才能使得数据采集系统将所收到的数据迅速、实时地向计算机传输并对其进行处理,这是当前数据采集技术领域应用者重点探讨的课题。为了达到更好地能够实现对单机数据快捷高效的实时传送,需要在整个系统中首先选择一条具有一定较高传输带宽的大型计算机数据总线。虽然高速视频串行数字传输系统总线时钟只能同时占有一个位宽,但由于高速串行总线中各个信号之间的数据交换并行性能和干扰较小,可以充分考虑应用到通过不断改善不同时钟的实际工作频率等各种优化措施来大大改善不同时钟间的传输速度,大大具有完全可以取代目前传统的高速并行数字传输总线模式的发展趋势,具有很广阔的技术应用性和发展推广空间。目前,数据信号采集处理系统中最常见的总线高速串行总线主要可以分为三类:PCIE总线,SATA总线及USB总线。这三种类型高速串行总线都是具有自己的技术特色:(1)PCIE总线PCIE是PCIExpress的缩写,由PCI总线发展而来。目前,PCIE总线已经发展到3.1版本,传输速率也从最初的132MB/s提升到10GB/s,具有传输带宽高,生产成本低等优点,得到了广泛应用。(2)

SATA总线:SATA总线技术主要是为了解决计算机和外置的存储器件之间的网络和数据传送瓶颈。2004年SATA接口第一次在电脑上得到了应用,其传输频率最高为3.2gb/s

。SATA

接口主要来自于一个硬盘设计方案,升级相对比较简易,而且其成本也相对较低,且它还具有一个由系统指示器引导和启动的特点。(3)USB总线:USB是UniversialSerial

Bus的英语缩写,中文名称为"通用串行总线"。USB接口作为一种极其便捷的电脑和网络通讯接口,自从诞生以来就以其特殊性和优点迅速被占据在电脑和网络通讯技术领域的主要地位。目前生产

USB接口芯片的工厂很多,而且使用范围最广的是美国

cypress

公司生产的各种通用

USB接口芯片。经过了几年的应用和发展,超高速

USB3.0接口式控制器的芯片也逐渐成熟,

cypress

公司自主开发的新一代

USB3.0外设控制器芯片

EZ

-

USB

fx3

(

fx3

)已经使得开发人员都可以轻松地为任何操作系统增加

USB

3.0的功能,可广泛应用于各种视频信号采集、图像信号采集、医学和成像装置等领域,极大程度上促进了

USB

总线接口在信息和数据采集方面的应用。1.2国内外研究现状数据采集这个新技术概念最早已经起源于上世纪50年代,随着当前我国现代电子信息和现代网络通信技术的不断迅猛发展,数据采集的应用领域也已经开始逐渐得到新的蓬勃发展,数据采集的应用频率早已经完全走进了gb/s的应用范围,出现的各种相关技术研究成果更是层出不穷。在众多的高速通用串行串口数据总线传输接口总线中,使其在串行数据采集系统模块中的表现显示出了强劲的发展趋势,己经逐步成熟发展出并成为目前串行数据采集系统模块中最常见的串行数据传输接口总线之一。第一个基于USB总线的最早发布版本协议是1994年11月11日我们刚刚发布的一个USB0.7总线芯片协议,然而因为我们缺少了一些相应的总线芯片设计制造商的专业帮助和技术支持,所以并未马上出现使它们迅速有效地被广泛应用。在1996年初,usb-if技术组织正式重新制定并再次推出了专门的全新USB1.0总线设计接口系统设计规范,在这些设计规范中明确地分别规定了低速传输模式(low-speed)的数据传输速率及其限制速度为1.5mb/s,USB设计技术才逐渐成熟;两年后该技术组织将新的USB1.0总线设计技术规范进行了重大升级,并再次提出了新USB1.1总线设计规范,这就可以使得总线全速(full-speed)的数据传送速度限制可以直接达到12mb/s。此时,USB总线连接技术才真正刚刚开始在我们这个家庭中已经得到了广泛地应用推广和广泛应用,但在一些方面也存在弊端,例如在存储方面没有安全认证,没有信息的审核计算。二、驱动程序设计2.1WDM驱动程序类型WDM(windowsdrivermodel)这个模型主要是由旧的Winnt3.51和新的Winnt4的两个核心,该模式是从设备系统驱动器应用程序模型演变而来。WDM主要性的改变之一就是在它增加了对设备即插就走应用、电源流量管理、windowsmanagementinterface(wmi)、设备应用接口的软件支持。wdm移动模型的主要设计目标,就是为了能够实现用户可以同时跨多个平台同时运行使用、更安全、更灵活、可以自动编制更简易的存在Windows移动设备及其驱动器中的应用程序。在WDM模型中,每个硬件设备至少应该包含两个驱动器:一个功能性驱动器和一个过滤性驱动器。一个设备也可以包含有一个过滤驱动器(filter

driver),用来改变标准的设备驱动器程序。这些服务于相同的设备所需要执行的驱动器程序构成了一个被称为设备堆栈的链表。如图1所示为WDM中设备对象和驱动。PDOFIDOFIDOIRPFDO上层过滤器驱动程序PDOFIDOFIDOIRPFDO上层过滤器驱动程序下层驱动程序总线驱动程序功能驱动程序总线接口驱动器应用程序同时可以向用户现有的多个i/o总线接口进行数据服务,例如iiieee1394。在ccwdm的基本设计定义中,一个虚拟总线就是这样一种总线设备,它通常可以被广泛用来与其他的各种用于物理、逻辑、虚拟和简化的总线设备交互相连。过滤驱动程序是一个可选项,当一个用户需要修改或者增加一些功能到一个设备、一类设备或一种总线时,就已经编写一个过滤驱动程序。一个USB键盘上层的过滤驱动程序能够被强制地进行一个附加的安全审核。功能驱动程序的组成功能系统驱动器的应用程序主要分为有两种类型功能驱动器(m)和微型功能驱动器(Minidriver)两个大部分形式构成。类驱动程序已经直接实现了某一类微型驱动程序设备的微型常规驱动操作,由美国微软公司免费提供,驱动程序的软件开发者甚至已经可以只通过直接编写非常小的微型驱动程序,去直接执行需要处理具体的驱动设备特定驱动类别的常规操作,而对于其他大量的微型常规设备操作,可以直接执行调用此类的微型驱动程序,这也可能正是微软WDM类驱动程序的主要技术优点之一。本文中我们所说的需要进行设计的一个驱动程序实际上本身就是一个超多功能驱动程序,它主要功能是将一个大型USB驱动程序和一个小型驱动程序(Minidriver)相互地直接结合在一起来,驱动一个带有USB驱动键盘的一个驱动程序。2.2设计方案及设计工具、环境选择2.2.1键盘驱动程序设计方案及设计工具键盘驱动器主要有很多种类型的设计和开发工具,除了需要使用

DDK进行开发之外,还需要使用

Windriver

,

Driverstudio

等其他开发工具进行开发。一般来说,使用封装得比较高层的软件和工具如图像类似于

Windriver

,开发时间看上去的周期相对比较短,也就变得更容易些,但是如果出了什么样的问题也就会变得更难进行调试。作为一个大学生的毕业设计,为了能够更深入地了解

windows

驱动模型,我们应该考虑选择采用

DDK进行开发。了解到键盘首先应该是一个

HID

设备,

Windows

系统则是将键盘当作一个

HID设备进行处理。因此,在我们开发一个键盘驱动的过程中,是在一个叫做

HID

Minidriver

的框架下来进行实现的,

HID类型的驱动中包含有一些

ioctl

(对于输入和输出的控制),我们需要做的就是必须要通过建立一个框架,并且把它们都填充好,以便可以实现对于驱动程序的完全控制。HID设备的传输类型传输类型数据传输特点版本控制传输IN少量无时间Windows98OUT中断传输IN少量无时间及时Windows98SEOUT2.2.2环境设置DDK是一种驱动程序的开发工具包,不同的应用程序操作系统都会有不同的版本,因为该论文所要求的驱动程序都是在

Windows

2000环境下,因此我们选择了

Windows

2000DDK

。安装了DDK

之后,需要把DDK

bin

目录直接加入到

vc

++的标签目录列表中,这样一些需要直接使用得到

DDK

的头文件的客户程序,就能够很方便地找到它们所需要用的标签和头文件。而不必再专门地拷贝。当创建新的Makefile项目时,VisualStudio缺省提供两个build配置“Win32Debug”和“Win32Release”,build命令行中的设置,根据程序所在驱动器位置的不同而需要改变。build命令行运行MakeDrvr.bat批处理文件,使用DDKROOT环境变量,如果在VisualStudio中请求一个完整的重新构造,把选项-nmake/a添加到这个命令行。设置输出文件名,使得在build菜单中显示正确的名字。2.3build目录与普通的生成程序不同,在Win10中,build分开保存自由构造版本和检查构造版本文件。如果TARGETPATH(目标路径)是OBJ,自由构造x86目标文件和最终的驱动程序进入OBJFRE\i386目录中,检查构造目标文件和驱动程序进入OBJCHK\i386目录中,在本论文的驱动程序中,使用的是后者。2.4访问USB键盘的实现键盘采用中断传输的方式传输键盘数据,每次传输8个字节数据,该8字节定义见下表,其中D0位是按键修饰符用于判断是否有特殊按键按下(Shift,ctrl,win等),普通按键从D2开始,支持6个普通按键同时按下。USB键盘按键数据协议D0D1D2D3D4D5D6D7Modefierkeys保留keycode1Keycode2Keycode3Keycode4Keycode5Keycode6使用Ndwindowsusb驱动程序编写接口,可以通过远程编写直接自动访问多个USB应用键盘的驱动程序,并且它们能够自动地直接读取从最初的一个USB驱动键盘输入的所有数据。并且它们还甚至可以自动地对每个键盘按钮做出手动控制,使得键盘按钮上的ieled闪光灯会自动发光或者光灯是自动熄灭。大多数版的windows驱动系统都已经是直接使用USBdi2.00版。USB驱动程序作为接口的一部分的ioctl列表如下:IOCTL_INTERNAL_USB_SUBMIT_URB发出URB停止等待结果IOCTL_INTERNAL_USB_RESET_PORT复位并重新启用一个端口IOCTL_INTERNAL_USB_GET_PORT_STATUS得到状态位:USBD_PORT_ENABLEDUSBD_PORT_CONNECTEDIOCTL_INTERNAL_USB_ENABLE_PORT重新启用一个被禁止的端口IOCTL_INTERNAL_USB_GET_HUB_COUNT集线器驱动程序部使用IOCTL_INTERNAL_USB_CYCLE_PORT 模拟设备拔出和再次插入IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO 集线器驱动程序部使用IOCTL_INTERNAL_USB_GET_HUB_NAME得到集线器驱动程序的设备名IOCTL_INTERNAL_USB_GET_BUS_INFO 获得USB总线信息IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME得到主机控制器设备名2.5使用USBDI访问USB键盘对一个USB键盘来说,它主要有这么几种功能,复位装置,配置器具,和阅读装置。在开始使用USB设备之前,第一件事情应该是首先需要手动复位其,以此确保其可用。然后由主机完成对设备的配置。配置装置的整个过程都跟其物理学特性密切相关。在USB键盘的配置中,我们需要首先做的工作就是通过获得对设备的配置描述符,然后寻找到接口,设备连线接口的每一根管道的最高传输量和数据包分别为8,创建一个对于配置设备的urb请求并且发送到USBdi。测试:USB硬件设备的驱动程序从来都是没有一个直接和您的硬件设备进行直接对话。其只是仅需要通过软件创建一个urb(USB模拟请求块)和将一个urb请求提交给模拟总线驱动程序软件即时就可以快速完成一个块在硬件上的运算。系统当中的一个例子文件名为USBd.sys,是一个可以接受urb的文件实体。将向量为usbd的远程调用函数变换转化成一个同时带有远程主机管理功能并以编号执行代码的函数irp_mj_internal_device_control的函数irp。然后指令usbd再次自动调度一个数据总线的运行时间,发出符合urb中所有条规定的指令运行。三、驱动程序实现3.1HID小驱动程序实现人工输入设备模型HID,是与其他用户的输入设备进行交互的一个标准化方法,

hid

设备通过使用不同的描述符来确定它的作用。报告描述符详尽地说明了其可以被产生的一个输入报告呵,一个可以被接受到的一个输出报告。hid驱动规则模型就是一种可以用来设计控制一台电脑和移动计算机中大多数的人工智能输入驱动装置和控制设备的一种抽象控制模型,例如,一个基于输入驱动装置的控制设备就同样可以被我们认为它就是普通的旧式手机键盘,汽车就是仿真车的方向盘或者说就是一台电脑的一个软启动键和开关控制按钮。系统HID类驱动程序做大多数的工作,它把它的硬件交互委托给HID小驱动程序,Windows包括一个用于USB总线上的设备的HID小驱动程序HidUsb.sys,有合适的HID接口类常量和HID描述符的新USB设备不需要新的小驱动程序。系统USBHID小驱动程序调用系统USB驱动程序USBD.sys,可选的通过所有低层USB过滤驱动程序,然后系统USB驱动程序访问设备。3.2配置设备USB各种设备在正常被准备投入使用以前,必须被自行安装配置,由系统主机自行派人负责维护安装。主机通常都可以是从ususb主机设备那里直接获取到一些配置功能信息之后再接过去自行判断这台主机设备到底具有什么样的配置功能。在本次驱动程序的包中usb.cpp存在文件目录中的函数usbselectconfiguration这个函数,是对于我们配置各种类型设备的一个重要过程,首先我们可能需要通过这个函数方式来来获得各种类型设备的一个配置管路描述符(详细参见参考usbgetconfigurationdescriptors这个函数),然后通过寻找发送到各种新的接口,设备所有各个接口的每一根总线管道最大可以传输的接口数据和封包总数的容量函数为8,创建可以配置各个设备的接口urb后把请求发送到终端usbdi(详见参考uscreateconfigurationrequestrs函数),配置好了设备,配置好了各个设备,配置好了各个设备成功后就已经可以同时运行保存好创建配置设备语言句柄和配置管路的一段段,以备将来日常应用。写数据操作就是为它设置一个放在键盘上的一个roled闪光灯,输出的数据格式也可能就是4.2.2节当中我们可能需要为它报告一个数据描述符和它输入的各种数据请求格式,首先我们可能需要为它分别创建一个_urb_control_vendor_or_class_request等等不同类型的u和urb数据请求。然后将每个请求发送到主机usbdi,usbdi主机进行文件处理,设置好主机键盘上的usled闪光灯,完成了pirp,通知每个请求者,键盘上的请求读和读及写两个操作程序即可顺利完成(详尽地详细说明了关于usb.cppi在文件处理中的写和usbsendoutputreport两个函数)。

driverentry的例程除了自己在这里之前需要的所做的一些准备工作之外,它还有个可能就是需要将其进行注册后成为一个hid小型的驱动程序,注册后的驱动示例可以编写成源代码将其列表显示如下:extern

"C"

NTSTATUS

DriverEntry(PDRIVER_OBJECT

DriverObject,

PUNICODE_STRING

RegistryPath)

{//例程的函数

DriverObject->DriverExtension->AddDevice

=

AddDevice;

DriverObject->DriverUnload

=

DriverUnload;

DriverObject->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL]

=

DispatchInternalControl;

DriverObject->MajorFunction[IRP_MJ_PNP]

=

DispatchPnp;

DriverObject->MajorFunction[IRP_MJ_POWER]

=

DispatchPower;//注册成为HIDMinidriver

HID_MINIDRIVER_REGISTRATION

reg;

RtlZeroMemory(®,

sizeof(reg));

reg.Revision

=

HID_REVISION;

reg.DriverObject

=

DriverObject;

reg.RegistryPath

=

RegistryPath;

reg.DeviceExtensionSize

=

sizeof(DEVICE_EXTENSION);

reg.DevicesArePolled

=

FALSE;

//

以具体硬件为准

return

HidRegisterMinidriver(®);

}测试:

四、硬件实现4.1固件系统实现固件固化是一种技术用于用来实现远程协调和自动监视等各种集成电路的重要功能。开发一个新的固件管理程序主要目的是为了能够使一个计算机内部芯片的硬件资源和外部数据接口控制电路都能够进行了正确的合理配置,从而可以使一个计算机芯片能够准确地对一个来自上位机的一个指令信号做出一个快速相应的指令响应,实现上位机与一个fpga->fx3->的一个高速数据包的传输。cypresse我公司为每个客户自身提供了完整的专业固件应用开发工具cyeclipse,它里面已经包含了一个客户相应的专业固件应用程序开发框架和丰富的clapi固件函数库。固件驱动程序开发框架主要内容包括了uarmrc启动接口代码,usb启动接口,uart启动接口,gpifiipi接口和其他各种通用接口的固件初始化编程代码。fx3的实例api应用函数库为软件开发人员自身提供了一套完整的专业固件系统编程开发解决模式方案,可以有效地用于帮助专业软件开发技术人员快速地设计搭建一个基于固件编程开发的应用环境。4.1.1固件程序的构成本文以基于wordpress系统而研究的固件编译器程序为主要组成部分:初始化代码和应用程序源代码。所有usb固件的初始化源代码都与usb硬盘软件的源代码一样,均被包含到固件编译器开发的框架中,即可以直接使用。应用程序的代码部分就是软件开发人员按照自己需要实现的各种功能而进行定制的代码组成部分,它们也是整个固件开发工作过程中最重要的组成部分。cyfx_gcc_startup.s文件这指的是一个简单的软件汇编代码文件,用于对在fx3系统中中其arm是内核的程序开始和然后运行两个过程,不再是需要任何人的修改就完全能够并且可直接在一个软件中进行使用;cyfxgpif_syncsf.h文件主要采用了xgpifiidesigner来对软件程序进行远程编译并然后所需要生成的状态机进行设计c为一个配置头的文件,包含了一个状态变化转换过程中的详尽信息,固件应用代码在软件开发时需要将它们添加进去并放入文件的列表中;cyfxslfifosync.h文件中包含了对于固件应用程序中一些常见的变量和对于结构体的定义,开发人员也可以在其中选择性地添加自己的环境变量;cyfxslfifousbdscr.c这个文件中已经包含了usb接口描述符的定义,其中对于数据结构需要严格地遵循安全的数据缓存策略;cyfxtx.c简单文件和它的makefile这两个简单文件都指的是由一个cypress的maeclipse自动管理软件使用框架自动管理制作而来生成的一个简单文件,不用你需要另外进行任何软件调试就完全可以直接自动投入使用。4.1.2USB3.0与USB2.0数据传输的对比出于兼容性两个方面的考虑,对于超高速adsl.0与高速usb2.0标准来说,均可以支持控制数据传输、中断数据传输、块数据传输和同步数据传输这四种兼容的传输方式,但二者在许多功能上还是有些区别的。usb3.0和usb2.0在进行数据传送时所需要体现的区别主要表现为接口类型、数据传送方式以及编码等两个方面。但是每每当usb3.0接口改为采用了usb3.0超高速网络进行高清数据无线传输的高速模式时,usb2.0接口中组合d+和分对d-间的线路将被停止使用,而超高清网速usb3.0接口的其中的所有差分对比如sstx+、sstx-和分对ssrx+、ssrx-等等的线路将被停止使用。usb3.0之所以现在能够大大提高并达到5gbps的视频数据并行传输处理效率,是因为它已经采用了一种完全的半双工的视频数据并行传输方式,而由于usb2.0为一种完全半双工的数据传输方式,仅有它支持单向的视频数据并行传输。这样,usb2.0的模拟数据总线传输速率就变得不一定也有可能非常快。4.2驱动程序实现对于所谓的嵌入式系统开发而言,由于没有一个可以使得它们普遍被应用的驱动器,所以这种驱动器的设计就会成为所谓的嵌入式系统研究和开发工作过程中的重要一个组成部分。USB驱动程序的设计开发及其工作在整个基于USB3.0传输控制模块的应用软件操作系统设计研究和软件开发中也都具有十分重要的指导意义。在诸如windows、linux、macos等多种不同操作系统下,上位机的系统软件结构无法直接通过使用虚拟硬件或者网络接口来来执行它的读/读和写数据操作。USB虚拟主机若要更理想真正做好对一台USB主机设备的维护操作,其中肯定少不了一些驱动程序。驱动器固件程序网络是用于连接USB位机固件驱动程序和连接上位机固件程序之间的重要网络桥梁。对于USB移动设备而言,每处理一台移动设备都会尽可能同时需要相当多的硬件驱动器。大部分的开发者在windows平台下自己开发的硬件驱动程序均是采用wdm驱动程序开发的模式,但由于传统的wdm驱动程序开发框架复杂,开发困难和周期较长,因此,本次研究课题选择了微软全新的wdf驱动程序开发框架,进行usb驱动程序的开发,可以有效地减少驱动程序开发所需的代码数量,从而节省费用降低了软件系统的开发难度。wdf驱动器按照形式上划分为两种。一种是内核层次高级,称为kmdf,驱动程序的形式被称为sys文件;另一个是用户层的,被称为umdf,驱动程序的形式是dll文件。最常见的为kmdf驱动器程序,它们都是在微软公司提供的visualstudio+wdk环境下即可实现usb驱动器的开发。本文设计的usb3.0驱动器应用程序就是在windows+visualstudio2010+wdk7600开发环境下自己开发出来的。主要是在visualstudio2010中完成了驱动程序源代码的编写,而在wdk7600中则是完成了对驱动器程序的源代码编译。代码如下:启动开发版后安装usb驱动insmodusb_kbd_drv.ko。makefile文件如下:->DeviceDrivers

->HIDDevices

<>USBHumanInterfaceDevice(fullHID)supportKERN_DIR=/home/ningjw/linux-3.4.2all: make-C$(KERN_DIR)M=`pwd`modulesclean: make-C$(KERN_DIR)M=`pwd`modulesclean rm-rfmodules.orderobj-m +=usb_kbd_drv.o驱动测试:Cat/dev/tty1//可以在LED屏幕上可能到按键值Hexdumpevent0//可以在终端看到事件上传

结束语本文基于常见的usb3.0高速串行式上位数据总线传输协议接口,分析出了usb3.0总线通讯协议的基本技术结构和其技术特点,阐述了基于usb3.0总线协议控制器的重要技术硬件和组成部分,研究了usb3.0传输管理系统的主要技术软件开发工作流程,针对其产品开发以及工作管理过程中所有现在可能仍然存在的一些软件关键技术和困难解决问题分别做了详尽的实例介绍以及剖析,给出了系统一套具体相应的软件解决办法,最终从系统固件、驱动和上位机三个环节方面综合设计架构得出了基于上位机数据传输系统模块的整个主要软件实现系统,并且详细给出了具体的软件实现工作流程。最后从该应用系统的主要基础软件功能和网络信息高速传输数据管理应用系统的硬件性能等各个方面分别展开了完整的软件测试和数据分析。测试的过程中主要采用的都是数据模拟测试解决方案,在实际应用的场合中也许会有一些误差。为了能够使自己研制的软件系统变得更加紧密而又贴切实际,通过运用fpga或cpld来产生必须要求的测

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论