在labview中使用串口进行通讯

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设为首页加入收藏联系站长
今天是: 2005年11月25日 星期五 | 首页 | 技术文章 | 资源下载
|
您现在的位置: LabVIEW和虚拟仪器协作同盟 >> 技术文章 >> 原创文章 >> 正文 用户登录
新用户注册
[图文]串口常识(三)
热 荐 ★★★★
在LabVIEW中使用串口进行通讯
副标题:第三部分
作者:测试工程师 文章来源:本站原创 点击数:1308 更新时间:2005-5-18
在LabVIEW 中应用串口
第一部分使用LabVIEW 系统VI
一、串口VI 介绍
LabVIEW 的串口通讯VI 位于Instrument I/O Platte 的Serial 中,包括:
二、使用说明

LabVIEW 环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。

首先需要调用VISA Configure Serial Port 完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控
VI 名称
VI 功能
VISA Configure Serial Por
t
初始化VISA resource name 指定的串口通讯参数
VISA Write 将输出缓冲区中的数据发送到VISA resource name 指定的串口
VISA Read
将VISA resource name 指定的串口接收缓冲区中的数据读取指定字节数的数据到计算中
VISA Serial Break
向VISA resource name 指定的串口发送一个暂停信号
VISA Bytes at Serial Port 查询VISA resource name 指定的串口接收缓冲区中的数据字节数 VISA Close
结束与VISA resource name 指定的串口资源之间的会话 VISA Set I/O Buffer Size 设置VISA resource name 指定的串口的输入输出缓冲区大小 VISA Flush I/O Buffer
清空VISA resource name 指定的串口的输入输出缓冲区
图1、串口操作数据流图
如果初始化没有问题,就可以使用这个串口进行数据收发。

发送数据使用VISA Write ,接收数据使用VISA Read 。

在接收数据之使用VISA Bytes at Serial Port 查询当前串口接收缓冲区中的数据字节数,如果VISA Read 要读取的字节数大于缓冲区中的数据数,VISA Read 操作将一直等待,直至Timeout 或者缓冲区中的数据字节数达到要求的字节数。

当然也可以分批读取接收缓冲区从中读取一定字节的数据。

在某些特殊情况下,需要设置串口接收/发送缓冲区的大小,此时可以使用VISA Set I/O Buffer Size ;而使用VISA Flush I/O 则可以清空接收与发送缓冲区。

在串口使用结束后,使用VISA Close 结束与VISA resource name 指定的串口之间的会话。

具体的例子可以参考:examples\instr\smplserl.llb 。

第二部分使用MSCOMM 控件
在LabVIEW 中使用MSCOMM 控件,与在VC 、VB 中使用一样。

同样可以使用中断方式进行接收。

具体的例子可以发 索取。

图2、初始化串口
图3、从串口发送数据
图4、从串口接收数据
图5、设置缓冲区大小
图6、 清空缓冲区
图7、结束会话/线程
图8、使用控件的串口收发程序
图9、程序数据流图
首先通过LabVIEW的工具菜单“Tools >> Advanced >> Import ActiveX Controls”将Microsoft的串口控件-“Microsoft Co cations Control,version 6.0”添加到LabVIEW环境中,存放在缺省路径即可,这样在User Controls Palette里面可以找到这件。

图10、添加ActiveX控件菜单
图11、选择添加用户控件
将串口控件
放置在Front Panel 上,在框图程序中用控件属性对其进行编程,实现所需要的功能。

注意:一个串口资源要有一个MSCOMM 控件与之相对应。

第三部分 注意事项
一、串口通讯的波特率设置要精确,比如要求9600的波特率,则晶振应选择11.0593MHz 或其倍数。

二、由于通常情况下LabVIEW 串口VI 接收或发送的都是字符串(Normal),所以如果需要发送或接收十六进制数值(Hex),请或接收之前进行必要的转换。

2.1、数值型数据的处理方法:
2.1.1、1、如果这些数据是静态的,也就说在程序设计阶段要传输的数据就已经确定了,在这种情况下,首先设置VISA Write e buffer 的显示属性为Hex Display ,然后直接输入要发送的16进制字符串就可以了。

串口设备的控制命令通常是由一个或多制字符组成的,当我们需要对其进行控制时经常会采用这种方法发送控制命令。

2.1.2、数据是动态的;即要传输的数值型数据是动态产生和变化的,在发送之前首先要将其转换成对应的16进制字符串,才能A Write 发送。

将这些数据构成一个数组,用Byte Array To String 进行转换,转换的结果就是对应数组数值的字符串,可ISA Write 发送。

或者使用Type Cast 也可以实现同样的功能。

图12、用户控件
图13、串口数据转换界面图14、串口数据转换数据流图
图15、操作界面
图16、单片机C程序
2.2、字符串型数据的处理方法:
我们在处理过程当中,传输的数据可能具有一定格式或协议,比如一个完整的数据帧包括起始段、数据段、校验段等等,而每一有几个部分组成,这几个部分的类型和长度可能又不尽相同,可能是数值型的,可能是字符型的,也可能是布尔型的,单字节或节。

此时我们往往都采用统一的字符形式来处理这些数据,因此有时候我们说,字符是LabVIEW里最方便的数据类型。

经过打包的字符数据要经过串口发送需要进行必要的转换,否则传输将出错。

比如我们打包过后需要发送的的字符串为:34 12 94(空格为了区分),如果直接将其赋给VISA Write发送,串口上的数据将是:33 34 31 32 35 36 37 38 39 34。

正确程序如下。

图17、字符型数据处理
数据接收:
从计算机串口接收到的数据是16进制的ASCII码,要转换成对应的数值型数据,可以使用String To Byte Array或者Type
三、LabVIEW串口VI不能使用中断方式传输。

文章录入:admin 责任编辑z上一篇文章: 串口常识(二)
z下一篇文章: LabVIEW是一种通用的编程语言吗?(中英文对照)
【字体:小大】【发表评论】【告诉好友】【打印此文】【关
(只显示最新10条。

评论内容只代表网友观点,与本站立场无关!) 没有任何评论
| 设为首页 | 加入收藏 | 联系站长 | 管理登录 |
版权所有(C)2005 南京众维测试技术有限责任公司
技术支持:测试工程师 网站维护:测试工程师
本网站内容未经允许,严禁任何形式的转载或复制!。

相关文档
最新文档