ImageVerifierCode 换一换
格式:DOCX , 页数:63 ,大小:273.25KB ,
资源ID:27101091      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27101091.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(虚拟仪器软件开发平台LabVIEW教程.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

虚拟仪器软件开发平台LabVIEW教程.docx

1、虚拟仪器软件开发平台LabVIEW教程虚拟仪器软件开发平台LabVIEW教程智能仪器课程组2002年3月第一课 LabVIEW概述第一节 虚拟仪器(VI)的概念使用LabVIEW开发平台编制的程序称为虚拟仪器程序,简称为VI。VI包括三个部分:程序前面板、框图程序和图标/连接器。程序前面板用于设置输入数值和观察输出量,用于模拟真实仪表的前面板。在程序前面板上,输入量被称为控制(Controls),输出量被称为显示(Indicators)。控制和显示是以各种图标形式出现在前面板上,如旋钮、开关、按钮、图表、图形等,这使这得前面板直观易懂。下面是一个温度计程序(Thermometer VI)的前面

2、板。每一个程序前面板都对应着一段框图程序。框图程序用LabVIEW图形编程语言编写,可以把它理解成传统程序的源代码。框图程序由端口、节点、图框和连线构成。其中端口被用来同程序前面板的控制和显示传递数据,节点被用来实现函数和功能调用,图框被用来实现结构化程序控制命令,而连线代表程序执行过程中的数据流,定义了框图内的数据流动方向。上述温度计程序(Thermometer VI)的框图程序如下:图标/连接器是子VI被其它VI调用的接口。图标是子VI在其他程序框图中被调用的节点表现形式;而连接器则表示节点数据的输入/输出口,就象函数的参数。用户必须指定连接器端口与前面板的控制和显示一一对应。下面图示为温

3、度计程序(Thermometer VI)的图标和连接器。连接器一般情况下隐含不显示,除非用户选择打开观察它。LabVIEW的强大功能归因于它的层次化结构,用户可以把创建的VI程序当作子程序调用,以创建更复杂的程序,而这种调用的层次是没有限制的。举一个例子,我们把前面创建的温度计程序(Thermometer VI)作为一个子程序用在当前新建程序里,当前程序的前面板如下图所示,先前的温度计子程序用于采集数据,而当前的程序用于显示温度曲线,并在前面板上设定测量次数和每次测量间隔的延时。当前程序的框图如下图所示,它把温度计子程序放置在一个FOR循环里,每次循环过程采集一次测量结果,当循环执行了设定的次

4、数后,程序把采集的数据送到前面板的图表上显示。LabVIEW这种创建和调用子程序的方法,使创建的程序结构模块化,更易于调试、理解和维护。第二节 LabVIEW的操作模板LabVIEW具有多个图形化的操作模板,用于创建和运行程序。这些操作模板可以随意在屏幕上移动,并可以放置在屏幕的任意位置。操纵模板共有三类,为工具(Tools)模板、控制(Controls)模板和功能(Functions)模板。工具模板(Tools Palette)工具模板为编程者提供了各种用于创建、修改和调试VI程序的工具。如果该模板没有出现,则可以在Windows菜单下选择Show Tools Palette命令以显示该模板

5、。当从模板内选择了任一种工具后,鼠标箭头就会变成该工具相应的形状。当从Windows菜单下选择了Show Help Window功能后,把工具模板内选定的任一种工具光标放在框图程序的子程序(Sub VI)或图标上,就会显示相应的帮助信息。工具图标有如下几种:操作工具:使用该工具来操作前面板的控制和显示。使用它向数字或字符串控制中键入值时,工具会变成标签工具的形状。选择工具:用于选择、移动或改变对象的大小。当它用于改变对象的连框大小时,会变成相应形状。标签工具:用于输入标签文本或者创建自由标签。当创建自由标签时它会变成相应形状。连线工具:用于在框图程序上连接对象。如果联机帮助的窗口被打开时,把该

6、工具放在任一条连线上,就会显示相应的数据类型。对象弹出菜单工具:用左鼠标键可以弹出对象的弹出式菜单。漫游工具:使用该工具就可以不需要使用滚动条而在窗口中漫游。断点工具:使用该工具在VI的框图对象上设置断点。探针工具:可以在框图程序内的数据流线上设置探针。程序调试员可以通过控针窗口来观察该数据流线上的数据变化状况。颜色提取工具:使用该工具来提取颜色用于编辑其他的对象。颜色工具:用来给对象定义颜色。它也显示出对象的前景色和背景色。与上述工具模板不同,控制和功能模板只显示顶层子模板的图标。在这些顶层子模板中包含许多不同的控制或功能子模板。通过这些控制或功能子模板可以找到创建程序所需的面板对象和框图对

7、象。用鼠标点击顶层子模板图标就可以展开对应的控制或功能子模板,只需按下控制或功能子模板左上角的大头针就可以把对这个子模板变成浮动板留在屏幕上。控制模板(Controls Palette)用控制模板可以给前面板添加输入控制和输出显示。每个图标代表一个子模板。如果控制模板不显示,可以用Windows菜单的Show Controls Palette功能打开它,也可以在前面板的空白处,点击鼠标右键,以弹出控制模板。注:只有当打开前面板窗口时才能调用控制模板。控制模板如左图所示,它包括如图所示的几个子模板。数值子模板:包含数值的控制和显示。布尔值子模块:逻辑数值的控制和显示。字符串子模板:字符串和表格的

8、控制和显示。列表和环(Ring)子模板:菜单环和列表栏的控制和显示。数组和群子模板:复合型数据类型的控制和显示。图形子模板:显示数据结果的趋势图和曲线图。路径和参考名(Refnum)子模板:文件路径和各种标识的控制和显示。控件容器库子模板:用于操作OLE、ActiveX等功能。对话框子模板:用于输入对话框的显示控制。修饰子模板:用于给前面板进行装饰的各种图形对象。用户自定义的控制和显示。调用存储在文件中的控制和显示的接口。功能模板(Functions Palette)功能模板是创建框图程序的工具。该模板上的每一个顶层图标都表示一个子模板。若功能模板不出现,则可以用Windows菜单下的Show

9、 Functions Palette功能打开它,也可以在框图程序窗口的空白处点击鼠标右键以弹出功能模板。注:只有打开了框图程序窗口,才能出现功能模板。功能模板如下图所示。结构子模板:包括程序控制结构命令,例如循环控制等,以及全局变量和局部变量。数值运算子模板:包括各种常用的数值运算符,如+、-等;以及各种常见的数值运算式,如+1运算;还包括数制转换、三角函数、对数、复数等运算,以及各种数值常数。布尔逻辑子模板:包括各种逻辑运算符以及布尔常数。字符串运算子模板:包含各种字符串操作函数、数值与字符串之间的转换函数,以及字符(串)常数等。数组子模板:包括数组运算函数、数组转换函数,以及常数数组等。群

10、子模板。包括群的处理函数,以及群常数等。这里的群相当于C语言中的结构。比较子模板:包括各种比较运算函数,如大于、小于、等于。时间和对话框子模板:包括对话框窗口、时间和出错处理函数等。文件输入/输出子模板:包括处理文件输入/输出的程序和函数。仪器控制子模板:包括GPIB(488、488.2)、串行、VXI仪器控制的程序和函数,以及VISA的操作功能函数。仪器驱动程序库:用于装入各种仪器驱动程序。数据采集子模板:包括数据采集硬件的驱动程序,以及信号调理所需的各种功能模块。信号处理子模板:包括信号发生、时域及频域分析功能模块。数学模型子模块:包括统计、曲线拟合、公式框节点等功能模块,以及数值微分、积

11、分等数值计算工具模块。图形与声音子模块:包括3D、OpenGL、声音播放等功能模块。通讯子模板:包括TCP、DDE、ActiveX和OLE等功能的处理模块。应用程序控制子模块:包括动态调用VI、标准可执行程序的功能函数。底层接口子模块:包括调用动态连接库和CIN节点等功能的处理模块。文档生成子模板。示教课程子模板:包括LabVIEW示教程序。用户自定义的子VI模板。 “选择VI子程序”子模板:包括一个对话框,可以选择一个VI程序作为子程序(SUB VI)插入当前程序中。其它几个子模板是LabVIEW的附加Toolkit安装上去的。在LabVIEW完全版中不包括这些子模板。第三节 创建一个VI程

12、序请记住,VI程序具有三个要素:前面板、框图程序和图标/连接器。我们将在练习1-1中讨论图标/连接器。1. 前面板使用输入控制和输出显示来构成前面板。控制是用户输入数据到程序的接口。而显示是输出程序产生的数据接口。控制和显示有许多种类,可以从控制模板的各个子模板中选取。两种最常用的前面板对象是数字控制和数字显示。若想要在数字控制中输入或修改数值,你只需要用操作工具(见工具模板)点击控制部件和增减按钮,或者用操作工具或标签工具双击数值栏进行输入数值修改。2. 框图程序框图程序是由节点、端点、图框和连线四种元素构成的。节点类似于文本语言程序的语句、函数或者子程序。LabVIEW有二种节点类型-函数

13、节点和子VI节点。两者的区别在于:函数节点是LabVIEW以编译好了的机器代码供用户使用的,而子VI节点是以图形语言形式提供给用户的。用户可以访问和修改任一子VI节点的代码,但无法对函数节点进行修改。上面的框图程序所示的VI程序有两个功能函数节点,一个函数使两个数值相加,另一个函数使两数相减。端点是只有一路输入/输出,且方向固定的节点。LabVIEW有三类端点-前面板对象端点、全局与局部变量端点和常量端点。对象端点是数据在框图程序部分和前面板之间传输的接口。一般来说,一个VI的前面板上的对象(控制或显示)都在框图中有一个对象端点与之一一对应。当在前面板创建或删除面板对象时,可以自动创建或删除相

14、应的对象端点。控制对象对应的端点在框图中是用粗框框住的,如例子中的A和B端点。它们只能在VI程序框图中作为数据流源点。显示对象对应的端点在框图中是用细框框住的。如例子中的A+B和A-B端点。它们只能在VI程序框图中作为数据流终点。常量端点永远只能在VI程序框图中作为数据流源点。图框是LabVIEW实现程序结构控制命令的图形表示。如循环控制、条件分支控制和顺序控制等,编程人员可以使用它们控制VI程序的执行方式。代码接口节点(CIN)是框图程序与用户提供的C语言文本程序的接口。连线是端口间的数据通道。它们类似于普通程序中的变量。数据是单向流动的,从源端口向一个或多个目的端口流动。不同的线型代表不同

15、的数据类型。在彩显上,每种数据类型还以不同的颜色予以强调。下面是一些常用数据类型所对应的线型和颜色:整 形 数兰色浮点数 橙色逻辑量 绿色字符串 粉色文件路径 青色当需要连接两个端点时,在第一个端点上点击连线工具(从工具模板栏调用),然后移动到另一个端点,再点击第二个端点。端点的先后次序不影响数据流动的方向。当把连线工具放在端点上时,该端点区域将会闪烁,表示连线将会接通该端点。当把连线工具从一个端口接到另一个端口时,不需要按住鼠标键。当需要连线转弯时,点击一次鼠标键,即可以正交垂直方向地弯曲连线,按空格键可以改变转角的方向。3. 快速提示:接线头是为了帮助正确连接端口的连线。当把连线工具放到端

16、口上,接线头就会弹出。接线头还有一个黄色小标识框,显示该端口的名字。从框图程序窗口创建前面板对象用选择和连线工具,你都可以用鼠标右键点击任一节点和端点,然后从弹出菜单中选择“创建常数”,“创建控制”,或“创建显示”等命令。LabVIEW会自动地在被创建的端点与所点击对象之间接好连线。4. 数据流编程控制VI程序的运行方式叫做“数据流”。对一个节点而言,只有当它的所有输入端口上的数据都成为有效数据时,它才能被执行。当节点程序运行完毕后,它把结果数据送给所有的输出端口,使之成为有效数据。并且数据很快从源送到目的端口。如左图所示,这个VI程序把两个输入数值相乘,再把乘积减去50.0。这个程序中,框图

17、程序从左往右执行,这个执行次序不是由于对象的摆放位置,而是由于相减运算函数的一个输入量是相乘函数的运算结果,它只有当相乘运算完成并把结果送到减运算的输入口后才能继续下去。请记住,一个节点(函数)只有当它所有的输入端的数据都成为有效数据后才能被执行,而且只有当它执行完成后,它的所有输出端口上的数据才成为有效。再看另一个程序(见右图),你认为哪一个节点函数将先执行 是乘法还是除法?在这个例子中,我们无法知道哪一个节点函数首先执行,因为所有输入量几乎同时到达。对于这样一种相互独立的数据流程,如果又必须明确指定节点执行的先后次序,就必须使用顺序(Sequence)结构来明确执行次序。第四节 程序调试技

18、术5. 找出语法错误如果一个VI程序存在语法错误,则在面板工具条上的运行按钮将会变成一个折断的箭头,表示程序不能被执行。这时这个按钮被称作错误列表。点击它,则LabVIEW弹出错误清单窗口,点击其中任何一个所列出的错误,选用Find功能,则出错的对象或端口就会变成高亮。6. 设置执行程序高亮在LabVIEW的工具条上有一个画着灯泡的按钮,这个按钮叫做“高亮执行”按钮上。点击这个按钮使该按钮图标变成高亮形式,再点击运行按钮,VI程序就以较慢的速度运行,没有被执行的代码灰色显示,执行后的代码高亮显示,并显示数据流线上的数据值。这样,你就可以在根据数据的流动状态跟踪程序的执行。7. 断点与单步执行为

19、了查找程序中的逻辑错误,你也许希望框图程序一个节点一个节点地执行。使用断点工具可以在程序的某一地点中止程序执行,用探针或者单步方式查看数据。使用断点工具时,点击你希望设置或者清除断点的地方。断点的显示对于节点或者图框表示为红框,对于连线表示为红点。当VI程序运行到断点被设置处,程序被暂停在将要执行的节点,以闪烁表示。按下单步执行按钮,闪烁的节点被执行,下一个将要执行的节点变为闪烁,指示它将被执行。你也可以点击暂停按钮,这样程序将连续执行直到下一个断点。8. 探针你可以用探针工具来查看当框图程序流经某一根连接线时的数据值。从Tools工具模板选择探针工具,再用鼠标左建点击你希望放置探针的连接线。

20、这时显示器上会出现一个探针显示窗口。该窗口总是被显示在前面板窗口或框图窗口的上面。在框图中使用选择工具或连线工具,在连线上点击鼠标右键,在连线的弹出式菜单中选择“探针”命令,同样可以为该连线加上一个探针。第五节 练习1-1目的:创建一个VI程序,以便以后作为子VI程序使用。创建一个VI程序模拟温度测量。假设传感器输出电压与温度成正比。例如,当温度为70F时,传感器输出电压为0.7V。本程序也可以用摄氏温度来代替华氏温度显示。本程序用软件代替了DAQ数据采集卡。使用Demo Read Voltage子程序来仿真电压测量,然后把所测得的电压值转换成摄氏或华氏温度读数。前面板:1. 用File菜单的

21、New选项打开一个新的前面板窗口。2. 把温度计指示部件放入前面板窗口。a. 在前面板窗口的空白处点击鼠标键,然后从弹出的Numeric子模板中选择Thermometer。b. 在高亮的文本框中输入“温度计”,再点击鼠标键按钮。3. 重新设定温度计的标尺范围为0.0到100.0。使用标签工具A,双击温度计标尺的10.0,输入100.0,再点击鼠标键或者工具栏中的V按钮。4. 在前面板窗口中放入竖直开关控制。a. 在面板窗口的空白处点击鼠标键,然后弹出的Boolean子模板中选择Vertical Switch,在文本框中输入“温度值单位”,再点击鼠标键或者工具栏中的V按钮。b. 使用标签工具A,

22、在开关的“条件真”(true)位置旁边输入自由标签“摄氏”,再在“条件假”(false)位置旁边输入自由标签“华氏”。框图程序:1. 从Windows菜单下选择Show Diagram功能打开框图程序窗口。2. 点击框图程序窗口的空白处,弹出功能模板,从弹出的菜单中选择所需的对象。本程序用到下面的对象:Demo Read Voltage VI程序(Tutorial子模板)。在本例中,该程序模拟从DAQ卡的0通道读取电压值。Multiply(乘法)功能(Numeric子模板)。在本例中,将读取电压值乘以100.00,以获得华氏温度。Subtract(减法)功能(Numeric子模板)。在本例中,

23、从华氏温度中减去32.0,以转换成摄氏温度。Divide(除法)功能(Numeric子模板)。在本例中,把相减的结果除以1.8以转换成摄氏温度。Select(选择)功能(Comparison子模板)。取决于温标选择开关的值。该功能输出华氏温度(当选择开关为false)或者摄氏温度(选择开关为True)数值。数值常数。用连线工具,点击你希望连接一个数值常数的对象,并选择Create Constant功能。若要修改常数值,用标签工具双点数值,再写入新的数值。字符串常量。用连线工具,点击你希望连接字符串常量的对象,再选择Create Constant功能。要输入字符串,用标签工具双击字符串,再输入新

24、的字符串。3. 使用移位工具(Positioning tool),把图标移至图示的位置,再用连线工具连接起来。请记住,如果要显示图标接线端口,则点击图标,再从弹出菜单中选择Show Terminals功能。也可以从Help菜单中选择Show Help功能以打开帮助信息窗口。Demo Read Voltage VI子程序模拟从数据采集卡的0通道读取电压,我们的程序再将读数乘以100.0转换成华氏温度读 数,或者再把华氏温度转换成摄氏温度。4. 选择前面板窗口,使之变成当前窗口,并运行VI程序。点击连续运行按钮,便程序运行于连续运行模式。5. 再点击连续运行按钮,关闭连续运行模式。6. 创建图标T

25、emp:此图标可以将现程序作为子程序在其他程序中调用。创建方法如下:a. 在面板窗口的右上角的图标框中点击鼠标,从弹出菜单中选择Edit Icon功能。b. 双点选择工具,并按下Delete键,消除缺省的图标图案。c. 用画图工具画出温度计的图标。注意,在用鼠标画线时按下键,则可以画出水平或垂直方向的连线。使用文本工具写入文字,双击文本工具把字体换成Small Font。当图标创建完成后,点击OK以关闭图标编辑。生成的图标在面板窗口的右上角。7. 创建联接器端口:a. 点击右上角的图标面板,从弹出菜单中选择Show Connector功能。LabVIEW将会根据控制和显示的数量选择一种联接器端

26、口模式。在本例中,只有两个端口,一个是竖直开关,另一个是温度指示。b. 把联接器端口定义给开关和温度指示。c. 使用连线工具,在左边的联接器端口框内按鼠标键,则端口将会变黑。再点击开关控制件,一个闪烁的虚线框将包围住该开关。d. 现在再点击右边的联接器端口框,使它变黑。再点击温度指示部件,一个闪烁的虚线框将包围住温度指示部件,这即表示着右边的联接器端口对应温度指示部件的数据输入。e. 如果再点击空白外,则虚线框将消失,而前面所选择的联接器端口将变暗,表示你已经将对象部件定义到各个联接器端口。注意:LabVIEW的惯例是前面板上控制的联接器端口放在图标的接线面板的左边,而显示的联接器端口放在图标

27、的接线面板的右边。也就是说,图标的左边为输入端口而右边为输出端口。以后我们会讲到如何使用SubVI From Selection功能来创建子程序SubVI。8. 确认当前文件的程序库路径为Seminar.LLB,用文件菜单的SAVE功能保存上述文件,并将文件命名为Thermometer.Vi。现在,该程序已经编制完成了。它可以在其他程序中作为子程序来调用,在其它程序的框图窗口里,该温度计程序用前面创建的图标来表示。联接器端口的输入端用于选择温度单位,输出端用于输出温度值。9. 关闭该程序(练习1-1结束)第六节 把一个VI程序作为子VI程序调用在任意一个VI程序的框图窗口里,都可以把其他的VI

28、程序作为子程序调用,只要被调用VI程序定义了图标和联接器端口即可。用户使用功能模板的Select a VI来完成。当使用该功能时,将弹出一个对话框,用户可以输入文件名。一个子VI程序,相当于普通程序的子程序。节点相当于子程序调用。子程序节点并不是子程序本身,就象一般程序的子程序调用语句并不是子程序本身一样。如果在一个框图程序中,有几个相同的子程序节点,它就象多次调用相同的子程序。请注意,该子程序的拷贝并不会在内存中存储多次。第七节 练习1-2目的:使用一个条件循环结构和一个被测波形图表实时地采集数据。学员将创建一个VI程序,进行温度测量,并把结果在波形图表上显示。该VI程序使用我们前面创建的温

29、度计程序(Thermometer VI)作为子程序。前面板:1. 打开一个新的前面板窗口,在里面放一个竖直开关(在Boolean逻辑部件子模板),给该开关标注为“Enable”。你可以用该开关来开始/停止数据采集。2. 在前面板内再放置一个趋势图(Graph子模板中的Waveform Chart),标注为“温度历史趋势”。该图表将实时地显示温度值。3. 由于趋势图将它的图标注解plot自动地标注为“plot 0”,你可以用标注工具将其重新标注为“Temp”。4. 因为趋势图用于显示室内温度,需要对它的标尺进行重新定标。将Y轴的“10”改为“90”,而将“0.0”改为“20”。5. 此时暂时不要

30、创建模式转换开关,我们将尝试从框图程序窗口创建前面板的部件。框图程序:1. 打开框图程序窗口。2. 从结构(Structures)工具模板选择条件循环结构“While Loop”放入框图程序窗口,调整该条件循环框的大小,把先前从前面板创建的两个节点放入循环框内。条件循环结构是一种无限循环结构,只要条件满足,它就一直循环运行下去。在本例中,只要允许开关(Enable Switch)是ON状态,该VI程序就一直运行,采集温度测量值,并在图表上显示。3. 放入其它的框图程序对象。Thermometer VI,这个VI程序是你在上个练习中创建的,从Seminar.LLB中调出(从Select a VI

31、子模板)。4. 按照上图的框图程序连好线。5. 创建模式开关。把连线工具放在Thermometer VI的Mode输入端口上,按鼠标右键并选择Creat Control,这样就可以自动创建模式转换开关,并将它与Thermometer VI子程序相连线,再转换到前面板窗口,将模式转换开关的位置重新调整。6. 在前面板窗口,使用标注工具,双击模式开关的“OFF”标签,并把它转换成“华氏”,再把“ON”标签转换民“摄氏”。要转换开关状态,使用操作工具(Operating Tool)。7. 将模式开关设置为ON状态,运行该VI程序。8. 要停止数据采集,点击Enable开关,使其状态变为OFF,循环结束。9. 修改Enable开关缺省设置,使你运行VI程序时不必每次打开该开关。a. 若程序在运行状态,则关闭程序运行。b. 把开关设置为ON状态。c. 点击开关,从弹出菜单中选择Data OperationsMake Current Value Default选项,这将使ON状态变为缺省值。d. 再点击开关,从弹出菜单中选择Mechanical ActionLatch When Pressed选项。10. 运行该程序

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1