您好,欢迎光临有路网!
虚拟仪器及应用
QQ咨询:
有路璐璐:

虚拟仪器及应用

  • 作者:曹锋 王海文 汪源
  • 出版社:华中科技大学出版社
  • ISBN:9787568028554
  • 出版日期:2018年03月01日
  • 页数:192
  • 定价:¥35.00
  • 分享领佣金
    手机购买
    城市
    店铺名称
    店主联系方式
    店铺售价
    库存
    店铺得分/总交易量
    发布时间
    操作

    新书比价

    网站名称
    书名
    售价
    优惠
    操作

    图书详情

    内容提要
    本书在讲解虚拟仪器理论基本知识的基础上,介绍了利用LabVIEW进行虚拟仪器设计的方法与技巧。本书共分11章,第1章介绍虚拟仪器的基本概念、结构、特点及发展趋势等知识,第2章介绍虚拟仪器软件开发平台LabVIEW 2015,第3章介绍LabVIEW的数据操作,第4章介绍变量、数组、簇与波形数据,第5章介绍LabVIEW的程序结构及程序设计方法,第6章介绍数据的图形显示,第7章介绍文件操作与管理,第8章介绍虚拟仪器的通信技术,第9章介绍数据采集的有关知识,第10章介绍LabVIEW常用外部接口,第11章介绍虚拟仪器设计实例。全书讲练结合,**强化学生的动手操作能力,属于实用性、实操性比较强的教材。全书提供了大量的编程实例,可以帮助读者轻松熟练地掌握相关内容。
    为了方便教学,本书还配有电子课件等教学资源包,任课教师和学生可以登录“我们爱读书”网(www.ibook4us.com)免费注册并浏览,或者发邮件至hustpeiit@163.com免费索取。
    本书注重理论和实际应用相结合,内容由浅入深、通俗易懂,各章配有适量的习题,既便于教学又利于自学,可以作为学校教学或工程技术人员的参考教材
    文章节选
    第3章数据操作



    第3章


    数 据 操 作





    3.1数据类型

    LabVIEW作为一种通用的编程语言,与其他文本编程语言一样,数据操作是*基本的操作。LabVIEW是用“数据流”的运行方式来控制VI程序的。数据流是LabVIEW的生命,运行程序就是将所有输入端口上的数据通过一系列节点送到目的端口。LabVIEW主要的数据类型包括标量类型(单元素,如���值型、字符型和布尔型)和结构类型(包括一个以上的元素,如数组和群集)。LabVIEW数据控件模板将各种类似的数据类型集中在一个子模板上以便于使用。

    数据类型主要有数值量、逻辑量、字符串、文件路径等几类。相同的数据类型可能有不同的表现形式,所以一个数据类型子模板有相当多的项目,如一个数值类型可以显示为一个简单的数字、一个条图、一个滑块、一个模拟计量器,数值可以显示在一个图表中。

    3.1.1数值型

    数值型是LabVIEW中一种基本的数据类型,可以分为浮点型、整型数和复数型三种,其类型的详细分类如表3.1所示。






    表3.1数值型数据类型表





    数 值 类 型
    图标
    存储所占位数
    数 值 范 围

    有符号64位整数

    64
    -18 446 744 073 709 551 616~

    +18 446 744 073 709 551 615
    有符号32位整数

    32
    -2 147 483 648~+2 147 483 647
    有符号16位整数

    16
    -32 768~+32 767
    有符号8位整数

    8
    -128~+127
    无符号64位整数

    64
    0~1 844 674 407 309 551 615
    无符号32位整数

    32
    0~4 294 967 295
    无符号16位整数

    16
    0~65 535

    续表




    数 值 类 型
    图标
    存储所占位数
    数 值 范 围

    无符号8位整数

    8
    0~255
    扩展精度浮点型

    128
    *小正数:6.48E-4 966

    *大正数:1.19E+4 932

    *小负数:-6.48E-4 966

    *大负数:-1.19E+4 932
    双精度浮点型

    64
    *小正数:4.94E-324

    *大正数:1.79E+308

    *小负数:-4.94E-324

    *大负数:-1.79E+308
    单精度浮点型

    32
    *小正数:1.40E-45

    *大正数:3.40E+38

    *小负数:-1.40E-45

    *大负数:-3.40E+38
    复数扩展精度浮点型

    256
    实部与虚部分别与扩展精度浮点型相同
    复数双精度浮点型

    128
    实部与虚部分别与双精度浮点型相同
    复数单精度浮点型

    32
    实部与虚部分别与单精度浮点型相同


    在前面板上单击鼠标右键或直接从“查看”下拉菜单中选择“控件选板”,在控件选板中即可看到各种类型的数值输入控件与显示控件。图3.1所示为数值型数据在“新式”显示风格下的界面,其他显示风格下的界面用户可以在实际运用中熟悉。在程序框图中数值型数据在函数选板下的界面如图3.2所示。




    图3.1“新式”显示风格下的数值型数据控件界面





    图3.2数值型数据在程序框图中函数选板下的界面



    数值选板包括多种不同形式的控件和指示器,包括数值控件、滚动条、旋钮、颜色盒等。这些控件本质上都是数值型的,它们大多功能相似,只是在外观上有所不同。只要掌握了其中一种的用法,就掌握了全部数值对象的用法。

    对前面板或程序框图中的数值型数据,用户可以根据需要来改变数据的类型。在前面板或程序框图中右击目标对象,从弹出的快捷菜单中选择“表示法”选项,从弹出的界面中可以选择该控件所代表的数据类型,如图3.3所示。





    图3.3更改控件所代表的数据类型



    如果要更改数值型控件的属性,用户可以在前面板或程序框图中右击目标对象,从弹出的快捷菜单中选择“属性”选项,会弹出图3.4所示的对话框。该对话框共包括7个属性配置选项卡,分别为“外观”“数据类型”“数据输入”“显示格式”“说明信息”“数据绑定”和“快捷键”。




    图3.4数值型控件的属性对话框



    下面分别对这7个属性配置页面的功能进行简要的说明。

    1. 外观页面

    在外观页面中可以设置数值控件的外观属性,包括标签、标题、启用状态、显示基数、显示增量/减量按钮和大小等,各选项的功能说明如下。

    (1) 标签:用于识别前面板和程序框图中的对象。勾选“可见”选项可以显示对象的自带标签并启用标签文本框对标签进行编辑。

    (2) 标题:与标签相似,但该选项对常量不可用。勾选“可见”选项可以显示对象的标题并使标题文本框可编辑。

    (3) 启用状态:勾选“启用”选项,表示用户可操作该对象;勾选“禁用”选项,表示用户无法对该对象进行操作;勾选“禁用并变灰”选项,表示在前面板窗口中显示该对象并将对象变灰,用户无法对该对象进行操作。

    (4) 显示基数:显示对象的基数,使用基数改变数据的格式,如十进制、十六进制、八进制、二进制或SI符号。

    (5) 显示增量/减量按钮:用于改变该对象的值。

    (6) 大小:分为高度、宽度两项,对于数值输入控件而言,其高度不能更改,只能修改宽度。

    与数值输入控件外观属性配置页面相比,滚动条、旋钮、转盘、温度计、液罐等其他控件的外观设置页面稍有不同。如针对旋钮输入控件的特点,在外观属性配置页面上添加了定义指针颜色、锁定指针动作范围等特殊外观功能项。对这些特点,用户可以在实际练习中加以体会。

    2. 数据类型页面

    在数据类型页面中可以设置数据类型和范围等。用户应当注意的是,在设定*大值和*小值时不能超出该数字类型的数据范围;否则,设定值无效。数据类型页面各部分的功能如下。

    (1) 表示法:为控件设置数据输入和显示的类型,例如整数、双精度浮点数等。在数据类型页面中有一个表示法小窗口,用鼠标左键单击它,会得到数值类型选板。各图标对应的数据类型参见表3.1。

    (2) 定点配置:设置定点数据的配置。启用该选项后,将表示法设置为定点,可配置编码或设置范围。编码即设置定点数据的二进制编码方式。带符号与不带符号选项设置定点数据是否带符号。范围选项设置定点数据的范围,包括*小值和*大值。

    3. 数据输入页面

    数据输入页面用于为数值对象或输出设置数据范围。

    使用默认界限:选中此选项时,可根据所选的数据表示法设置默认的*小值、*大值和增量值。取消勾选,用户可指定数据的取值范围,包括*大值和*小值的设定;增量用于设置强制增量。

    在数据输入页面中包括对超出界限的值响应的三个选项,也包括*大值、*小值和增量。它们用来设置当用户输入的数值超出设定的数据范围时处理数值的方式。*大值有效值和*小值有效值包括忽略和强制。增量有效值包括忽略、强制至*近值、向上强制、向下强制。

    4. 显示格式页面

    在显示格式页面中用户可以设置数值的格式与精度。

    数值计数方法可选浮点、科学计数法、自动格式化和SI符号四种。其中,用户选择浮点表示以浮点计数法显示数值对象,选择科学计数法表示以科学计数法显示数值对象,而自动格式化是指以LabVIEW所指定合适的数据格式显示数值对象,SI符号是以SI表示法显示数值对象,且测量单位出现在值后。

    **时间用来显示数值对象从格林尼治标准时间1904年1月1日零点至今经过的秒数。只能通过事件表示控件设置**时间。相对时间用来显示数值对象从0起经过的小时、分钟及秒数。

    精度类型和位数显示了不同表示法的精度位数或者有效数字位数。隐藏无效零选项表示当数据末尾的零为无效零时不显示,但如数值无小数部分,该选项会将有效数字精度之外的数值强制为零。

    以3的整数倍为幂的指数形式,指数幂始终为3的整数倍。显示时采用了工程计数法表示数值。

    当数据实际位数小于用户指定的*小域宽时,用户选中使用*小域宽选项,则在数据左端或者右端将用空格或者零来填补额外的字段空间。

    默认编辑模式和**编辑模式的切换完成默认视图和格式代码编辑格式及精度的切换。

    5. 说明信息页面

    用户可以在说明信息页面根据具体情况在说明和提示框中加注描述信息,用于描述该对象的目的并给出使用说明。提示框用于VI运行过程中当光标移到一个对象上时显示对象的简要说明。

    6. 数据绑定页面

    用户在数据绑定页面中可以自由设置数据绑定选择。数据绑定选择下拉菜单中有3个选项,即未绑定、共享变量引擎(NIPSP)和DataSocket。访问类型共有3种,即只读、读取/写入、路径,是系统为正在配置的对象设置的访问类型。

    7. 快捷键页面

    用户在此页面中可以自由设置增量、减量,选中与各种数据绑定相应的快捷键操作。

    (1) 选中:为该控件分配一个快捷键。

    (2) Shift键:按键分配的修改键。

    (3) Ctrl键:按键分配的修饰键。

    (4) 现有绑定:列出已使用的按键分配。

    (5) Tab键动作:定位至该控件时控制Tab键的动作。

    (6) 按Tab键时忽略该控件:使用Tab键进行选中时,忽略该控件。在前面板使用Tab键时,LabVIEW将忽略隐藏的控件。对于隐藏的控件,无须勾选该复选框。

    控件类型中的其他类型控件的属性页和输入控件属性页并不完全相同,这是由各控件的功能和外观决定的。如在标尺页面中,用户可以根据需要配置带有标尺数值对象的标尺。在标尺页面可以设置标尺刻度的样式、主刻度颜色(刻度标记的颜色)、辅刻度颜色(辅刻度标记的颜色)、标记文本颜色(标尺标记文本的颜色)。

    3.1.2布尔型

    布尔型的值为1或者0,即真(True)或者假(False)。通常情况下,布尔型即逻辑型。在前面板上单击鼠标右键或直接从“查看”下拉菜单中选择控件选板。图3.5所示为新式风格下的布尔模板。

    在图3.5中可以看到各种布尔型输入控件与显示控件,如开关、指示灯、按钮等,用户可以根据需要选择合适的控件。布尔控件用于输入并显示布尔值。例如监控一个实验的压力时,可在前面板上放置一个布尔警告灯,当压力超过一定水平时,显示灯高亮,表示发出警告。

    在前面板的布尔控件上单击鼠标右键,从弹出的快捷菜单中选择“属性”选项,则可打开图3.6所示的布尔控制属性配置对话框。这里仅对外观页面及操作页面进行简单的说明。


    图3.5布尔子选板




    图3.6布尔控制属性配置对话框



    1. 外观页面

    打开布尔控件属性配置对话框,外观页面为默认页面。可以看到该页面与数值控制外观配置页面基本一致,这里只介绍与数值控件外观配置页面不同的选项及其相应功能。

    (1) 开:设置布尔对象状态为True时的颜色。

    (2) 关:设置布尔对象状态为False时的颜色。

    (3) 显示布尔文本:在布尔对象上显示用于指示布尔对象状态的文本,同时使用户能够对开时文本和关时文本的文本框进行编辑。

    (4) 文本居中锁定:将显示布尔对象状态的文本居中显示;也可使用锁定布尔文本居中属性,通过编程将布尔文本锁定在布尔对象的中部。

    (5) 多字符串显示:允许为布尔对象的每个状态显示文本。如取消勾选,在布尔对象上将显示“关时文本”文本框中的文本。

    (6) 开时文本:布尔对象状态为True时显示的文本。

    (7) 关时文本:布尔对象状态为False时显示的文本。

    (8) 文本颜色:说明布尔对象状态的文本颜色。

    2. 操作页面

    操作页面用于为布尔对象指定按键时的机械动作。该页面包括按钮动作、动作解释、所选动作预览和指示灯等选项,各选项的功能如下。

    (1) 按钮动作:设置布尔对象的机械动作,共有6种可供选择,用户可以在练习中对各种动作的区别加以体会。

    (2) 动作解释:描述选中的按钮动作。

    (3) 所选动作预览:显示具有所选动作的按钮,用户可测试按钮的动作。

    (4) 指示灯:当预览按钮的值为True时,指示灯变亮。

    3.1.3字符串与路径

    字符串是LabVIEW中一种基本的数据类型。LabVIEW为用户提供了功能强大的字符串控件和字符串运算功能函数。

    路径是一种特殊的字符串,专门用于对文件路径的处理。在前面板上单击鼠标右键,打开控件选板,若选择“新式”风格,可看到图3.7所示的字符串与路径子选板。其他风格显示下的界面用户可以在实际运用中加以熟悉。

    字符串与路径子选板中共有3种对象供用户选择:字符串输入/显示、组合框和文件路径输入/显示。其中字符串和路径控件可用于创建文本输入框和标签、输入或返回文件的地址,组合框可用于对输入项目进行选择。

    1. 字符串控件

    字符串控件用于输入和显示各种字符串。其属性配置页面与数值控件、布尔控件相似,用户可参考前面的介绍,此处不再进行详细说明。

    右键单击字符串控件,在弹出的快捷菜单中,关于定义字符串的显示方式有4种,如图3.8所示。
    每种显示方式及其含义如下。

    (1) 正常显示。在这种显示模式下,除了一些不可显示的字符,如制表符、声音、Esc等,字符串控件将显示输入的其他所有字符。


    图3.7字符串型与路径子选板图



    图3.8字符串快捷菜单部分选项





    (2) ‘\\’代码显示。选择这种显示模式,字符串控件除了显示普通字符以外,还可以显示一些特殊控制字符。表3.2显示了一些常见的转义字符。






    表3.2‘\\’代码转义字符列表





    字符
    ASCII码值
    控 制 字 符
    功 能 含 义
    \\n
    10
    LF
    换行
    \\b
    8
    BS
    退格
    \\f
    12
    FF
    换页
    \\s
    20
    DC4
    空格
    \\r
    13
    CR
    回车
    \\t
    9
    HT
    制表位
    \\\\
    39

    反斜线\\

    应当注意的是,在LabVIEW中,如果反斜杠后接的是大写字符,并且是一个合法的十六进制整数,则把它理解为一个十六进制的ASCII码值;如果反斜杠后接的是小写字符,而且是表3.2中的一个命令字符,则把它理解为一个控制字符;如果反斜杠后接的既不是合法的十六进制整数,又不是表3.2中任何一个命令字符,则忽略反斜线。

    (3) 密码显示。密码模式主要用于输入密码,输入的字符均以“*”显示。

    (4) 十六进制显示。该模式下,将显示输入字符对应的十��进制ASCII码值。

    2. 路径控件

    路径控件用于输入或返回文件或目录的地址。路径控件与字符串控件的工作原理类似,但LabVIEW会根据用户使用操作平台的标准句法将路径按一定格式处理。路径通常分为以下几种类型。

    (1) 非法路径。如函数未成功返回路径,该函数将在显示控件中返回一个非法路径值。非法路径值可作为一个路径控件的默认值来检测用户何时未提供有效路径,并显示一个带有选择路径选项的文件对话框。使用文件对话框函数显示文件对话框。

    (2) 空路径。空路径可用于提示用户指定一个路径。将一个空路径与文件I/O函数相连时,空路径将指向映射到计算机的驱动器列表。

    (3) 相对路径和**路径。相对路径是文件或目录在文件系统中相对于任意位置的地址。**路径描述从文件系统根目录开始的文件或目录地址。使用相对路径可避免在另一台计算机上创建应用程序或运行VI时重新指定路径。

    3. 组合框控件

    组合框控件可用来创建一个字符串列表,在前面板上可按次序循环浏览该列表。组合框控件类似于文本型或菜单型下拉列表控件,但是组合框控件是字符串型数据,而下拉列表控件是数值型数据。关于字符串、路径和组合框更详细的使用方法及相应函数的应用可以参见字符串的实现。

    在字符串控件中*常用的是字符串输入和字符串显示两个控件,如果需要为字符串添加背景颜色,可以使用工具选板中的设置颜色工具。如果需要修改字符串控件中文字的大小、颜色、字体等属性,需要先使用工具选板中的编辑文本工具选定字符串控件中的字符串,然后打开前面板工具栏中的文本设置工具栏,选择符合用户需求的字体属性。



    图3.9字符串输入控件与显示控件


    默认情况下创建的字符串输入控件与显示控件是单行的,长度固定。如果用户输入和显示的字符串长度较长,就需要改变字符串框格的大小或显示形式来调整字符串显示窗口,使其适合字符串的长度。如果需要调整字符串窗口的大小,可以使用工具选板上的定位工具拖动字符串边框,如图3.9(a)所示。也可以用鼠标右键单击控件,在弹出的快捷菜单中选择“显示项”下“垂直滚动条”选项,在字符串窗口创建滚动条,增加窗口空间以显示多行文本,如图3.9(b)所示。



    字符串控件在默认情况下为正常显示状态显示字符的一般形式,在字符串中可以直接按回车键或空格键,系统自动根据键盘动作为字符串创建隐藏的‘\’形式的转义控制字符。右键单击控件,在弹出的快捷菜单中可以选择其他文本格式。
    目录
    第1章绪论()

    1.1虚拟仪器的基本概念()

    1.2虚拟仪器的组成()

    1.2.1虚拟仪器的硬件结构()

    1.2.2虚拟仪器的软件结构()

    1.2.3虚拟仪器系统()

    1.3虚拟仪器的特点()

    1.4虚拟仪器的应用()

    1.5虚拟仪器技术发展趋势()

    习题()

    第2章虚拟仪器软件开发平台LabVIEW()

    2.1LabVIEW概述()

    2.1.1LabVIEW的含义()

    2.1.2LabVIEW的特点()

    2.1.3LabVIEW的发展()

    2.1.4LabVIEW 2015的安装与运行()

    2.2LabVIEW 2015编程环境()

    2.2.1LabVIEW 2015的基本开发平台()

    2.2.2LabVIEW 2015的操作选板()

    2.2.3LabVIEW 2015的菜单和工具栏()

    2.3LabVIEW 2015的初步操作()

    2.3.1创建虚拟仪器()

    2.3.2调试虚拟仪器()

    2.3.3创建和调用子VI()

    2.3.4虚拟仪器创建举例——虚拟温度计()

    习题()

    第3章数据操作()

    3.1数据类型()

    3.1.1数值型()

    3.1.2布尔型()

    3.1.3字符串与路径()

    3.2数值运算()

    3.3布尔运算()

    3.4字符串运算()

    3.5比较运算()

    习题()

    第4章变量、数组、簇与波形数据()

    4.1局部变量()

    4.1.1局部变量的创建()

    4.1.2局部变量的使用()

    4.1.3局部变量的特点()

    4.2全局变量()

    4.2.1全局变量的创建()

    4.2.2全局变量的使用()

    4.2.3全局变量的特点()

    4.3数组()

    4.3.1数组的组成与创建()

    4.3.2数组的使用()

    4.3.3数组的特点()

    4.4簇()

    4.4.1簇的组成与创建()

    4.4.2簇的使用()

    4.4.3簇的特点()

    4.5波形数据()

    4.5.1波形数据的组成()

    4.5.2波形数据的创建与使用()

    4.5.3波形数据的特点()

    习题()

    第5章程序结构()

    5.1For循环()

    5.2While循环()

    5.3顺序结构()

    5.4条件结构()

    5.5事件结构()

    5.6公式节点()

    5.7属性节点()

    5.7.1属性节点的直接创建法()

    5.7.2属性节点的编程创建法()

    习题()

    第6章数据的图形显示()

    6.1波形显示()

    6.1.1波形图()

    6.1.2波形图表()

    6.2XY图和Express XY图()

    6.2.1XY图()

    6.2.2Express XY图()

    6.3强度图形()

    6.3.1强度图()

    6.3.2强度图表()

    6.4三维图形()

    6.4.1三维曲面图形()

    6.4.2三维参数图形()

    6.4.3三维曲线图形()

    6.5数字波形图()

    习题()

    第7章文件操作与管理()

    7.1支持的文件类型()

    7.2文件操作()

    7.2.1文件的基本操作()

    7.2.2文件I/O选板()

    7.3文件输入/输出操作()

    习题()

    第8章通信()

    8.1串行通信()

    8.1.1串口简介()

    8.1.2串行通信节点()

    8.1.3串行通信编程实例()

    8.2网络通信()

    8.2.1TCP协议简介()

    8.2.2TCP函数()

    8.2.3TCP通信编程实例()

    8.3DataSocket通信()

    8.3.1DataSocket概述()

    8.3.2DataSocket技术在LabVIEW中的实现()

    习题()

    第9章数据采集()

    9.1数据采集基础()

    9.1.1奈奎斯特采样定理()

    9.1.2信号类型()

    9.1.3信号的参考点与测量系统()

    9.1.4数据采集系统构成()

    9.2数据采集卡的选用与配置()

    9.2.1选用数据采集卡的基本原则()

    9.2.2数据采集卡的配置()

    9.3NIDAQmx简介()

    9.3.1NIDAQmx数据采集VI()

    9.3.2DAQ助手的使用()

    9.4NIDAQmx应用实例()

    9.4.1模拟信号输入()

    9.4.2模拟信号输出()

    习题()

    第10章LabVIEW常用外部接口()

    10.1调用库函数()

    10.1.1DLL简介()

    10.1.2API简介()

    10.1.3调用库函数实例()

    10.2MATLAB接口()

    10.2.1Matlab节点()

    10.2.2Matlab节点应用()

    10.3ActiveX()

    10.3.1ActiveX简介()

    10.3.2ActiveX控件()

    10.3.3ActiveX自动化()

    习题()

    第11章虚拟仪器设计实例()

    11.1虚拟仪器的设计原则()

    11.1.1总体设计原则()

    11.1.2硬件设计的基本原则()

    11.1.3软件设计的基本原则()

    11.2虚拟仪器的设计步骤()

    11.3虚拟仪器设计实例()

    11.3.1虚拟数字电压表()

    11.3.2基于LabVIEW和声卡的数据采集系统()

    习题()

    参考文献()
    编辑推荐语
    适读人群 :本书可作为高等院校本科自动化、计算机应用、电子信息、机电工程、测控技术与仪器等专业虚拟仪器的教材,也可作为各类院校专科层次相关专业类似课程的选用教材,并可作为从事计算机测控系统研发的工程技术人员的参考书。
    虚拟仪器技术的出现,改变了人们对仪器的传统观念,顺应了现代测控系统网络化、智能化的发展趋势。总体而言,虚拟仪器是测量/测试领域的一个创新概念,它是计算机技术介入仪器领域所形成的一种新型仪器,是利用计算机强大的图形环境,组合相应的硬件,编制不同的测试软件,建立界面友好的虚拟面板(即软面板),通过友好的图形界面及图形化编程语言控制运行,构成多种测量方式,完成对被测量的采集、分析、判断、显示、存储及数据生成的仪器。也就是说,虚拟仪器是利用计算机显示器模拟传统仪器控制面板,以多种形式输出检测结果,利用计算机软件实现信号数据的运算、分析和处理,利用 I/O接口设备完成信号的采集、测量与调整,从而完成各种测试功能的一种计算机仪器系统。

    与描述相符

    100

    北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 台湾 香港 澳门 海外