问题: 串行通讯的基本架构是什么?
解答: 串口通讯架构
每一个异步串行系统的核心都是一个UART(通用异步接收机/发送机)。UART不仅控制传输的数据,相应的电平,同时也控制通讯的速度。UART能够存储足够的信息,所以保证了在电脑忙得时候,数据流也能连续传输。这对于同时处理大量任务的操作系统非常有帮助。下面附图是理想串行通讯的示意。我们大部分的串行卡都有一个输入输出的FIFO(查看目录了解详细信息)。FIFO的数据可以通过串行驱动获取。串行驱动会自动地把FIFO的数据传输到软件的缓存,这个缓存是可以在应用软件由用户配置的(比如,在LabVIEW您可以使用Serial Port Init VI来设置缓存去大小)。读接口的数据实际上包含从软件缓存读的过程。确认硬件操作的回路测试有三种方式确认串口的操作:LabVIEW,超级终端和LabWindows/CVI。这三种方式进行回路测试是把串口的发送和接受引脚短接。第一步描述短接引脚的过程。LabVIEW的处理写在下面,而超级终端和LabWindows/CVI的过程在本文后面的链接里。对于LabVIEW建议使用如下步骤:
a,连接一根电缆到串口。最常用的RS-232电缆是9针或者25针(DB-9或者DB-25)。在电缆端把2、3引脚短接。这会把计算机发送数据的线连接到接收数据的线。一旦短接,BD-9的上一排变成【1 2=3 4 5】。
对于RS-485端口,电压是差分的。因此,你必须短接TXD+和RXD+、TXD-和RXD-(对于DB-9电缆,连接pin4到pin8和pin5到pin9;对于模块化接口,连接pin2到pin6和pin3到pin7;对于Combicon接头,连接pin1到pin5和pin2到pin4。)确保你的软件配置为4线模式
二、使用说明
在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。
先需要调用VISA Configure Serial Port完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等。
如果初始化没有问题,就可以使用这个串口进行数据收发。发送数据使用VISA Write,接收数据使用VISA Read。在接收数据之前需要使用VISA Bytes at Serial Port查询当前串口接收缓冲区中的数据字节数,如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。当然也可以分批读取接收缓冲区或者只从中读取一定字节的数据。
在某些特殊情况下,需要设置串口接收/发送缓冲区的大小,此时可以使用VISA Set I/O Buffer Size;而使用VISA Flush I/O Buffer则可以清空接收与发送缓冲区。在串口使用结束后,使用VISA Close结束与VISA resource name指定的串口之间的会话。
具体的例子可以参考:examplesinstrsmplserl.llb。
第二部分使用MSCOMM控件
在LabVIEW中使用MSCOMM控件,与在VC、VB中使用一样。同样可以使用中断方式进行接收。具体的例子可以发索取。
首先通过LabVIEW的工具菜单“Tools >> Advanced >> Import ActiveX Controls”将Microsoft的串口控件-“Microsoft Communications Control,version 6.0”添加到LabVIEW环境中,存放在缺省路径即可,这样在User Controls Palette里面可以找到这个控件。
图:添加ActiveX控件菜单[page]
图:选择添加用户控件
将串口控件 放置在Front Panel上,在框图程序中用控件属性对其进行编程,实现所需要的功能。
注意:一个串口资源要有一个MSCOMM控件与之相对应。
第三部分 注意事项
一、串口通讯的波特率设置要精确,比如要求9600的波特率,则晶振应选择11.0593MHz或其倍数。
二、由于通常情况下LabVIEW串口VI接收或发送的都是字符串(Normal),所以如果需要发送或接收十六进制数值(Hex),请在发送或接收之前进行必要的转换。
2.1、数值型数据的处理方法:
2.1.1、1、如果这些数据是静态的,也就说在程序设计阶段要传输的数据就已经确定了,在这种情况下,首先设置VISA Write的write buffer的显示属性为Hex Display,然后直接输入要发送的16进制字符串就可以了。串口设备的控制命令通常是由一个或多个16进制字符组成的,当我们需要对其进行控制时经常会采用这种方法发送控制命令。
2.1.2、数据是动态的;即要传输的数值型数据是动态产生和变化的,在发送之前首先要将其转换成对应的16进制字符串,才能赋给VISA Write发送。将这些数据构成一个数组,用Byte Array To String进行转换,转换的结果就是对应数组数值的字符串,可以提交VISA Write发送。或者使用Type Cast也可以实现同样的功能。
2.2、字符串型数据的处理方法:
我们在处理过程当中,传输的数据可能具有一定格式或协议,比如一个完整的数据帧包括起始段、数据段、校验段等等,而每一段往往又有几个部分组成,这几个部分的类型和长度可能又不尽相同,可能是数值型的,可能是字符型的,也可能是布尔型的,单字节或者是多字节。此时我们往往都采用统一的字符形式来处理这些数据,因此有时候我们说,字符是LabVIEW里最方便的数据类型。经过打包的字符数据要经过串口发送需要进行必要的转换,否则传输将出错。比如我们打包过后需要发送的的字符串为:34 12 56 78 94(空格为了区分),如果直接将其赋给VISA Write发送,串口上的数据将是:33 34 31 32 35 36 37 38 39 34。正确的转换程序如下。
数据接收:
从计算机串口接收到的数据是16进制的ASCII码,要转换成对应的数值型数据,可以使用String To Byte Array或者Type Cast。
三、LabVIEW串口VI不能使用中断方式传输。
关键字:LABVIEW 通讯问题
引用地址:LABVIEW的通讯问题
解答: 串口通讯架构
每一个异步串行系统的核心都是一个UART(通用异步接收机/发送机)。UART不仅控制传输的数据,相应的电平,同时也控制通讯的速度。UART能够存储足够的信息,所以保证了在电脑忙得时候,数据流也能连续传输。这对于同时处理大量任务的操作系统非常有帮助。下面附图是理想串行通讯的示意。我们大部分的串行卡都有一个输入输出的FIFO(查看目录了解详细信息)。FIFO的数据可以通过串行驱动获取。串行驱动会自动地把FIFO的数据传输到软件的缓存,这个缓存是可以在应用软件由用户配置的(比如,在LabVIEW您可以使用Serial Port Init VI来设置缓存去大小)。读接口的数据实际上包含从软件缓存读的过程。确认硬件操作的回路测试有三种方式确认串口的操作:LabVIEW,超级终端和LabWindows/CVI。这三种方式进行回路测试是把串口的发送和接受引脚短接。第一步描述短接引脚的过程。LabVIEW的处理写在下面,而超级终端和LabWindows/CVI的过程在本文后面的链接里。对于LabVIEW建议使用如下步骤:
a,连接一根电缆到串口。最常用的RS-232电缆是9针或者25针(DB-9或者DB-25)。在电缆端把2、3引脚短接。这会把计算机发送数据的线连接到接收数据的线。一旦短接,BD-9的上一排变成【1 2=3 4 5】。
对于RS-485端口,电压是差分的。因此,你必须短接TXD+和RXD+、TXD-和RXD-(对于DB-9电缆,连接pin4到pin8和pin5到pin9;对于模块化接口,连接pin2到pin6和pin3到pin7;对于Combicon接头,连接pin1到pin5和pin2到pin4。)确保你的软件配置为4线模式
二、使用说明
在LabVIEW环境中使用串口与在其它开发环境中开发过程类似,基本的流程框图如下。
先需要调用VISA Configure Serial Port完成串口参数的设置,包括串口资源分配、波特率、数据位、停止位、校验位和流控等等。
如果初始化没有问题,就可以使用这个串口进行数据收发。发送数据使用VISA Write,接收数据使用VISA Read。在接收数据之前需要使用VISA Bytes at Serial Port查询当前串口接收缓冲区中的数据字节数,如果VISA Read要读取的字节数大于缓冲区中的数据字节数,VISA Read操作将一直等待,直至Timeout或者缓冲区中的数据字节数达到要求的字节数。当然也可以分批读取接收缓冲区或者只从中读取一定字节的数据。
在某些特殊情况下,需要设置串口接收/发送缓冲区的大小,此时可以使用VISA Set I/O Buffer Size;而使用VISA Flush I/O Buffer则可以清空接收与发送缓冲区。在串口使用结束后,使用VISA Close结束与VISA resource name指定的串口之间的会话。
具体的例子可以参考:examplesinstrsmplserl.llb。
第二部分使用MSCOMM控件
在LabVIEW中使用MSCOMM控件,与在VC、VB中使用一样。同样可以使用中断方式进行接收。具体的例子可以发索取。
首先通过LabVIEW的工具菜单“Tools >> Advanced >> Import ActiveX Controls”将Microsoft的串口控件-“Microsoft Communications Control,version 6.0”添加到LabVIEW环境中,存放在缺省路径即可,这样在User Controls Palette里面可以找到这个控件。
图:选择添加用户控件
将串口控件
注意:一个串口资源要有一个MSCOMM控件与之相对应。
第三部分 注意事项
一、串口通讯的波特率设置要精确,比如要求9600的波特率,则晶振应选择11.0593MHz或其倍数。
二、由于通常情况下LabVIEW串口VI接收或发送的都是字符串(Normal),所以如果需要发送或接收十六进制数值(Hex),请在发送或接收之前进行必要的转换。
2.1、数值型数据的处理方法:
2.1.1、1、如果这些数据是静态的,也就说在程序设计阶段要传输的数据就已经确定了,在这种情况下,首先设置VISA Write的write buffer的显示属性为Hex Display,然后直接输入要发送的16进制字符串就可以了。串口设备的控制命令通常是由一个或多个16进制字符组成的,当我们需要对其进行控制时经常会采用这种方法发送控制命令。
2.1.2、数据是动态的;即要传输的数值型数据是动态产生和变化的,在发送之前首先要将其转换成对应的16进制字符串,才能赋给VISA Write发送。将这些数据构成一个数组,用Byte Array To String进行转换,转换的结果就是对应数组数值的字符串,可以提交VISA Write发送。或者使用Type Cast也可以实现同样的功能。
2.2、字符串型数据的处理方法:
数据接收:
从计算机串口接收到的数据是16进制的ASCII码,要转换成对应的数值型数据,可以使用String To Byte Array或者Type Cast。
三、LabVIEW串口VI不能使用中断方式传输。
上一篇:LABVIEW中的条件结构
下一篇:labview数组应用
推荐阅读最新更新时间:2024-03-30 23:06
PCS7冗余系统的PROFINET通讯问题
PCS7冗余系统通过PROFINET协议跟IM151-8PN/DP CPU(带CPU)做通讯,怎么在PCS7的硬件组态中如何配置呢?我想PCS7做主,IM151-8PN/DP CPU做从站。冗余主站中的CP443如何配置啊? 答:1、PCS7冗余H系统有两套CP443-1以太网通讯模块RJ45插口;而IM151-8PN/DP CPU集成了3个PROFINET协议带RJ45插口,因此可以使用S7协议(S7 Connection)通讯。 2、由于IM151-8PN/DP CPU不支持冗余连接组态通讯(Rredundant Connection),因此IM151-8PN/DP CPU需要分别与H系统中两块CPU模块作通讯组态连接;同时还要
[嵌入式]
基于LabVIEW的放大器自动测量系统的实现
多路前置放大器用于将红外探测器输出的电流信号转换成电压信号,并对信号进行放大、滤波、求和,输出送至后续电路,对信号和干扰进行处理. 多路前置放大器的性能直接影响到后续处理的效果. 本研究开发了基于LabVIEW平台的多路前置放大器的自动测量系统,可实现多路放大器技术指标的全部自动测量或选项测量. 1 系统功能及组成 1. 1 系统功能 系统能自动测量前置放大器输出信号的电压、增益、带宽、噪声、失真、串扰、跨阻等性能指标;也可以选择测量某些性能指标;自动记录和打印测试数据,并判断测得的数据是否合格;具有多种介质存储数据功能;能自动进行测量校准和重新设定指标的参数. 1. 2 系统组成
[模拟电子]
开发用于深海钻井船的立管管理系统
"CompactRIO 实时操作系统(OS)与硬件的坚固可靠特性使其成为海洋环境下的一种理想选择。使用 NI 软硬件套件,所有模块之间的集成与通信都非常简单,因此可以在减少开发时间的同时确保功能与性能。" The Challenge: 分析各种运行模式下海底钻探立管所受的压力,从而提供最优的舰船方位来增强立管运行的安全性。 The Solution: 使用NI CompactRIO创建一个独立运行的单元,从钻井立管收集,处理,并传送数据,然后使用NI LabVIEW来评估压力,推荐方位,并为操作员设定修正方案。 随着当今深海油井接近3,000米深,以及墨西哥湾的深水地平线(Deepwater
[测试测量]
基于LabVIEW的CSDB总线信号测试
引言 商业标准数据总线(Commercial Standard Digital Bus,以下简称CSDB总线)是由罗克威尔公司柯林斯通用航空电子分部制定的航空电子设备间互连的串行总线标准,被广泛应用于客机、军用运输机等无线电设备之间的互联通信。其广泛应用为机载航空电子设备的可靠性提供了保障,却为机载电子设备的测试和维修带来了不便,维修或测试人员不能通过传统测试设备,如示波器、万用表等完成总线数据的测试,而必须借助相关产品联测才能完成某一UUT(Unit Under Test)的测试。本文基于此需求,分析和研究了CSDB总线的协议,并介绍了通过计算机的RS-232串口及相应电平转换电路,基于 LabVIEW7.1软件开发平
[测试测量]
LabVIEW子VI的建立及调用
步骤如下: 1. 打开一个NEW VI 2. 在前面板中放置一个Number control 控件(数据输入控件)和一个Number Indicator控件(数据显示),都在All controls numberic模板下并把标签分别改为 X 和 X^6,如下图: 1. 后面板程序图如下图连接,这是一个计算X 的6次方程序 1. 在前面板中,用鼠标右键单击窗口右上角的图标,在快捷菜单中选择 Edit Icon .,也可以双击图标激活图标编辑器。注意只能在前面板中编辑图标和联接器。 2. 删除默认图标。使用Select Tool(矩形框),单击并拖动想要删除的部分,按下。也可以通过双击工具框中的阴影矩形删除图标
[测试测量]
基于LabVIEW的食管动力检测系统设计
引 言 消化道的动力功能是消化系统重要的生理功能,消化道的动力活动是消化和吸收的基础。近年来,由于社会竞争激烈、生活节奏加快、饮食结构变化以及人们心理、精神等因素,胃肠动力障碍性疾病(DGIM)发病率呈上升趋势。2006年,功能性胃肠病(FGDs)的罗马III标准的问世,加深了人们对消化道动力的认识。FGDs需要排除炎症、感染、肿瘤及其他结构异常等器质性病变,并根据症状作出诊断。同样,作为FGDs中的一种,DGIM也不能用器质性疾病机理解释症状。因此,消化道动力检测作为消化道疾病其他检查方法的补充,对于研究和诊断胃肠动力障碍性疾病,有较高的临床意义。 本系统由下位机与上位机组成。下位机负责采集数据,并将其发送给上位
[测试测量]
基于LabVIEW和USB声卡的直流信号采集设计
作为多媒体计算机的基本硬件——声卡,其A/D转换功能已经成熟,而且被广泛作为数据采集器应用。目前主流声卡采样精度为16位,比普通12位的数据采集卡的采样精度还要高,而且采样频率也达到44.1K,完全满足低频信号的采集需要。USB声卡是近年流行起来的产品,其通过USB接口与计算机连接进行数据的录制或播放,A/D功能与电脑内置声卡相似。用声卡作为数据采集卡,不仅价格低廉,兼容性好、性能稳定、通用性强,软件特别是驱动程序升级方便,而且在LabVIEW软件中有现成的驱动程序,使用起来也十分方便。但是无论是电脑声卡还是USB声卡,都只能接受音频范围(20Hz~20k Hz)内的交流信号,不能对直流信号进行采集。这是声卡代替专用的数据采集卡
[测试测量]
基于LabVIEW的气象监测系统
自动气象站体积比较庞大,而且使用时地点和空间会受到地点、空问上的影响。如果借助虚拟仪器技术中易开发、小体积和方便使用等优点,就可以利用虚拟仪器替代自动气象站的数据采集器和数据预处理器。 虚拟仪器技术是利用计算机的硬件资源(CPU、存储器、显示器、键盘、鼠标)、标准数字电路(GPIB、RS 232接口总线、新型的VXI接口总线、信号调理和转换电路、图像采集电路、现场总线等),经过有针对性的开发测试,使之成为一套相当于使用者自己专门设计的传统仪器。LabVIEW(laboratory virtual instrumentengineering workbench)是NI(national instruments)美国国家仪器公
[测试测量]