2011年9月3日,第一稿
7.3 配置文件(.ini文件)
曾记得有个项目,当我们将已经设计、实验完成的图形化应用程序打包提交给用户并收到全部设备费用后,真的有种成功后的喜悦和无比的满足。
可是,过了并没过多久,用户就打来电话:“传感器坏了,需要换新的传感器”。听到这个消息我内心无比惆怅,没办法只好通知用户将设备寄回来。修改软件中的有关传感器部分并重新设置了传感器的灵敏度参数后,打包发给了用户。
此事对我触动很大。大千世界,任何事情总会有意外发生,对于这样的情况发生难道我们只有让用户寄回设备,重新修改软件打包处理吗?
通过学习,我们了解到一个好的解决方案:使用INI文件来记录每个传感器的编号和灵敏度值。此时如果再发生改变,我们只需重新发一个INI文件来替换原来的INI文件即可,无需对原程序做任何改动。
可是,过了并没过多久,用户就打来电话:“传感器坏了,需要换新的传感器”。听到这个消息我内心无比惆怅,没办法只好通知用户将设备寄回来。修改软件中的有关传感器部分并重新设置了传感器的灵敏度参数后,打包发给了用户。
此事对我触动很大。大千世界,任何事情总会有意外发生,对于这样的情况发生难道我们只有让用户寄回设备,重新修改软件打包处理吗?
通过学习,我们了解到一个好的解决方案:使用INI文件来记录每个传感器的编号和灵敏度值。此时如果再发生改变,我们只需重新发一个INI文件来替换原来的INI文件即可,无需对原程序做任何改动。
7.3.1 INI文件及INI文件格式
INI文件原来是操作系统使用的一种应用程序配置文件,大多数应用程序包括LabVIEW都使用了这种配置文件。
通常系统在关闭应用程序之前,会将应用程序当前所需的全部配置都保存记录到INI文件中。当下次再打开应用程序时,应用程序就会跟据INI里的参数来重新初始化应用程序的配置。
INI文件是ASCII编码的文件(与文本文件相同),它通常会被保存在应用程序的配置文件文件夹中。
当然,为了防止他人修改,也可以设置使用密码。
为了更好的理解和正确使用INI文件,还需要进一步了解INI文件的基本格式。
INI文件的基本格式
请注意:我们所讨论的是项目中的配置文件,它是整个项目共用的。所以它要有一个项目使用的文件名,其后缀是.ini。例如:LabVIEW编程思想项目.ini
KeyName1=value1
KeyName2=value2
...
[Section2 Name]
KeyName21=value21
KeyName22=value22
其中:
[Section1 Name]用来表示一个段落。
因为INI文件可能是项目中共用的,所以使用[Section Name]段名来区分不同用途的参数区。例如:[Section1 Name]表示传感器灵敏度参数区;[Section2 Name]表示测量通道参数区等等。
KeyName1=value1 用来表示一个参数名和值。
比如:
7033=50
7034=51
其中:
7033表示某传感器名,50表示它的灵敏度值。
7034表示另一只传感器名,51表示它的灵敏度值。
通常系统在关闭应用程序之前,会将应用程序当前所需的全部配置都保存记录到INI文件中。当下次再打开应用程序时,应用程序就会跟据INI里的参数来重新初始化应用程序的配置。
INI文件是ASCII编码的文件(与文本文件相同),它通常会被保存在应用程序的配置文件文件夹中。
当然,为了防止他人修改,也可以设置使用密码。
为了更好的理解和正确使用INI文件,还需要进一步了解INI文件的基本格式。
INI文件的基本格式
- INI文件名
请注意:我们所讨论的是项目中的配置文件,它是整个项目共用的。所以它要有一个项目使用的文件名,其后缀是.ini。例如:LabVIEW编程思想项目.ini
- INI文件的数据格式(配置文件的内容)
KeyName1=value1
KeyName2=value2
...
[Section2 Name]
KeyName21=value21
KeyName22=value22
其中:
[Section1 Name]用来表示一个段落。
因为INI文件可能是项目中共用的,所以使用[Section Name]段名来区分不同用途的参数区。例如:[Section1 Name]表示传感器灵敏度参数区;[Section2 Name]表示测量通道参数区等等。
KeyName1=value1 用来表示一个参数名和值。
比如:
7033=50
7034=51
其中:
7033表示某传感器名,50表示它的灵敏度值。
7034表示另一只传感器名,51表示它的灵敏度值。
7.3.2 LabVIEW中的INI文件函数
其实,在NI LabVIEW中,早已提供了一些编写、读取和处理INI文件的内置vi供用户使用,参见下图。
LabVIEW的开发者完全可以充分利用这一特性来保存应用程序设计中的一些未来需要改动的参数值,这些值需写到全局变量中供程序使用。
这对于发布给用户的应用程序的维护是非常重要的。
例如:已发布的应用程序使用NI USB-9233,现在需要用NI USB-9234,如果在程序设计中考虑到这一点,并已将相关参数放置在配置文件中。这样仅修改配置文件中的相关参数(程序设计中必须考虑到可以使用USB-9234)就可以变更硬件的使用了。
INI文件键参数中Value所支持的数据类型
这对于发布给用户的应用程序的维护是非常重要的。
例如:已发布的应用程序使用NI USB-9233,现在需要用NI USB-9234,如果在程序设计中考虑到这一点,并已将相关参数放置在配置文件中。这样仅修改配置文件中的相关参数(程序设计中必须考虑到可以使用USB-9234)就可以变更硬件的使用了。
INI文件键参数中Value所支持的数据类型
- 字符串
- 路径
- 布尔
- 64位二进制双精度浮点数
- 32位二进制有符号整数
- 32位二进制无符号整数
7.3.3 LabVIEW中的INI文件应用实例
配置文件需要与全局变量配合使用,配置文件在程序的初始化过程读入全局变量。下面我们来看一个来自其它LabVIEW爱好者设计的自动生成.INI的小工具[17]。
该文件是一个Zip文件,下载解压后参见下图。
该文件是一个Zip文件,下载解压后参见下图。
点击上图文件夹中的“GenINI.lvproj”,可看见如下图所示的“GenINI.lvproj项目结构。参见下图。
点击上图中的“GenINI Main.vi”,程序运行参见下图。
1、选择勾选上图中红色的选项。
2、选择事先写好的配置文件路径。
(可用记事本工具打开这个我们事先写好的Tset.ini文件。事先写好的文件内容参见下图)。
2、选择事先写好的配置文件路径。
(可用记事本工具打开这个我们事先写好的Tset.ini文件。事先写好的文件内容参见下图)。
在运行的程序中,选择配置完1、2项后,点击“Read File"按键。程序自动将Test.ini文件中的数据读到下图所示的程序架构中。
点击图7-27所示的界面下部的“Generate Code”按键。(图中没有包括进来)。片刻系统会自动生成两个vi,一个是“INI_Read_Test.vi",另一个是“INI_Write_Test.vi"。
下面分别给出它们的前面版图和程序框图。
下面分别给出它们的前面版图和程序框图。













