Labview串口通信开发实例
LabVIEW中的串口通信和硬件控制
LabVIEW中的串口通信和硬件控制LabVIEW是一种强大的编程环境和开发平台,广泛应用于控制系统、仪器测量、数据采集等领域。
在LabVIEW中,串口通信是一种常见且重要的功能,它能够实现计算机与外部硬件设备之间的数据传输和控制。
一、串口通信的基本原理串口通信是通过计算机的串行接口与外部设备进行数据交换。
LabVIEW中的串口通信主要通过VISA(Virtual Instrument Software Architecture)接口实现。
VISA是一套通用的I/O接口标准,可以方便地与各种硬件设备进行通信。
在进行串口通信时,首先需要配置串口的参数,包括波特率、数据位、停止位、校验位等。
LabVIEW提供了相应的函数和工具箱,可以方便地设置这些参数。
然后,通过VISA函数进行打开串口、读取数据、写入数据等操作,实现与外部设备的数据交互。
二、LabVIEW中的串口通信实例下面以一个简单的LabVIEW串口通信实例来介绍其基本操作步骤。
首先,在LabVIEW中创建一个新的VI(Virtual Instrument)文件。
然后,在Block Diagram中拖放VISA函数,并进行相应的配置,打开串口。
接下来,通过循环结构实现数据的读取和写入。
在循环中,可以使用VISA函数读取外部设备发送的数据,并将其显示在界面上;同时,也可以通过用户输入的数据,使用VISA函数发送给外部设备。
最后,关闭串口并释放资源。
通过VISA函数,可以方便地实现串口的关闭操作。
三、LabVIEW中的硬件控制除了串口通信,LabVIEW还可以结合硬件模块进行实时的硬件控制。
LabVIEW提供了丰富的工具箱和函数库,可以支持各种硬件设备的控制和监测。
在LabVIEW中,硬件控制主要通过DAQ(Data Acquisition)模块实现。
DAQ模块可以连接各种传感器和执行器,并将其与LabVIEW 程序进行连接。
通过LabVIEW提供的函数和工具箱,可以方便地读取传感器数据,控制执行器输出,并实现实时的硬件控制。
基于LABVIEW的串口通信实验
基于LABVIEW的串口通信实验一、实验目的1.了解LabVIEW串口通信基本方法2.通过LabVIEW串口获取数字温度传感器的数据二、实验器材1.计算机一台2.LabVIEW8.20软件一套3.串口线一根4.虚拟仪器实验平台一台5.分布式温度采集模块一块6.传感器控制模块一块三、实验原理串行通信是工业现场仪器或设备常用的通信方式,它是将一条信号的各位数据按顺序逐位传送。
计算机串行通信(简称串口)采用RS232协议,允许一个发送设备连接到一个接收设备以传送数据,最大速率为115200bps。
计算机串行口采用Intel8250异步串行通信组件构成,通常以COM1~COM4来表示。
bView串口节点LabView中提供了已封装好的串口通信节点,它们位于函数->数据通信->协议->串口。
这里主要介绍程序中使用到的串口配置、串口读取、串口写入和串口关闭,其他串口相关的节点使用方法查询LabView帮助。
(1)串口配置在进行串口通信时,首先要对串口进行初始化和配置。
这可以由VISA配置串口节点来完成,串口配置节点如下图所示。
使用该节点可以设置串口的VISA资源名称、波特率、数据位、校验位、超时时间、终止符以及流控制等参数。
VISA资源名称控件用于规定对VISA会话句柄开放的资源,并维持会话句柄和类。
VISA 会话句柄是VISA使用的唯一逻辑标识符,用于与资源进行通信。
VISA会话句柄由VISA 资源名称输入控件保持,用户不可见。
VISA资源名称输出是VISA函数中输出的VISA资源名称的副本。
通过将资源名称输出或输入函数和VI,并链接函数和VI,从而简化数据流编程。
这与文件I/O函数使用的文件引用句柄输出相似。
(2)串口写入串口写入是将写入缓冲区的数据写入VISA资源名称指定的设备或接口,可以选择同步或异步。
该操作仅当传输结束后才返回。
VISA写入的节点图标及端口定义如下图所示。
其中写入缓冲区包含要写入设备的数据。
Labview串口通信测试实例
测试虚拟端口是否连通时,也可以下载串口 精灵助手进行调试。成功后,再进行 LABview 程 序调试。
0c25f4ca 宝运莱 wwຫໍສະໝຸດ
从小到大,不知道做了多少半途而废的事情,但在这件事上,易博做到了有始有终
请先运行目录 NT6 下的 vsbsetup.exe;
第三步:
不要关闭 vsbsetup.exe 窗口,返回根目录, 直接运行vspdconfig.exe即可。在右边添加COM1 和 COM2 端口,每次会自动添加两个已连接的 COM 端口。
第四步:
从小到大,不知道做了多少半途而废的事情,但在这件事上,易博做到了有始有终
串口通信的硬件连接非常简单,所以难点并 不在于硬件连接,而在于如何编程,利用虚拟串 口软件创建两个连接的 COM 端口,然后使用 LABview 进压。
第二步:
从小到大,不知道做了多少半途而废的事情,但在这件事上,易博做到了有始有终
打开 NIMAX,在设备和和接口中看是否找到 COM1 和 COM2.找到后新建一个 VI。
第五步: 按下图程序编写 LABview 程序框图。 第六步:在前面板 VISA 资源名称(写入)
从小到大,不知道做了多少半途而废的事情,但在这件事上,易博做到了有始有终
选择 COM1,在 VISA 资源名称(读取)选择 COM2, 写入字符串中输入 ceshi\n,运行一下,读取字 符串显示为 ceshi。其中\n 是读取结束的标志。 注意事项
Labview串口通信开发实例
串口通信的基本概念串口通信的基本概念1,什么是串口?2,什么是RS-232?3,什么是RS-422?4,什么是RS-485?5,什么是握手?1,什么是串口?串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。
大多数计算机包含两个基于RS232的串口。
串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
典型地,串口用于ASCII码字符的传输。
通信使用3根线完成:(1)地线,(2)发送,(3)接收。
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
其他线用于握手,但是不是必须的。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
对于两个进行通行的端口,这些参数必须匹配:a,波特率:这是一个衡量通信速度的参数。
它表示每秒钟传送的bit的个数。
例如300波特表示每秒钟发送300个bit。
当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。
这意味着串口通信在数据线上的采样率为4800Hz。
通常电话线的波特率为14400,28800和36600。
波特率可以远远大于这些值,但是波特率和距离成反比。
高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。
b,数据位:这是衡量通信中实际数据位的参数。
当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。
labview实现串口通信(三)
labview实现串口通信(三)
在调试的过程中,我们经常会发现有收到的数据延迟的现象,现在提出几点解决的方法:
(1)在循环中加入适量的延时,通过一个简单的例子看,
你会发现在cpu的占用率在加延时和不加的时候有很大的区别,当加的时候基本不占,而不加延时的时候达到100%。
我在调试串口通信时候,发现while loop里加一个延时会有很好的效果(假如有一个或某几个线程占用了 100% 的 CPU,此时系统对其他线程就会反应迟钝。
例如,程序的执行线程占用了100% 的 CPU,那么用户对界面的操作就会迟迟得不到响应,甚至于用户会误认为程序死锁了。
所以在程序中要尽量避免出现 100% 占用 CPU 的情况。
目前大多数的计算机还是单核单个CPU 的,因此要避免任何一个线程试图100% 占用CPU 的情况).
(2)visa read 的字节总数最好用一个属性节点来代替
因为我们不知道数据缓冲区有多少个字节,这样就不需要去设定了
(3)经常看到会有人说串口里面有一堆数据,但是去读的时候却读回来一点点,每次均不相同,这种怀状况是由于串口有一个serial configuration这个节点上面,有一个termination char,大家将它设为F就可以了,因为遇到这个终止符,它就会停止读数,所以读回来的就会少了!。
Labview与C51单片机实现串口通信
Labview与C51单片机实现串口通信
Labview 串口通信学会两种方法,一种是利用visa(虚拟仪器软件构架),另一种是调用activeX 控件。
第一种方法(VISA)程序如图
首先,设置串口参数,串口初始化,循环内利用VISA WITE 实现对串口的写操作,延时200 毫秒,用VISA READ 实现读操作,中间有个端口属性节点的作用是计算端口的总的字节数。
非常简单,但我花了一天时间搞懂。
第二种方法调用active X 程序图如下所示
ACTIVE X 串口通信的最大优点是可以利用中断实现数据的传送或对下位机的控制,MSCOMM32 控件实现串口通信主要是通过对其属性节点的设置来实现的。
并利用到了事件回调方法实现中断程序。
tips:感谢大家的阅读,本文由我司收集整编。
仅供参阅!。
mc9s12xs128串口LabVIEW通信代码
/***************串口发送初始化****************//***************************************************/void uart_init(void){SCI0ACR1=0x00;SCI0CR2=0x0c; //允许发送SCI0BDH=0x00;SCI0BDL=64000000/(115200*16); //xxM}/*********************单个字符发送函数************************ 功能:发送一个字符输入参数:ch输出参数:无*************************************************************/void SCI_Putchar(char ch){while(!(SCI0SR1&0X80)); //检查发送寄存器空标志TDREwhile(!(SCI0SR1&0X40)); //检查发送完成标志TC//=0正在发送=1没有发送SCI0DRL=ch;}/*********************字符串发送函数************************ 功能:发送字符串输入参数:*str输出参数:无*************************************************************/void SCI_Putstr(char *str) //可直接发送中文,比如uart_putstr("个") {for(;*str!=0;str++){SCI_Putchar(*str);}}/*********************单个字符接收函数************************ 功能:接收一个字符输入参数:无输出参数:SCI0DRL寄存器中的字符*************************************************************/byte SCI_getchar(void){while(!SCI0SR1_RDRF); //RDRF 接收数据寄存器满标志//当接收移位寄存器中的数据发动到SCI数据寄存器中时,RDRF置位。
labview中的串口通信协议示例与分析
标签:虚拟仪器labview中的串口通信协议示例与分析变频器与个人电脑使用RS-232/RS-485 串行总线连接,如下所示:在通讯操作中,通过个人电脑以命令方式控制仪器。
通讯数据格式:l 起始位: 1 位l 数据位: 8 位l 奇偶位:无l 停止位: 1 位应答及命令格式:l 命令模式::-数据头,只有以::开头的数据包才认为有效。
AD -设备号,当前通讯的设备ID。
?-指明该数据是PC发出的指令。
RI -响应时间,从PC发出命令到仪器应答的时间。
SC -和检验码,等于图中“和校验范围”所示各位相加。
l 应答模式# -指明该数据是仪器发回的应答数据。
其它同上。
l 故障模式% -指明该数据是仪器发回的故障数据。
其它同上。
协议说明:无论是控制仪器还是查看仪器数据都需要PC发出相应的命令;只要PC发出命令(前提是与仪器正常通讯),仪器都会返回数据(应答或故障)。
使用LabVIEW编写通信模块:1. 主要节点:Functions->Instrument I/O->VISA Resource Name Constant, Functions->Instrument I/O->Serial->VISA Config Serail Port, VISA Read, VISA Write, VISA Close2. 串口设置:根据仪器说明设置如波特率等等串口参数。
超时设置根据上述RI。
3. 写串口指令:根据上述“命令模式”的格式包装命令数据,和校验由“和校验范围”中数位相加而得,所以之前应该写一子VI用来计算和校验。
建议使用以下变量来包装数据:l prefix:前缀,这里是::l devID:设备号l type:通讯类型(这里是?),可以与RI合并l cmdNum:命令号l cmdValue:命令号对应的命令值l sumVerify:和校验码l end:结束字符注意:一般协议要求“命令内容”满足一定的位数,所以应该做一个子VI,专门在那些数位不够的命令前补足空格或0。
labview,串口通信实现过程
Labview实现串口通信步骤1.在程序面板上添加VISA配置接口2.添加后,开启帮助文档的显示。
菜单的Help->showcontexthelp,如下图鼠标选择目标则会显示帮助框。
如下图所示。
3.创建相应的配置在程序面板中鼠标移动到对应的引脚上,点击鼠标右键->create->control,创建后,界面面板上会出现对应的控制框。
如下图所示,创建个VISAresourcename。
图-创建窗口选择控件前面板显示如下:图-前面板显示控件选择4依次创建,波特率、停止位、数据位等如下图所示。
5.创建个while循环,用于放置发送的程序鼠标移动到循环条件控制的引脚上,创建个control。
用于调试,不对条件处理,会报错。
6前面板放置个按钮,用于控制数据的发送7.创建个事件,用于响应发送按钮鼠标移动到timeout的位置,鼠标右键选择editevents…如下图所示。
操作上面后,出现如下界面:选择需要响应的控件,这里选择“okbutton”,选择鼠标按下。
点击ok后,事件的名称也变化了。
如下图所示。
如果鼠标点击按键,则会进入事件处理。
8创建VISA写函数9连接端口和写函数10添加个关闭函数11.创建字符串控件,传递给写函数,用于发送选中VISAWrite的writebuffer,右键create->control,12界面如下所示13.安装虚拟串口,提供一个下载地址用虚拟串口配置两个端口,配置好后,这两个串口之间是自动连接上,模拟硬件上两个串口对接上的。
如上图,指定好端口,点击Addpair。
14运行串口工具,提供一个下载地址15.运行串口工具,打开串口,运行VI,发送数据我的电脑配置的是COM12和COM13,vi选择COM12.运行VI,在writebuffer里面填写test,点击OK发送。
每点击一次,发送一次。
16.建立接收模块添加个while循环,创建while循环,用于接收。
Labview串口通信开发实例
串口通信的基本概念串口通信的基本概念1,什么是串口?2,什么是RS-232?3,什么是RS-422?4,什么是RS-485?5,什么是握手?1,什么是串口?串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。
大多数计算机包含两个基于RS232的串口。
串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
典型地,串口用于ASCII码字符的传输。
通信使用3根线完成:(1)地线,(2)发送,(3)接收。
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
其他线用于握手,但是不是必须的。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
对于两个进行通行的端口,这些参数必须匹配:a,波特率:这是一个衡量通信速度的参数。
它表示每秒钟传送的bit的个数。
例如300波特表示每秒钟发送300个bit。
当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。
这意味着串口通信在数据线上的采样率为4800Hz。
通常电话线的波特率为14400,28800和36600。
波特率可以远远大于这些值,但是波特率和距离成反比。
高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。
b,数据位:这是衡量通信中实际数据位的参数。
当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。
LabVIEW串口通信
第13章L a b V I E W串口通信程序设计以PC作为上位机,以调制解调器(Modem)、串行打印机、各种监控模块、PLC、摄像头云台、数控机床、单片机及智能设备等作为下位机广泛应用于测控领域。
本章举几个典型实例,详细介绍利用LabVIEW实现PC与各种下位机设备串口通信的程序设计方法。
13.1 PC与PC串口通信当两台串口设备通信距离较近时,可以直接连接,最简单的情况,在通信中只需三根线(发送线、接收线、信号地线)便可实现全双工异步串行通信。
本设计通过两台PC串口三线连接,介绍了串口通信的基本编程方法。
13.1.1 PC与PC串口通信硬件线路当两台RS-232串口设备通信距离较近时(<15m),可以用电缆线直接将两台设备的RS-232端口连接;若通信距离较远(>15m)时,需附加调制解调器(Modem)。
在RS-232的应用中,很少严格按照RS-232标准。
其主要原因是因为许多定义的信号在大多数的应用中并没有用上。
在许多应用中,例如Modem,只用了9个信号(两条数据线、6条控制线、一条地线);在其他一些应用中,可能只需要5个信号(两条数据线、两条握手线、一条地线);还有一些应用,可能只需要数据线,而不需要握手线,即只需要3个信号线。
因为在控制领域,在近距离通信时常采用RS-232,所以这里只对近距离通信的线路连接进行讨论。
当通信距离较近时,通信双方不需要Modem,可以直接连接,这种情况下,只需使用少数几根信号线。
最简单的情况,在通信中根本不需要RS-232C的控制联络信号,只需三根线(发送线、接收线、信号地线)便可实现全双工异步串行通信。
在实际使用中常使用串口通信线将两个串口设备连接起来。
串口线的制作方法非常简单:准备两个9针的串口接线端子(因为计算机上的串口为公头,因此连接线为母头),准备3根导线(最好采用3芯屏蔽线),按图13-1所示将导线焊接到接线端子上。
图13-1 串口通信线的制作图13-2所示中的2号接收脚与3号发送脚交叉连接是因为在直连方式时,把通信双方都当作数据终端设备看待,双方都可发也可收。
Labview串口通信开发实例(值得拥有)
串口通信的基本概念串口通信的基本概念1,什么是串口?2,什么是RS-232?3,什么是RS-422?4,什么是RS-485?5,什么是握手?1,什么是串口?串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。
大多数计算机包含两个基于RS232的串口。
串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
典型地,串口用于ASCII码字符的传输。
通信使用3根线完成:(1)地线,(2)发送,(3)接收。
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
其他线用于握手,但是不是必须的。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
对于两个进行通行的端口,这些参数必须匹配:a,波特率:这是一个衡量通信速度的参数。
它表示每秒钟传送的bit的个数。
例如300波特表示每秒钟发送300个bit。
当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。
这意味着串口通信在数据线上的采样率为4800Hz。
通常电话线的波特率为14400,28800和36600。
波特率可以远远大于这些值,但是波特率和距离成反比。
高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。
b,数据位:这是衡量通信中实际数据位的参数。
当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。
LabVIEW中的串口通信和数据解析
LabVIEW中的串口通信和数据解析一、引言在LabVIEW中,串口通信是一种常见的用于与外部设备进行数据交互的方式。
通过串口通信,我们可以与各类传感器、仪器、控制器等设备进行数据的传输与控制。
本文将介绍LabVIEW中如何进行串口通信和数据解析的方法和技巧。
二、LabVIEW中的串口通信1. 准备工作在进行串口通信之前,首先需要准备好相应的硬件设备和驱动程序。
一般来说,我们需要一台计算机、一个串口转USB转接器以及相关的串口设备。
另外,还需要安装相应的串口驱动程序,以便在LabVIEW中进行串口通信。
2. 配置串口通信在LabVIEW中,配置串口通信需要使用到“VISA”(Virtual Instrument Software Architecture)工具。
通过VISA,我们可以对串口进行打开、设置波特率、校验位、数据位等参数,并进行数据的发送和接收。
3. 打开串口在LabVIEW的程序中,使用“VISA Open”函数来打开串口。
我们需要指定对应的串口号以及串口的配置参数。
通过这一步,LabVIEW就可以与串口建立通信连接。
4. 配置串口参数在串口打开之后,需要进行串口参数的配置,包括波特率、校验位、数据位等。
这些参数需要与外部设备的参数保持一致,才能正确地进行数据的传输和解析。
5. 读取和发送数据在LabVIEW中,可以使用“VISA Read”和“VISA Write”函数来进行数据的读取和发送。
通过这两个函数,我们可以实现与外部设备的数据交互。
读取到的数据可以在LabVIEW中进行进一步处理和解析。
三、LabVIEW中的数据解析1. 数据格式在进行数据解析之前,首先需要了解数据的格式。
不同的外部设备会使用不同的数据格式进行数据的传输。
常见的数据格式包括二进制、十六进制、ASCII等。
根据实际情况,选择合适的数据格式进行解析。
2. 数据解析方法在LabVIEW中,可以使用字符串相关的函数来进行数据的解析。
labview中的串口通信协议示例与分析
标签:虚拟仪器labview中的串口通信协议示例与分析变频器与个人电脑使用RS-232/RS-485 串行总线连接,如下所示:在通讯操作中,通过个人电脑以命令方式控制仪器。
通讯数据格式:l 起始位: 1 位l 数据位: 8 位l 奇偶位:无l 停止位: 1 位应答及命令格式:l 命令模式::-数据头,只有以::开头的数据包才认为有效。
AD -设备号,当前通讯的设备ID。
?-指明该数据是PC发出的指令。
RI -响应时间,从PC发出命令到仪器应答的时间。
SC -和检验码,等于图中“和校验范围”所示各位相加。
l 应答模式# -指明该数据是仪器发回的应答数据。
其它同上。
l 故障模式% -指明该数据是仪器发回的故障数据。
其它同上。
协议说明:无论是控制仪器还是查看仪器数据都需要PC发出相应的命令;只要PC发出命令(前提是与仪器正常通讯),仪器都会返回数据(应答或故障)。
使用LabVIEW编写通信模块:1. 主要节点:Functions->Instrument I/O->VISA Resource Name Constant, Functions->Instrument I/O->Serial->VISA Config Serail Port, VISA Read, VISA Write, VISA Close2. 串口设置:根据仪器说明设置如波特率等等串口参数。
超时设置根据上述RI。
3. 写串口指令:根据上述“命令模式”的格式包装命令数据,和校验由“和校验范围”中数位相加而得,所以之前应该写一子VI用来计算和校验。
建议使用以下变量来包装数据:l prefix:前缀,这里是::l devID:设备号l type:通讯类型(这里是?),可以与RI合并l cmdNum:命令号l cmdValue:命令号对应的命令值l sumVerify:和校验码l end:结束字符注意:一般协议要求“命令内容”满足一定的位数,所以应该做一个子VI,专门在那些数位不够的命令前补足空格或0。
Labview串口通信开发实例(值得拥有)
串口通信的基本概念串口通信的基本概念1,什么是串口?2,什么是RS-232?3,什么是RS-422?4,什么是RS-485?5,什么是握手?1,什么是串口?串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。
大多数计算机包含两个基于RS232的串口。
串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
典型地,串口用于ASCII码字符的传输。
通信使用3根线完成:(1)地线,(2)发送,(3)接收。
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
其他线用于握手,但是不是必须的。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
对于两个进行通行的端口,这些参数必须匹配:a,波特率:这是一个衡量通信速度的参数。
它表示每秒钟传送的bit的个数。
例如300波特表示每秒钟发送300个bit。
当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。
这意味着串口通信在数据线上的采样率为4800Hz。
通常电话线的波特率为14400,28800和36600。
波特率可以远远大于这些值,但是波特率和距离成反比。
高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。
b,数据位:这是衡量通信中实际数据位的参数。
当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。
LabVIEW串口通信的一个例子-串口示波器
LabVIEW串⼝通信的⼀个例⼦-串⼝⽰波器很早就想做⼀个类似的东西了,正好这学期学了LabVIEW,作业就交了这个,基于LabVIEW的“串⼝⽰波器”上位机。
1.程序界⾯:功能介绍:左边上⽅串⼝接收区,下⽅为串⼝字符发送区。
右⽅为⼀个波形图表,在程序内部每次将串⼝发送过来的数据,以f%格式化,显⽰在波形图表上。
按钮介绍:从左⾄右依次,发送按钮;清除计数按钮;打开/关闭串⼝按钮;清除接收区数据;清除波形图表;保存波形;退出程序。
2.主程序框图:主程序框图介绍:主程序框图主要由3个状态组成:程序的初始化,程序事件的响应,程序的退出。
状态Init:程序初始化,主要把OpenCom等按钮,串⼝状态,串⼝接收字符串,波形图标,TX/RX计数等控件,置为False或清零。
初始化状态只执⾏⼀次,接下来就进⼊状态Event。
状态Event:程序事件响应,由⼀个事件结构构成,共需响应8个事件:Open/CloseCom按钮事件;串⼝号或波特率改变事件;发送按钮事件;清空计数按钮事件;清空接收区按钮事件;清空波形区按钮事件;保存波形按钮事件;菜单选择事件;退出按钮事件。
如果在此状态,按下退出按钮,则进⼊状态Exit,否则程序将⼀直运⾏在此状态。
状态Exit:程序退出。
退出前需关闭已打开的VISA句柄。
3.串⼝接收程序框图:串⼝接收程序框图介绍:当串⼝状态为真时,调⽤串⼝属性节点”Bytes at Port”,如果串⼝缓冲区有X字节的数据就接收X字节的数据。
最后,⽤⼀个状态机来实现相邻两个字符串的判断。
如果串⼝在相邻两个字符串之间接收时间⼤于50ms,则判断为两个独⽴的字符串;如果⼩于50ms,则⾃动拼接前后两个字符串。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
串口通信的基本概念串口通信的基本概念1,什么就是串口?2,什么就是RS-232?3,什么就是RS-422?4,什么就是RS-485?5,什么就是握手?1,什么就是串口?串口就是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。
大多数计算机包含两个基于RS232的串口。
串口同时也就是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送与接收字节。
尽管比按字节(byte)的并行通信慢,但就是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
典型地,串口用于ASCII码字符的传输。
通信使用3根线完成:(1)地线,(2)发送,(3)接收。
由于串口通信就是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
其她线用于握手,但就是不就是必须的。
串口通信最重要的参数就是波特率、数据位、停止位与奇偶校验。
对于两个进行通行的端口,这些参数必须匹配:a,波特率:这就是一个衡量通信速度的参数。
它表示每秒钟传送的bit的个数。
例如300波特表示每秒钟发送300个bit。
当我们提到时钟周期时,我们就就是指波特率例如如果协议需要4800波特率,那么时钟就是4800Hz。
这意味着串口通信在数据线上的采样率为4800Hz。
通常电话线的波特率为14400,28800与36600。
波特率可以远远大于这些值,但就是波特率与距离成反比。
高波特率常常用于放置的很近的仪器间的通信,典型的例子就就是GPIB设备的通信。
b,数据位:这就是衡量通信中实际数据位的参数。
当计算机发送一个信息包,实际的数据不会就是8位的,标准的值就是5、7与8位。
如何设置取决于您想传送的信息。
比如,标准的ASCII码就是0~127(7位)。
扩展的ASCII码就是0~255(8位)。
如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。
每个包就是指一个字节,包括开始/停止位,数据位与奇偶校验位。
由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
c,停止位:用于表示单个包的最后一位。
典型的值为1,1、5与2位。
由于数据就是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。
因此停止位不仅仅就是表示传输的结束,并且提供计算机校正时钟同步的机会。
适用于停止位的位数越多,不同时钟同步的容忍程度越大,但就是数据传输率同时也越慢。
d,奇偶校验位:在串口通信中一种简单的检错方式。
有四种检错方式:偶、奇、高与低。
当然没有校验位也就是可以的。
对于偶与奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。
例如,如果数据就是011,那么对于偶校验,校验位为0,保证逻辑高的位数就是偶数个。
如果就是奇校验,校验位位1,这样就有3个逻辑高位。
高位与低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。
这样使得接收设备能够知道一个位的状态,有机会判断就是否有噪声干扰了通信或者就是否传输与接收数据就是否不同步。
2,什么就是RS-232?RS-232(ANSI/EIA-232标准)就是IBM-PC及其兼容机上的串行连接标准。
可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。
用于驱动与连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。
RS-232只限于PC串口与设备间点对点的通信。
RS-232串口通信最远距离就是50英尺。
DB-9针连接头-------------\ 1 2 3 4 5 /\ 6 7 8 9 /-------从计算机连出的线的截面。
RS-232针脚的功能:数据:TXD(pin 3):串口数据输出RXD(pin 2):串口数据输入握手:RTS(pin 7):发送数据请求CTS(pin 8):清除发送DSR(pin 6):数据发送就绪DCD(pin 1):数据载波检测DTR(pin 4):数据终端就绪地线:GND(pin 5):地线其她RI(pin 9):铃声指示3,什么就是RS-422?RS-422(EIA RS-422-A Standard)就是Apple的Macintosh计算机的串口连接标准。
RS-422使用差分信号,RS-232使用非平衡参考地的信号。
差分传输使用两根线发送与接收信号,对比RS-232,它能更好的抗噪声与有更远的传输距离。
在工业环境中更好的抗噪性与更远的传输距离就是一个很大的优点。
4,什么就是RS-485?RS-485(EIA-485标准)就是RS-422的改进,因为它增加了设备的个数,从10个增加到32个,同时定义了在最大设备个数情况下的电气特性,以保证足够的信号电压。
有了多个设备的能力,您可以使用一个单个RS-422口建立设备网络。
出色抗噪与多设备能力,在工业应用中建立连向PC机的分布式设备网络、其她数据收集控制器、HMI或者其她操作时,串行连接会选择RS-485。
RS-485就是RS-422的超集,因此所有的RS-422设备可以被RS-485控制。
RS-485可以用超过4000英尺的线进行串行通行。
DB-9 引脚连接-------------\ 1 2 3 4 5 /\ 6 7 8 9 /-------从计算机连出的线的截面。
RS-485与RS-422的引脚的功能数据:TXD+(pin 8),TXD-(pin 9),RXD+(pin 4),RXD-(pin 5) 握手:RTS+(pin 3),RTS-(pin 7),CTS+(pin 2),CTS-(pin 6)地线:GND (pin 1)5,什么就是握手?RS-232通行方式允许简单连接三线:Tx、Rx与地线。
但就是对于数据传输,双方必须对数据定时采用使用相同的波特率。
尽管这种方法对于大多数应用已经足够,但就是对于接收方过载的情况这种使用受到限制。
这时需要串口的握手功能。
在这一部分,我们讨论三种最常用的RS-232握手形式:软件握手、硬件握手与Xmodem。
a,软件握手:我们讨论的第一种握手就是软件握手。
通常用在实际数据就是控制字符的情况,类似于GPIB使用命令字符串的方式。
必须的线仍然就是三根:Tx,Rx与地线,因为控制字符在传输线上与普通字符没有区别,函数SetXModem允许用户使能或者禁止用户使用两个控制字符XON与OXFF。
这些字符在通信中由接收方发送,使发送方暂停。
例如:假设发送方以高波特率发送数据。
在传输中,接收方发现由于CPU忙于其她工作,输入buffer已经满了。
为了暂时停止传输,接收方发送XOFF,典型的值就是十进制19,即十六进制13,直到输入buffer空了。
一旦接收方准备好接收,它发送XON,典型的值就是十进制17,即十六进制11,继续通信。
输入buffer半满时,LabWindows发送XOFF。
此外,如果XOFF传输被打断,LabWindows会在buffer达到75%与90%时发送XOFF。
显然,发送方必须遵循此守则以保证传输继续。
b,硬件握手:第二种就是使用硬件线握手。
与Tx与Rx线一样,RTS/CTS与DTR/DSR一起工作,一个作为输出,另一个作为输入。
第一组线就是RTS(Request to Send)与CTS(Clear to Send)。
当接收方准备好接收数据,它置高RTS线表示它准备好了,如果发送方也就绪,它置高CTS,表示它即将发送数据。
另一组线就是DTR(Data Terminal Ready)与DSR(Data Set Ready)。
这些现主要用于Modem通信。
使得串口与Modem通信她们的状态。
例如:当Modem已经准备好接收来自PC的数据,它置高DTR线,表示与电话线的连接已经建立。
读取DSR线置高,PC机开始发送数据。
一个简单的规则就是DTR/DSR用于表示系统通信就绪,而RTS/CTS用于单个数据包的传输。
在LabWindows,函数SetCTSMode使能或者禁止使用硬件握手。
如果CTS模式使能,LabWindows使用如下规则:当PC发送数据:RS-232库必须检测CTS线高后才能发送数据。
当PC接收数据:如果端口打开,且输入队列有空接收数据,库函数置高RTS与DTR。
如果输入队列90%满,库函数置低RTS,但使DTR维持高电平。
如果端口队列近乎空了,哭喊数置高RTS,但使DRT维持高电平。
如果端口关闭,库函数置低RTS与DTR。
c,XModem握手:最后讨论的握手叫做XModem文件传输协议。
这个协议在Modem通信中非常通用。
尽管它通常使用在Modem通信中,XModem协议能够直接在其她遵循这个协议的设备通信中使用。
在LabWindows中,实际的XModem应用对用户隐藏了。
只要PC与其她设备使用XModem协议,在文件传输中就使用LabWindows的XModem函数。
函数就是XModemConfig,XModemSend与XModemReceive。
XModem使用介于如下参数的协议:start_of_data、end_of_data、neg_ack、wait_delay、start_delay、max_tries、packet_size。
这些参数需要通信双方认定,标准的XModem有一个标准的定义:然而,可以通过XModemConfig函数修改,以满足具体需要。
这些参数的使用方法由接收方发送的字符neg_ack确定。
这通知发送方其准备接收数据。
它开始尝试发送,有一个超时参数start_delay;当超时的尝试超过max_ties次数,或者收到接收方发送的start_of_data,发送方停止尝试。
如果从发送方收到start_of_data,接收方将读取后继信息数据包。
包中含有包的数目、包数目的补码作为错误校验、packet_size字节大小的实际数据包,与进一步错误检查的求与校验值。
在读取数据后,接收方会调用wait_delay,然后想发送方发送响应。
如果发送方没有收到响应,它会重新发送数据包,直到收到响应或者超过重发次数的最大值max_tries。
如果一直没有收到响应,发送方通知用户传输数据失败。
由于数据必须以pack_size个字节按包发送,当最后一个数据包发送时,如果数据不够放满一个数据包,后面会填充ASCII码NULL(0)字节。
这导致接收的数据比原数据多。