APP下载

一种改进的LabVIEW串口通信系统的实现

2010-06-20施雅婷郭前岗周西峰

电子测试 2010年8期
关键词:程序框图调用串口

施雅婷,郭前岗,周西峰

(南京邮电大学自动化学院,南京210003)

0 引言

随着计算机技术,测试系统总线技术的发展,计算机和仪器之间的通信成为必要,串口是常用的计算机与外部串行设备之间的数据传输通道,通过通用异步串行(UART)接口(如RS232、RS485等)与计算机组成的虚拟仪器系统已经越来越多的用于仪器测试等领域[1]。由于LabVIEW编写的串口通信程序通常不能自动获得串口号,需要手动选择再打开串口,这就需要使用者事先知道串口号,给使用者带来了不便,对此结合USB-UART硬件电路用LabVIEW设计了一个能自动识别串口号的串行通信系统。

1 USB-UART硬件电路

1.1 CH341的功能特性

USB-UART(USB转异步串行通信接口)采用CH341为核心芯片。在异步串口方式下,CH341可以用于升级原串口外围设备,或者通过USB 总线为计算机增加额外串口。通过外加电平转换器件,可以进一步提供RS232、RS485、RS422[2]等接口。

1.2 USB-UART电路原理

USB-UART电路的原理如图1所示。TEN#管脚为串口发送使能端,低电平有效。CH341直接用USB口提供+5V电源,当USB_M_A直接连到计算机的USB口时,红灯PWR亮,说明电源已接通,当ACT#管脚信号为低电平时,绿灯OK亮,说明USB设备配置完成。此外,在CH341与RS232之间必须加一个TTL-RS232电平转换芯片MAX202,其作用是将TTL电平串行信号转换为RS232电平。

2 串口号自动识别的实现方法

2.1 LabVIEW中DLL文件的调用

图1 USB-UART电路原理图

LabVIEW是通过“调用库函数节点”函数来完成对DLL文件调用的[3]。“调用库函数节点”位于函数子选板的“互连接口—>库与可执行”函数子选板中。 双击“调用库函数节点”函数便可以对其进行配置。首先是函数选项卡的设置,单击“浏览”按钮,找到CH341PT.DLL文件路径,在函数名下拉列表框中找到CH341PtNameIsCH341函数,“线程”选项组中选择“在UI线程中运行”,调用规范中选择“stdcall(WINAPI)”。其次是对参数选项卡的设置,在“返回类型”的“当前参数”选项组中进行返回类型的设置,“类型”下拉列表框中选择“数值”,“数据类型”下拉列表框中选择“有符号32位整型”,这样就可以返回一个反映布尔值的int32类型的值,然后单击“+”按钮,添加参数,将默认名称“参数1”改为iPortName,类型为字符串类型,因为在CH341PtNameIsCH341函数声明中定义了参数iPortName。最后是对回调选项卡的设置,在“保留”下拉列表框选择“CH341PtNameIsCH341”,单击“确认”后设置完毕。配置好的“调用库函数节点”可以输出一个数值类型的0或1和查询到的端口名称,从而判断是否找到了CH341端口以及输出获得的端口号。

2.2 串口识别子VI

图2为串口识别子VI的程序框图。该程序的主要功能是通过查询法自动找到CH34的串口号。通过一个while循环,并且设置循环停止条件为i≥255,即输出的CH341端口号最大限制为COM255,当然,可以根据实际需要进行修改。“调用库函数节点”函数的返回值为真则表示找到串口,此时前面板的指示灯亮,同时若“调用库函数节点”函数的iPortName输出端输出查询到的端口号,则程序停止,为假则继续查询。若端口号超过最大串口号限制,则程序亦停止。

3 串口通信系统主程序的实现

LabVIEW中使用标准的输入/输出应用程序编程接口(Virtual Instrument Software Architecture,VISA)完成仪器的控制,VISA是对其他总线驱动函数进行的一个统一封装的高层API。使用者可以通过调用相同的VISA库函数来控制不同的仪器,包括串口、GPIB、USB等。LabVIEW内置了8个串口通信功能函数,可以分别实现串口初始化、串口写、串口读、检测串口缓存、中断以及关闭串口等功能。LabVIEW串口通信系统的主程序框图如图3所示。该主程序按照功能可分为四个模块:串口初始化模块,数据发送模块,数据接收模块和实时数据显示模块。

3.1 串口初始化模块

