NI-VISA中的终止符

概览

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

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

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

内容

终止(TermChar)

终止符


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

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

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

启用终止(TermChar En)


启用终止符

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

重要提示:如果将串口读取结束模式(如下所述)设置为终止符,则会忽略此属性,并且不会返回错误。

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

注: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不支持此属性,所以用户必须显式附加终止符。设置该属性可实现该功能,因此无需额外操作。

可通过将发送结束指示(Suppress 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