LabVIEW-串口通信
串行接口 (Serial Interface) 是指数据按位顺序地进行传输,发送设备和接收设备只需要一对传输线路即可实现双向互连通信,其特点是通信线路简单、成本低,距离远,速度较慢。
根据串行信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。
串口通信的两种最基本的方式,同步串行通信方式SPI(Serial Peripheral interface)和异步串行通信方式UART(Universal Asynchronous Receiver/Transmitter),UART包含TTL电平的串口和RS232电平的串口。其中, TTL电平是3.3V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平。
串行接口按电气标准及协议来分包括RS-232-C、RS-422、RS485等。RS-232-C、RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件、电缆或协议。
LabVIEW与串行设备通信前,需要安装National Instrument公司的VISA驱动,并提供了串口通信范例。
实现过程
- 01
VISA是虚拟仪器软件体系结构的缩写(即Virtual Instruments Software Architecture),实质上是一个I/O口软件库及其规范的总称。 VISA是应用于仪器编程的标准I/0应用程序接口,是工业界通用的仪器驱动器标准API(应用程序接口),采用面向对象编程,具有很好的兼容性、扩展性和独立性。用户可用一个API控制包括VXI、GPIB及串口仪器在内的不同种类的仪器。它还支持多平台工作、多接口控制,是一个多类型的函数库。
- 02
在LabVIEW中编写的VISA接口程序(需要提前安装对应labVIEW版本的VISA驱动),当外部设备变更时,只需要更换几个程序模块即可使用,简单方便而且开发效率高。
- 03
在LabVIEW 中利用VISA节点进行串行通信编程。为了方便用户使用,LabVIEW将这些VISA节点单独组成一个子模块,共包含8个节点(程序框图-查看-函数选板-仪器I/O-串口),分别实现VISA串口配置、VISA写入、VISA读取、VISA关闭,VISA串口字节数,VISA串口中断,VISA设置I/O缓冲区大小,VISA清空I/O缓冲区域;
- 04
VISA串口配置:该节点主要用于串口的初始化,如图所示。 启用终止符(接线端):使串行设备做好识别终止符的准备。 如值为TRUE(默认),VI_ATTR_ASRL_END_IN属性设置为识别终止符。如值为FALSE,VI_ATTR_ASRL_END_IN属性设置为0(无)且串行设备不识别终止符。 终止符(接线端):通过调用终止读取操作。从串行设备读取终止符后读取操作终止。 0xA是换行符(\n)的十六进制表示。消息字符串的终止符由回车(\r)改为0xD。 超时(接线端):指定读/写操作的时间,以毫秒为单位。 默认值为10000。 VISA资源名称(接线端):指定要打开的资源,如PC的COM1,COM2等。VISA资源名称控件也可指定会话句柄和类。 波特率(接线端):是传输速率。 默认值为9600。 数据位(接线端):是输入数据的位数。 数据位的值介于5和8之间。默认值为8。 奇偶(接线端):指定要传输或接收的每一帧使用的奇偶校验。 该输入支持下列值。 错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。 停止位(接线端):指定用于表示帧结束的停止位的数量。 该输入支持下列值。流控制设置传输机制使用的控制类型。 该输入支持下列值。 VISA资源名称输出(接线端):是由VISA函数返回的VISA资源名称的副本。 错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。
- 05
VISA写入:使写入缓冲区的数据写入VISA资源名称指定的设备或接口。 VISA资源名称(接线端):指定要打开的资源。VISA资源名称控件也可指定会话句柄和类。 写入缓冲区(接线端):包含要写入设备的数据。 错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。 VISA资源名称输出(接线端):是由VISA函数返回的VISA资源名称的副本。 返回数(接线端):包含实际写入的字节数。 错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。
- 06
VISA串口字节数:返回指定串口的输入缓冲区的字节数。 Number of Bytes at Serial Port属性(接线端):可指定该会话句柄使用的串口的当前可用字节数。
- 07
VISA读取:从VISA资源名称指定的设备或接口中读取指定数量的字节,并使数据返回至读取缓冲区。 VISA资源名(接线端):称指定要打开的资源。VISA资源名称控件也可指定会话句柄和类。 字节总数(接线端):是要读取的字节数量。 错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。 VISA资源名称输出(接线端):是由VISA函数返回的VISA资源名称的副本。 读取缓冲区(接线端):包含从设备读取的数据。 返回数(接线端):包含实际读取的字节数。 错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。
- 08
VISA关闭:该节点主要用于关闭已打开的串口,释放串口资源,以便串口被其他程序所调用,如图所示。 VISA资源名称(接线端):指定要打开的资源。VISA资源名称控件也可指定会话句柄和类。 错误输入(接线端):是节点运行前发生的错误。在下列情况下,该输入可作为标准错误输入。 即使在节点运行前发生错误,节点仍正常运行。 错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。
- 09
VISA设置I/O缓冲区大小 :设置I/O缓冲区大小。如需设置串口缓冲区大小,须先运行VISA配置串口VI。 VISA资源名(接线端):称指定要打开的资源。VISA资源名称控件也可指定会话句柄和类。 屏蔽(接线端):指明要设置大小的缓冲区。 (I/O接收缓冲区,I/O传输缓冲区,I/O接收和传输缓冲区) 大小(接线端):指明I/O缓冲区的大小,以字节为单位。大小应略大于要传输或接收的数据数量。如在未指定缓冲区大小的情况下调用该函数,函数可设置缓冲区大小为4096字节。如未调用该函数,缓冲区大小取决于VISA和操作系统的设置。 错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。 错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能
- 10
VISA清空I/O缓冲区:清空由屏蔽指定的I/O缓冲区。 VISA资源名称(接线端):指定要打开的资源。VISA资源名称控件也可指定会话句柄和类。 屏蔽(接线端):指明要刷新的缓冲区。 该输入支持下列值【1,清空接收缓存区域;2,向设备写入传输缓存区域;3,清空接收缓冲区并放弃内容(设备不执行任何I/O);4,清空传输缓冲区域】。 错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。 VISA资源名称输出(接线端):是由VISA函数返回的VISA资源名称的副本。 错误输出包含错误信息。该输出将提供标准错误输出功能。
- 11
VISA串口中断 VI:发送指定端口上的中断。通过连线数据至VISA资源名称输入端可确定要使用的多态实例,也可手动选择实例。 VISA资源名称(接线端):指定要打开的资源。VISA资源名称控件也可指定会话句柄和类。 持续时间(接线端):指定中断的长度,以毫秒为单位。 VI运行时,该值暂时重写VISA Serial Setting:Break Length属性的当前设置。此后,VI将把当前设置返回到初始值。 错误输入(接线端):表明节点运行前发生的错误。该输入将提供标准错误输入功能。 VISA资源名称输出(接线端):是由VISA函数返回的VISA资源名称的副本。 错误输出(接线端):包含错误信息。该输出将提供标准错误输出功能。
范例
- 01
在LabVIEW 中,进行串口通信的基本步骤分为3步: 第一:串口初始化,利用Visa Configure Serial Port.vi节点设定串口的端口号、波特率、停止位、校验位、数据位。 第二:读写串口,根据需要利用Visa Write节点和Visa Read节点对串口进行读写(写入指令和读取指令之间加入适当的延迟)。 第三:关闭串口,停止所有读写操作。