3.2 字符串

LabVIEW中,字符串是指ASCII字符的集合,用于文本传送、文本显示及数据存储等。在对实际存在的仪器和设备进行控制操作时,控制命令和数据等大多都是按字符串格式加以传输的。

3.2.1 字符串控件

LabVIEW中的字符串控件,位于“控件”选板→“新式”→“字符串与路径”子选板和“列表与表格”子选板上。字符串控件也分为输入控件和显示控件两种。

图3.12展示的是字符串组合控件的使用示例。该控件可以写入多个字符串,每个称为一个“项”,并对应一个“值”。选中组合框控件,右击,弹出快捷菜单,选择“属性”→“编辑项”,可对“项”和“值”进行编辑,如图3.13所示。

图3.12 字符串组合控件

图3.13 字符串组合控件的属性设置

3.2.2 字符串的显示方式

字符串的显示方式有四种:第一种是Normal Display,即正常显示,它是字符串控件的默认设置;第二种是\Codes Display,即\代码显示,用以查看在正常方式下不可显示的字符代码,其在程序调试、向仪器设备传输字符时较为常用;第三种是Password Display,即口令显示,在这种方式下,用户输入的字符均改以字符∗代替;第四种是Hex Display,即十六进制显示,字符以对应的十六进制ASCII码的形式显示,在程序调试和VI通信时比较常用。图3.14所示的VI,给出了同一段字符串的四种显示方式。LabVIEW中的一些特殊字符及其含义,提供在表3.2中。

图3.14 字符串的四种显示方式

表3.2 LabVIEW中的特殊字符

3.2.3 字符串函数

LabVIEW中提供有可对字符串进行操作的若干函数,简称字符串函数,它们位于“函数”选板→“编程”→“字符串”子选板上,常用的字符串函数见表3.3。下面将通过三个示例,对常用的字符串函数进行介绍。

表3.3 字符串函数

【例3.3】 “格式化写入字符串”函数的使用。

为例3.3编写好的VI的程序框图如图3.15(a)所示,其中调用了“格式化写入字符串”函数,将字符串“头”、数值和字符串“尾”连接在一起,生成新的字符串;并调用了“字符串长度”函数。该VI的前面板如图3.15(b)所示,可见,在前面板上,是将字符串“头”设置为“SET”,将数值设为“5.5”,将字符串“尾”设为“VOLTS”。运行此VI可以看到,连接后的字符串为“SET 5.50 VOLTS”,且计算出了此字符串的长度为14。

图3.15 格式化写入字符串函数VI的程序框图和前面板

注意:“格式化写入字符串”函数图标边框上沿的中间处,是进行字符串连接的格式输入端口,双击该函数图标,可以弹出对话框,如图3.16所示,在该对话框内,可对连接字符串的格式进行设置。

【例3.4】 字符串的分解。

为例3.4编写的VI中,调用了“截取字符串”和“扫描字符串”两个函数,具体是要将输入字符串“VOLTS DC+1.345E+02”中的“DC”和数值“1.345 E+02”分解出来。该例题VI的程序框图和前面板如图3.17所示。

图3.16 编辑字符串格式的界面

图3.17 字符串分解示例VI的程序框图和前面板

在实际应用中,例如计算机从下位机(单片机)接收到的数据都是字符串类型的,那经常要做的一项工作,就是要从一段字符串中提取出实际感兴趣的信息。例3.4就实现了类似的功能,如提取出的“DC”,就表明是直流电压;提取出的“1.345E+02”,意味着获得了当前直流电压数值的大小。例3.4的实现方法,是已知要提取的元素在整个字符串中的位置,以此为根据,将所感兴趣的元素提取出来。那么,如果不知道感兴趣元素的具体位置,又该如何实现上述目标呢?对此,例3.5给出了另外一种实现思路。

【例3.5】 利用“匹配正则表达式”函数进行字符串的分解。

为例3.5编写的VI中,调用了“匹配正则表达式”函数,用以实现字符串的分解。该VI的前面板和程序框图如图3.18所示,其中,[Dd]表示字符串第一个字符是大写或小写的D,[Cc]表示字符串第二个字符是大写或小写的C,如此,就将源字符串中的子字符串“DC”找到了,并将源字符串从“DC”处分解成了三段,匹配之前为VOLTS,匹配之后为字符串“+1.345E+02”,再将其转换成数值类型,即输出数字“134.5”。

正则表达式的功能非常强大,例3.5只给出了一个简单应用。有关正则表达式的语法,请参看LabVIEW的帮助文件。从例3.4和例3.5的VI实现方式的比较可以看出,为实现相同的功能,LabVIEW可能有很多种方法,故在实际进行编程时,要根据已知条件来设计自己的VI。

图3.18 “匹配正则表达式”函数使用示例的前面板和程序框图