LABVIEW 串口的使用.docx
- 文档编号:9792070
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:21
- 大小:1.14MB
LABVIEW 串口的使用.docx
《LABVIEW 串口的使用.docx》由会员分享,可在线阅读,更多相关《LABVIEW 串口的使用.docx(21页珍藏版)》请在冰豆网上搜索。
LABVIEW串口的使用
本站原创,转载请注明出处AVR与虚拟仪器
串口的使用
本页关键词:
labviewlabview下载labview8.2labview教程labview论坛labview8.20labview7.0labview序列号labview7.1
labview8.0串口的使用
串行通讯
终端与计算机之间或者计算机与计算机之间进行交换信息时,除了采用并行通讯方式之外,还经常采用串行通讯方式。
并行通讯是指数据的各位同时进行传送,其有点是传送数据速度快,缺点是有多少位数据就需要多少根传输线,这在数据位数较多,传送距离较远时就不宜采用。
串行通讯是指数据一位一位地按顺序传送,其突出优点是只需一根传输线,特别适应于远距离传输,缺点是传送速度较慢。
在微机测量,控制系统中,目前串行数据的传输大多采用异步通讯的方式。
同步通讯和异步通讯
串行通讯分为同步传送和异步传送两种方式。
?
同步传送方式要求通信双方以相同的速率进行,而且要准确地协调。
它通过共享一个单个时钟或定时脉冲源以保证发送方和接受方准确同步。
其特点是允许连续发送一组字符序列(而非单个字符),每个字符数据位数相同,没有起始位和停止位,效率高。
?
异步传送方式不要求通信双方同步,发送方和接受方可以有各自的时钟源。
为了能够实现通信,双方必须都遵循异步通信协议。
在异步通信中,通信双方必须规定两件事:
一是字符格式,即规定字符各部分所占的位数,是否采用奇偶校验,以及校验的方式;二是采用的波特率,以及时钟率与波特率之间的比例关系。
由此可见,异步通信方式的传输效率比同步通信方式低,但它对通信双方的同步要求大大降低,因而成本也比同步通信方式低。
DTE和DCE
在串行通讯中,用于发送和接收数据的设备称为数据终端设备(DataTerminalEquipment简写为DTE)。
DTE既可以是一台计算机,也可以是一台只接收数据的打印机。
用于连接DTE与数据通信网络的设备称为数据通信设备(DataCommunicationsEquipment简写为DCE),或称为数据电路终接设备。
DCE既可以是一个调制解调器,也可以是简单的线路驱动器。
波特率
在串行通讯中还有一个重要的指标——波特率(又称调制速率)。
波特率定义为每秒钟传送二进制数码的位数,以位/秒(bit/s)为单位,亦称“波特”。
在异步通讯中,波特率为每秒传送的字符数和每个字符位数的乘积,例如每秒传送的速率为120字符/秒,而每个字符又包含10位(1位起始位,7位数据位,1位奇偶校验位,1位停止位),则波特率为:
120字符/秒×10位/字符=1200位/秒=1200波特
注意:
波特率与时钟频率不是一回事,时钟频率比波特率要高得多,通常在高16倍或64倍。
由于异步通讯双方各用自己的时钟源采用较高频率的时钟,在一位数据内就有16位或64个时钟,捕捉正确的信号就可以得到保证,若时钟频率就是波特率,则频率稍有偏差就会发生接收错误。
LabVIEW中的串行通讯选板
安装完labVIEW8.2后,还需要安装VISA的驱动程序才能使用串口,驱动程序的下载地址为:
ftp:
//
LabVIEW中有关串口的函数选板如图,它位于函数→仪器I/O→串口
下面举一个例子来说明串口是如何进行通讯的
例:
双机通讯
1.功能描述
双机通信是在两台计算机之间进行串口通讯。
一台计算机作为服务器,通过RS-232串口向外发送数据;另一台计算机作为客户机,接收由服务器发送来的数据。
2.串口引脚连接
两台计算机的串口之间通过一根RS-232电缆线连接起来,串口电缆线采用三线制,它只使用发送数据(TxD),接收数据(RxD)和信号地(SG)三根信号线。
3.服务器程序设计
其程序设计如下:
㈠新建一个VI,在前面板上放置4个输入控件:
“端口号”,“波特率”,“数据比特”和“停止位”。
另外,放置一个字符串输入控件,在其内部输入向外发送的字符串数据。
添加程序文本标签“串口服务器”。
㈡在程序框图中放置一个层叠式顺序结构,创建两个分支。
在第0分支中,放置一个“SerialPortInit.vi”函数,并添加一个顺序局部变量;在第1分支中,放置一个“SerialPortWrite.vi”函数,它们位于labVIEW8.2→vi.lib→Instr→serial。
连线如图:
前面板如图:
4.客户机程序设计与服务器程序类似,其中使用了“BytesAtSerialPort.vi”函数和“SerialPortRead.vi”它们都在前文所提到的路径中,客户机程序框图如图:
前面板如图:
串口的内容就为大家简单的介绍这么多,有什么问题可上我们的论坛发帖,我们会尽力为大家解答。
Labview中串口通讯的研究收藏
一介绍Labview
Labvie是实验室虚拟仪器工程工作台(LabviewVirtualInstrumentsEngineeringWorkbench)的简称,是美国国家仪器公司开发的虚拟仪器开发平台软件,它的功能强大灵活,可以广泛应用于自动测量系统、工业过程自动化、实验室仿真等各个领域。
Labview使用图形化编程语言编程,简单直观,极大节省程序开发时间,同时Labview可提供丰富的库函数和功能模块,可完成各种各样的复杂编程任务。
二串口
串行通信接口标准经过使用和发展,目前已经有几种。
但都是在RS-232标准的基础上经过改进而形成的。
所以,以RS-232C为主来讨论。
RS-323C标准是美国EIA(电子工业联合会)与BELL等公司一起开发的1969年公布的通信协议。
它适合于数据传输速率在0~20000b/s范围内的通信。
这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。
由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。
三实现通讯的方式
(1)利用VISA
(2)使用ActiveX(采用MScomm)
四使用VISA实现串口通讯
VISA是应用于仪器编程的标准I/O应用程序接口(API),VISA本身并不具有仪器编程能力,VISA是调用低层驱动器的高层的API。
VISA可以和VXI、GPIB及串口仪器按照所使用的仪器调用相应的设备驱动器,具体的使用方法可参考Labview的用户手册
1说明
2.Labview中VISA串口读写
详细请见LABVIEW自带的例程serialwriteandread.vi
五使用MSCOMM
由于Labview对于ActiveX良好的支持性,我们可以很方便的借助于ActiveX技术来扩展Labview功能,增强灵活性的有效途径。
在串口通讯方面,我们采用微软提供的Mscomm控件来实现串口的通讯。
将MSCOMM32.OCX文件注册并且导入到labview当中,这样我们的USER.CONTROL下面有MicrosoftCommunicationsControl.ctl。
这样我们可以很方便的使用此ActiveX组件从而实现串口通讯。
注:
本图直接引用网络提供的例程,下面是界面(串口收发通讯程序南京刘亚)
六总结
通过以上的两种方式,我们很方便的实现labveiw实现串口通讯!
可以根据要求选择实现方式,自我感觉采用VISA实现方便,毕竟是NI公司自身开发实现的。
同时采用VISA可以很方便的实现多串口通讯以实现不同串口之间数据交换。
通过验证,该方法实用,可靠!
补充:
下图是多串口通讯的实现!
本文来自CSDN博客,转载请标明出处:
在LabVIEW中使用串口
时间:
2007-10-18 来源:
作者:
点击:
7921 字体大小:
【大中小】
第一部分使用LabVIEW系统VI
一、串口VI介绍
LabVIEW的串口通讯VI位于InstrumentI/OPlatte的Serial中,包括:
VI名称
VI功能
VISAConfigureSerialPort
初始化VISAresourcename指定的串口通讯参数
VISAWrite
将输出缓冲区中的数据发送到VISAresourcename指定的串口
VISARead
将VISAresourcename指定的串口接收缓冲区中的数据读取指定字节数的数据到计算机内存中
VISASerialBreak
向VISAresourcename指定的串口发送一个暂停信号
VISABytesatSerialPort
查询VISAresourcename指定的串口接收缓冲区中的数据字节数
VISAClose
结束与VISAresourcename指定的串口资源之间的会话
VISASetI/OBufferSize
设置VISAresourcename指定的串口的输入输出缓冲区大小
VISAFlushI/OBuffer
清空VISAresourcename指定的串口的输入输出缓冲区
二、使用说明
在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。
图1、串口操作数据流图
首先需要调用VISAConfigureSerialPort完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等。
图2、初始化串口
如果初始化没有问题,就可以使用这个串口进行数据收发。
发送数据使用VISAWrite,接收数据使用VISARead。
在接收数据之前需要使用VISABytesatSerialPort查询当前串口接收缓冲区中的数据字节数,如果VISARead要读取的字节数大于缓冲区中的数据字节数,VISARead操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。
当然也可以分批读取接收缓冲区或者只从中读取一定字节的数据。
图3、从串口发送数据 图4、从串口接收数据
在某些特殊情况下,需要设置串口接收/发送缓冲区的大小,此时可以使用VISASetI/OBufferSize;而使用VISAFlushI/OBuffer则可以清空接收与发送缓冲区。
在串口使用结束后,使用VISAClose结束与VISAresourcename指定的串口之间的会话。
图5、设置缓冲区大小 图6、清空缓冲区 图7、结束会话/线程
具体的例子可以参考:
examples\instr\smplserl.llb。
第二部分使用MSCOMM控件
在LabVIEW中使用MSCOMM控件,与在VC、VB中使用一样。
同样可以使用中断方式进行接收。
图8、使用控件的串口收发程序
图9、程序数据流图
首先通过LabVIEW的工具菜单“Tools>>Advanced>>ImportActiveXControls”将Microsoft的串口控件-“MicrosoftCommunicationsControl,version6.0”添加到LabVIEW环境中,存放在缺省路径即可,这样在UserControlsPalette里面可以找到这个控件。
图10、添加ActiveX控件菜单
图11、选择添加用户控件
图12、用户控件
将串口控件
放置在FrontPanel上,在框图程序中用控件属性对其进行编程,实现所需要的功能。
注意:
一个串口资源要有一个MSCOMM控件与之相对应。
第三部分注意事项
一、串口通讯的波特率设置要精确,比如要求9600的波特率,则晶振应选择11.0593MHz或其倍数。
二、由于通常情况下LabVIEW串口VI接收或发送的都是字符串(Normal),所以如果需要发送或接收十六进制数值(Hex),请在发送或接收之前进行必要的转换。
2.1、数值型数据的处理方法:
1.如果这些数据是静态的,也就说在程序设计阶段要传输的数据就已经确定了,在这种情况下,首先设置VISAWrite的writebuffer的显示属性为HexDisplay,然后直接输入要发送的16进制字符串就可以了。
串口设备的控制命令通常是由一个或多个16进制字符组成的,当我们需要对其进行控制时经常会采用这种方法发送控制命令。
2.数据是动态的;即要传输的数值型数据是动态产生和变化的,在发送之前首先要将其转换成对应的16进制字符串,才能赋给VISAWrite发送。
将这些数据构成一个数组,用ByteArrayToString进行转换,转换的结果就是对应数组数值的字符串,可以提交VISAWrite发送。
或者使用TypeCast也可以实现同样的功能。
图13、串口数据转换界面
图14、串口数据转换数据流图
图15、操作界面
图16、单片机C程序
2.2、字符串型数据的处理方法:
我们在处理过程当中,传输的数据可能具有一定格式或协议,比如一个完整的数据帧包括起始段、数据段、校验段等等,而每一段往往又有几个部分组成,这几个部分的类型和长度可能又不尽相同,可能是数值型的,可能是字符型的,也可能是布尔型的,单字节或者是多字节。
此时我们往往都采用统一的字符形式来处理这些数据,因此有时候我们说,字符是LabVIEW里最方便的数据类型。
经过打包的字符数据要经过串口发送需要进行必要的转换,否则传输将出错。
比如我们打包过后需要发送的的字符串为:
3412567894(空格为了区分),如果直接将其赋给VISAWrite发送,串口上的数据将是:
33343132353637383934。
正确的转换程序如下。
图17、字符型数据处理
数据接收:
从计算机串口接收到的数据是16进制的ASCII码,要转换成对应的数值型数据,可以使用StringToByteArray或者TypeCast。
三、LabVIEW串口VI不能使用中断方式传输。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LABVIEW 串口的使用 串口 使用