基于Labview的串口通信软件设计.doc
《基于Labview的串口通信软件设计.doc》由会员分享,可在线阅读,更多相关《基于Labview的串口通信软件设计.doc(8页珍藏版)》请在冰点文库上搜索。
编号:
《虚拟仪器》课程考核论文
基于labview的串口通信软件设计
论文作者姓名:
XXX
作者学号:
所在学院:
物理与电子学院
所学专业:
测控技术与仪器
导师姓名职称:
高伟
论文完成时间:
2014.12.30
基于labview的串口通信软件设计
金鹏举(河南大学2011级测控专业)
摘要:
串口通信因为其简单,灵活易用,在许多领域有着广阔的应用前景。
本文在深入介绍串口通信技术的基础上,结合自身的工程实践经验,阐述了labview串口编程的技术要点,设计一个适用范围较广、实用性较强的串口通信助手。
关键词:
串行通信,RS-232,labview,串口
Abstract:
aserialportcommunicationbecauseofitssimple,flexibleandeasytouse,hasabroadapplicationprospectinmanyfields.Inthispaper,basedonin-depthintroductionofserialportcommunicationtechnology,combinedwithitsownengineeringpracticeexperience,thispaperexpoundsthemaintechnicalpointsofthelabviewserialportprogramming,designawideapplicationscope,practicalserialportcommunicationassistant.
Keywords:
serialcommunications,RS-232,labview,serialport
1.课题研究背景
随着计算机系统的应用和微机网络的发展,通信功能越来越显得重要。
这里所说的通信是只计算机与外界的信息交换。
因此,通信既包括计算机与计算机之间,也包括计算机和外部设备之间、计算机与单片机之间的信息交换。
由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,尤其是在数据量比较大的场合下,利用一个主机向各个从机发送控制指令是一个很好的解决方案,在这个过程中,串口通信是实现计算机和外部设备之间、单片机与单片机、计算机与单片机之间通信的关键。
2.串口通信的原理
串口通信的硬件投资少,软件编程简单,在低速少量数据传输方面的应用极其广泛的应用。
尤其使用较多的是RS-485通信协议,因为RS-485的差分电压传输方式能有效的抑制共模干扰,传输距离能达到几百米。
串口通信的本质就是两个CPU以规定的通信协议进行数据交换。
目前常用的串口协议有RS232通信协议和RS485通信协议。
RS232和RS485规定的通信协议是相同的,只是物理层规定的电平不一样。
而RS232属于全双工串行异步通信协议,RS485属于半双工串行异步通信协议。
在异步通行中有两个比较重要的指标:
数据帧格式和波特率。
所以串口通信最重要的参数是波特率、起始位、数据位、停止位和奇偶校验。
波特率:
是一个衡量通信速度的参数,表示每秒钟传送的bit的个数。
RS232规定的数据帧格式为:
1位起始位+5–8位的数据位+可选奇偶校验位+1–2位的停止位。
起始位:
当通信线上没有数据被传送时处于逻辑“1”状态,当发送设备要发送一个数据时,先发送一个逻辑“0”信号,这个低电平就是起始位,起始位通过通信线传向接收设备,接收端检测到这个低电平后,就确认开始接收数据了。
起始位的作用是使通信双方在传送数据前协调同步。
数据位:
是衡量通信中实际数据位的参数,当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7或8位,如何设置取决于要传送的信息。
每个包是指一个字节,包括开始/停止位、数据位和奇偶校验位,由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
停止位:
用于表示单个包的最后一位。
典型的值为1、1.5和2位,它是一个数据的结束标志,接收端接收到停止位后,通信线路上会回复逻辑“1”的状态,知道下一个起始位的到来。
奇偶校验位:
在串行通信中一种简单的检错方式,可以选择不采用。
常用的有两种校验方式:
奇校验和偶校验。
对于奇校验,串口会自动设置校验位的高低电平,从而使数据帧中逻辑1出现的个数为奇数。
相应的,对于偶校验,串口会自动设置校验位的高低电平,从而使数据帧中逻辑1出现的个数位偶数。
3.软件设计
3.1 软件平台labview
LabVIEW(LaboratoryVirtualInstrumentEngineering)是一种基于图形开发、调试和运行程序的集成化环境,实现了虚拟仪器的概念,LabVIEW程序称为虚拟仪器程序.采用图形化的程序语言(G语言)。
这种语言不必写程序代码,看到的是直观明了的流程图语言,所以编程非常方便。
该语言提供了大量的常用控件,如旋钮、开关、按钮、图形显示等,可直接使用,不像Delphi等高级语言实现一个旋钮需要几十行代码,因此,LabVIEW大大地缩短了软件的研发周期。
LabVIEW能与多种语言通用,如Matlab,C等,例如将Matlab脚本嵌入到LabVIEW程序,保证了一些LabVIEW所不具备的功能得以实现,如小波分析、神经网络等。
此外,通过加亮执行、单步、断点和探针帮助用户跟踪经过VI的数据流,使LabVIEW的调试直观方便.
3.2软件设计思路
在LabVIEW中实现串行通信的方式主要有利用VISA和使用ActiveX控件两种。
3.2.1利用VISA实现串口通信
虚拟仪器的软件系统框架包括三个部分:
VISA库、仪器驱动程序、应用软件。
VISA作为测试程序和数据传输总线的中间层,为应用程序和仪器总线的通信建立了通道[2]。
VISAI/O库为应用程序的建立提供了一致的接口,因而应用程序不需要关心实际的数据传输介质是GPIB电缆还是串口线,可以认为在VISA库中包含了与各种接口进行连接所需的程序。
VISA是应用于仪器编程的标准I/O应用程序接口(API),VISA本身并不具有仪器编程能力,VISA是调用低层驱动器的高层API[3]。
使用时需要安装VISA驱动程序。
3.2.2使用ActiveX控件实现串行通信
ActiveX通常翻译为“微软倡导的网络化多媒体对象技术”,实际上它是一整套跨越编程语言的软件开发方法与规范。
利用LabVIEW的ActiveX控件容器,可以调用第三方提供的ActiveX控件,从而使程序功能更加强大,节省程序开发时间[6]。
3.3软件设计过程
本次设计利用VISA实现串口通信。
首先需要调用VISAConfigureSerialPort完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等,
如果初始化没有问题,就可以使用这个串口进行数据收发。
发送数据使用VISAWrite,如图3所示。
接收数据使用VISARead,如图4所示。
在接收数据之前需要使用VISABytesatSerialPort查询当前串口接收缓冲区中的数据字节数,如果VISARead要读取的字节数大于缓冲区中的数据字节数,VISARead操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。
当然也可以分批读取接收缓冲区或者只从中读取一定字节的数据。
串行通信系统可分为以下3个模块:
(1)端口配置模块:
负责串口的开关、端口的选择、波特率、数据位、停止位、校验位的选择等。
(2)数据发送模块:
负责实现发送数据的处理与数据的多种发送方式,具有选择手动发送或自动发送、选择发送数据的类型、设置自动发送时间间隔、读取要发送的文本、清空发送区域等功能。
(3)接收显示模块:
负责实现接收数据的处理与数据的多种显示方式,具有自动接收和结束接收的功能,能够保存接收的数据和清空显示区域。
程序框图如下:
图1:
串口通信程序框图
程序前面板设计如下:
3.4程序调试
由于条件限制,手中没有单片机,所以软件调试使用虚拟串口软件和之前用MFC写的串口调试助手。
1.首先打开虚拟串口,添加虚拟的串口COM1和COM2(虚拟串口添加的端口是相连的)
2.打开串口调试助手和VI程序分别设置为COM1(9600-N-8-1),COM2(9600-N-8-1)
4.设计总结
本次串口通信软件设计首先按照规定的要求实现了如下功能:
1.能与单片机进行RS-232串口通信,能发送和接收。
2.显示通信过程中发送和接收的数据。
3.波特率、数据位、校验位和停止位可调。
4.串口号可选择。
利用LabVIEW进行产品开发可以极大地提高
开发效率,本文介绍的LabVIEW串口编程,就是一个很好的证明。
将LabVIEW软件开发与串口通信结合设计开发数据采集系统和控制硬件设备,不仅能节约大量开发时间和减少硬件成本,还可以为今后的系统升级留有很大空间,同时还使得系统具有很好的可移植性。
参考文献:
[1]李宇华.虚拟仪器开放平台LabVIEW介绍[J].计算机自动测量与控制,1996,(3):
32-45.
[2]KALKMANCJ.LabVIEW:
Asoftwaresystemfordatascquisition,dataanalysis,andinstrumentcontrol[J].JournalofClinicalMonitoringandComputing.2005,11
(1):
1387-1397.
[3]LEONW.IICounch.Digital&analogcommunicationsystems(7thEd.)[M].Macmillan:
NewYork,2007,327-333.
[4]杨乐平,李海涛,肖相少,等.LabVIEW程序设计与应用[M].北京:
电子工业出版社,2001.
[5]畅国忠.基于VISA的事件处理方法与实现[J].测控技术,2000,(9):
60-76.
[6]李刚,林凌.LabVIEW易学易用的计算机图形化编程语言[M].北京:
北京航空航天大学出版社,2001.
[7]周军伟.基于虚拟仪器的超声检测的研究[D].西安理工大学,2005
[8]李金霞,邱公伟.虚拟仪器及Labview概况[J].福建电脑,2002年第9期,14-15
[9]李扬,郑莹娜,朱铮涛.图形化编程语言Labview环境及其开放性[J].计算机工程,1999(25:
4),63-65