NI-VISA中的终止符

概览

各种基于消息的总线使用终止符提示消息传输结束。对于与完整的488.2协议(GPIB Instr、VXI/GPIB-VXI Instr、USB Instr和TCPIP Instr)相对应的VISA资源类型,通常不需要使用终止符,因为协议实现本身就有指定消息结束的机制。只有在使用其他VISA资源类型(Serial Instr、USB Raw和TCPIP Socket)时,才需要告诉VISA消息是如何终止的。

传入和传出的消息都可以有终止符。两个常见的终止符是“换行符”(代码显示'\n'、ASCII十进制10,或十六进制0x0A)和“回车符”(代码显示'\r'、ASCII十进制13,或十六进制0x0D​​)。

四个主要的NI-VISA属性处理终止。两个属于“基于消息的设置”,另外两个属于“串口设置”。基于消息的属性是“终止符”“启用终止符”,串口特定的属性是“串口读取结束模式”“串口写入结束模式”。本文详细介绍了每个属性,并讨论特殊注意事项。

内容

终止(TermChar)


该属性将一个无符号的8位整数作为输入。因此,除非知道终止符的ASCII值,否则最好是指定值来设置属性,如上所示。将此属性值用作读取和写入的终止符。设置这个属性值不会影响它是否被使用。

虽然TermChar并不局限于串口通信,但您可能希望在使用完整的488.2协议总线上通信时使用其他终止机制,如介绍中所述。例如,当通过GPIB进行通信时,标准是使用硬件线EOI进行终止。

注:VISA Configure Serial Port.vi通过终止符参数设置该属性,默认为换行符(0x0A = '\n' = LF)。

启用终止(TermChar En)




如果设为TRUE,则此属性将指示VISA在遇到终止符时停止读取。注意,它不限于串口;您可以使用该属性终止其他总线上的读取。


重要提示:如果“串口读取结束模式”(下文所述)设为TermChar,则忽略此属性且不返回错误。

该属性不影响写入的终止符。

注:VISA Configure Serial Port.vi通过启用终止符参数设置该属性,默认为TRUE。

结束模式(ASRL End In)


该属性指定用于终止从软件缓冲区读取操作的方法,仅用于串口通信。有效值为:

说明
None (0)遇到终止符时读取不会停止。
Last Bit (1)字符到达最后一位时读取停止。
TermChar (2)
(Default)
遇到终止符时读取停止。该值为默认值。


重要提示:如果该值设置为TermChar (2),则忽略“启用终止符”属性值。

如果达到字节计数(由“VISA读取”指定)或超时(VISA属性),则无论该属性为何值,读取都会终止。

通过将“取消启用结束指示(Suppress End En)”属性设为TRUE,可禁用该属性。

注:如果启用终止符输入设为F,则VISA Configure Serial Port.vi设置该属性为None;如果启用终止符输入设为T,则将其设为TermChar。

结束模式(ASRL End Out)



该属性指定终止写入操作的方法。有效值为:

说明
None (0)
(Default)
写入后没有终止符。
Last Bit (1)写入操作发送除最后一个最高位清除字符的所有内容,然后发送有最高位的字符。
TermChar (2)终止符的值将附加到所有写入的末尾。
Break (3)每次写入后都会发送一个串口中断。串口中断是一系列连续的空间值,通常用于指示仪器停止正在进行的操作或放弃输出缓冲区中的任何数据。请谨慎使用此方法。


您可能会看到较早的仪器驱动程序在“VISA写入”之前附加终止符。这是因为旧版本的VISA不支持这个属性,所以用户必须显式附加终止符。现在通过设置该属性即可实现该功能,因此无需额外操作。

您可以通过将“发送结束指示(Send End En)”属性设置为FALSE来禁用该属性。

注:VISA Configure Serial Port.vi不会设置该属性。必须通过属性节点来设置,如上图所示。

ASCII通信


执行ASCII通信时,请在应用程序或驱动程序初始化程序的开头设置终止属性和其他总线通信设置。终止符设置必须与仪器配置匹配。请记住,某些仪器具有可配置的设置。请参考特定仪器的用户手册。

建议:对于可能处理多条总线的鲁棒性应用,始终保持“启用终止符”属性和“串口读取结束模式”同步(即启用/禁用一个时,也将另一个启用/禁用)。

进制通信


执行二进制通信时,如果一个二进制数据值与终止符具有相同的二进制表示形式,则该读取可以提前终止。因此,通过将“启用终止符”设为FALSE并将“串口读取结束模式”设为None (0)来禁用终止符,如下所示。必须依靠终止读取的其他方法,如硬件行或字节计数。


注:当使用与完整的488.2协议(GPIB Instr、VXI/GPIB-VXI Instr、USB Instr和TCPIP Instr)相对应的VISA资源类型时,通常不需要首先启用终止符,因此二进制通信更方便,因为您无需担心首先禁用终止符设置。

使用多个终止仪器


某些仪器发送多个终止符,如回车换行符(代码显示'\r\n'或ASCII十六进制0x0D0A)。因为VISA只允许一个终止符,所以你必须找到替代解决方案。首先,检查仪器终止顺序是否可配置。如果不可配置,可以将VISA设为在最后一个字符处终止,并使用“扫描字符串”从实际消息中解析出其他字符。下图显示了适用于'\r\n'或'\n'终止的代码。


注:为使用该配置,显示样式属性必须设为反斜杠('\')代码。有关反斜杠('\')代码显示的更多信息,请参考反斜杠('\')代码显示 - LabVIEW帮助。

 

Was this information helpful?

Yes

No