该模块的核心部分是“VISA配置串口”函数的调用。VISA函数是通过VISA资源名称来标识仪器的,在“VISA配置串口”函数中的VISA资源名称端口连接的是串口识别子VI中iPortName,其它端口还包括波特率、数据位、停止位、校验位的选择等。

图2 串口识别子VI的程序框图

3.2 数据发送模块

该模块的核心部分是“VISA写入”函数,此函数的功能是将写入缓冲区的数据写入VISA资源名称指定的设备或接口。

3.3 数据接收模块

图3 LabVIEW串口通信系统主程序框图

该模块的核心部分是“VISA读取”函数,此函数的功能是从VISA资源名称指定的设备或接口中读取指定数量的字节,并将数据返回至读取缓冲区。由于“VISA读取函数”的读取字节总数端口输入的是属性节点的属性值——Number of Bytes at Serial Port(串口字节数),读取缓冲区能够将所发送的全部数据准确接收。

3.4 实时数据显示模块

由于从“VISA读取”函数的读取缓冲区中读取的数据类型是字符串,要实现实时显示发送区所发送的数据,需要将字符串类型的数据转变为int32类型的数组,然后通过波形图表实时显示接收的数据。图4为字符串转int32数组的子VI程序框图。

图4 字符串转int32型数组子VI程序框图

4 串口通信系统测试结果

将USB-UART转换器插入计算机USB接口之前必须先安装CH341相关驱动,安装成功后绿灯亮,指示串口虚拟成功。将转换器的TXD、RXD信号线短接,使其自发自收,运行LabVIEW串口通信系统程序,此时前面板灯亮,并指示串口号为COM9,表示已找到插入的USB-UART串口号,将波特率、校验位和停止位设置好后,往发送区输入一周期的正弦数据,按下发送数据按钮,接收数据区便会重复显示刚才发送的正弦数据,波形图表上显示正弦波形,并随着时间的推移缓慢移动,直到按下停止发送按钮。自发自收时系统测试结果如图5所示。用DSP开发板作为下位机,波特率设置与DSP串口的波特率一致,使DSP通过串口发送同样一组数据,得到的结果如图6所示。

图5 串口通信系统测试结果

图6 DSP串口发送数据测试结果

5 结束语

本系统采用USB-UART来设计计算机通信接口,利用LabVIEW调用DLL文件实现了一个改进的LabVIEW串口通信系统。该系统具有能够自动识别串口号的优点,使用方便,通用性强,适合不具备串口的计算机进行设备的串口调试,具有良好的可移植性和可扩展性。现在串口号自动识别程序已应用于本实验室现有的探伤仪界面程序中,通信时只需将探伤仪的串口外连USB-UART转换器,完善了探伤仪与上位机之间的通信,用户操作起来更加方便。随着USB技术的不断发展,USB端口的普遍使用,USB-UART也越来越多的运用于诸如监视和工业控制这些仍使用异步串行接口进行通信的应用领域中。

[1]吕向锋,高洪林.基于LabVIEW串口通信的研究[J].理论与方法,2009,28(12):27-30.

[2]何广军.USB接口在串行通信中的应用[J].电子技术应用,2002(7):58-59.

[3]孙晓云.接口与通信技术原理与应用[M].北京:中国电力出版社,2007:21-27.

[4]杨乐平,李海涛,杨磊.LabVIEW程序设计与应用[M].北京:电子工业出版社,2005:431-439.

[5]雷振山,魏丽等.LabVIEW高级编程与虚拟仪器工程应用[M].北京:中国铁道出版社,2009:82-84.

[6]戴鹏飞,王胜开等.测试工程与LabVIEW应用[M].北京:电子工业出版社,2006:158-161.

[7]戴鹏,刘剑等.基于TMS320F2812与LabVIEW的串口通信[J].计算机工程,2009,35(4):94-96.

[8]马宏伟,王华玲,李海宁.基于LabVIEW的超声检测虚拟仪器开发[J].仪器仪表学报增刊, 2006:1785-1787.

猜你喜欢

程序框图调用串口
“顺势而下”破解程序框图
浅谈AB PLC串口跟RFID传感器的通讯应用
核电项目物项调用管理的应用研究
算法与程序框图常考类型
LabWindows/CVI下基于ActiveX技术的Excel调用
程序框图问题的精彩交汇
基于系统调用的恶意软件检测技术研究
程序框图题盘点
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索