labwindowscvi6第七章串行口通信和网络数据传输
LabWindows_CVI开发环境下实现串口通讯的方法
软件应用
表 4 串口设置函数功能
函数名 ComB reak Com SetE scap e F lu sh InQ F lu shO u tQ SetCT SM ode SetCom T im e SetXM ode
函数功能 设置通讯终止时间 设置各种通信握手信号
清空接收队列 清空发送队列 设置硬件握手 设置通讯超时时间 允许或禁止串口通讯的软件握手
B u tton
函数为 R eceiveD a te
Q u it
QU IT
Comm and 退出应用程序, 消息
B u tton
响应函数为 qu it
413 程序部分代码 在主函数中打开串口:
O p enCom Config (1, " " , 9600, 0, 8, 1, 512, 512) ;
打 开 并 设 置 串 口, 此 调 用 语 句 打 开 串 口 1, 波 特 率 为
L abW indow s CV I 有许多标准函数库, 其中的 R S232 函数库提供了各种方式的串口通讯控制函数和 I O 函数, 一共可分为打开 关闭函数、I O 读写函数、 调制解调器控制函数、 串口设置函数、 寄存器状态函
数和回调函数 6 类。 其中部分较常用的函数如下: 这些函数返回的各种状态信息可参阅相应函数面
收稿日期: 2003 11 15
62
软件开发的角度来看, L abW indow s CV I 具有以下一 些特点:
(1) 基于标准 C 语言, 简单易学。 (2) 可视化、 交互式的开发工具。 具有人机交互 界 面编辑器, 运用可视化交互技术实现 “所见即所 得”, 使人机界面的实现直观简单。对每一个函数都提 供了一个函数面板, 用户可以通过函数面板交互地输 入函数的每一个参数及属性值。 这种交互式编程技术 大大提高了工程设计的效率和可靠性。 (3) 具有程序自动生成的能力, 可减少软件开发 过程中代码编写的工作量。 设计好的人机交互界面 (虚拟仪器面板) 存储在后缀名为 1u ir 的文件中。L ab2 W indow s CV I 自动生成原码头文件 1h, 自动声明界 面对象常量及相关的回调函数, 编程人员不必钻研这 些技术。 (4) 具有齐全的软件工具包及功能强大的函数库, 通过简单调用库函数就能驱动相应的总线的各种仪器 和硬件板卡。这些工具包和函数库具有更高的效率, 他 使得程序的编写更简洁、 直观。 (5) 完善的兼容性。借助于L abW indow s CV I, 有 经验的 C C+ + 语言开发人员可以采用熟悉的 C 语言 环境, 如V C, BC 等开发自己的虚拟仪器系统。另外, 还可将仪器库函数及子程序编译成 32 位DLL , 以用 于任何 32 位 C C+ + 环境中以及 V isua l B a sic 或 L ab2
串口通信实验报告
串⼝通信实验报告基于Labwindows/CVI的串⾏通信接⼝实验报告⼀、实验⽬的通过软件Labwindows/CVI编写仪器⾯板,通过该⾯板实现计算机与外围设备的串⼝通信。
设置好通信端⼝,波特率等参数后,在Text Box控件中输⼊数据字符,当点击发送按钮时,单⽚机开发箱中的指⽰灯发⽣相应的变化。
仪器⾯板如下图所⽰。
⼆、实验器材PC机⼀台,单⽚机开发箱,220V交流电源,Labwindows/CVI软件,导线若⼲等。
三、实验原理由于LabWindows/CVI提供了⼤量与外部代码或软件进⾏连接的机制,所以实现串⼝通信,可以使⽤其本⾝提供的RS⼀232函数库。
1.RS—232函数库RS—232函数库提供了各种⽅式的串⼝通信控制函数和I/O函数,包括:打开/关闭函数;I/O读写函数;调制解调器控制函数;串⼝设置函数;寄存器状态函数;回调函数等。
(1) 打开/关闭函数:OpenCom,OpenComConfig和CloseComo。
(2) I/O读写函数:总计有7组函数,以下为其中常⽤的四组:1) ComRd:从串⼝的接收缓冲区读指定长度的字符;2) ComRdByte:从串⼝的接收缓冲区读取⼀个字符;3) ComWrt:向串⼝的输出缓冲区中写指定长度的字符;4) ComWrtByte:向串⼝的输出缓冲区中写⼀个字符。
(3) Xmodem函数:它使⽤了⼀种包含出错检测的⽂件传输协议进⾏串⼝通信。
在这种协议中,⽂件通过信息包来传送,信息包中不仅包括了⽂件中的数据,还包括了校验和同步信息。
(4) 串⼝控制函数:总计有7组函数,以下为其中常⽤的四组:1)SetComTime:设置I/O操作超时的时间限制;2)SetCTSMode:禁⽌或允许硬件握⼿并设置硬件握⼿⽅式;3)FlushlnQ/FlushOutQ:清空输⼊/输出队列。
(5) 状态函数:主要包括端⼝状态信息和通信错误代码信息等。
(6) 回调函数InstallComCallback:为指定的串⼝安装回调函数。
上位机系统中VC_MatLab和LabVIEW程序间的串行通讯
上位机系统中VC 、MatLab 和LabVIEW 程序间的串行通讯罗建国,刘尚明,张 电(清华大学热能工程系,北京100084) 摘要: 由于各种编程语言特点各异,因此,在一个控制系统中经常出现几种编程语言共存的情况,它们之间的通讯就显得尤为重要。
结合“973”项目为背景,阐述VC 、MatLab 、LabV IEW 之间通过DDE 实现数据交换。
关键词: 动态数据交换;上位机;串行通讯 中图分类号:TP311 文献标识码:B 文章编号:100023932(2003)(06)200392041 引 言VC 、LabVIEW 开发的程序可以提供良好的图形界面,但是难以实现复杂的控制算法;MatLab 程序则拥有强大的控制算法包,但在界面方面稍逊一筹。
因此要充分利用各种软件的优势,就必须解决各程序间的实时通讯问题。
本文结合国家973计划资助搭建的一个控制系统仿真平台,来阐述上位机系统中通过DDE 协议解决各程序间的通讯问题。
该仿真平台的原理框图如图1所示。
系统以两台计算机(上位机和数字仿真计算机)为核心设备,兼以其它辅助部件组成。
数字仿真计算机用来模拟热力系统对象,通过D/A 实时地向上位机系统提供系统运行数据;上位机系统通过数据采集卡接受来自数字仿真计算机的数据,对数据综合处理并采用控制算法对仿真对象执行实时控制,将控制信号传回下位机系统,从而形成闭合的控制回路。
同时,上位机中的监控系统监控仿真对象的运行状况。
收稿日期:2003205216 基金项目:国家“973”计划项目(G1999022304) 为了在J X 2300X DCS 上实施软测量技术,软测量软件利用了开放的OPC 技术,在DCS 上成功地实现了软测量,该方案结构清楚合理,具有优越的开放性、可维护性。
本文针对补料-批式发酵这种具有严重非线性的生产过程,提出并实现了相适应的软测量技术和实施技术,在实际生产过程中获得了成功的应用。
使用LabVIEW进行数据通信实现可靠的数据传输和网络通信
使用LabVIEW进行数据通信实现可靠的数据传输和网络通信LabVIEW是一款强大的工程软件,可以用于实现数据通信以及网络通信。
在大数据时代,准确、可靠的数据传输和网络通信对于各行各业都至关重要。
本文将介绍如何使用LabVIEW来实现可靠的数据传输和网络通信。
一、LabVIEW简介LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种图形化的开发环境,由美国国家仪器公司(National Instruments)开发。
它允许用户通过将函数和连接它们的线连接在一起创建程序。
这种可视化编程的方法使得非专业编程背景的人员也可以轻松地进行软件开发。
LabVIEW广泛应用于控制系统、数据采集、实验室仪器控制和数据分析等领域。
二、数据传输1. 数据读取与写入LabVIEW提供了丰富的函数库和工具箱,可以轻松地进行数据的读取和写入操作。
通过使用合适的模块和函数,我们可以连接各种传感器、设备或者数据库来实现数据的采集和存储。
2. 数据处理与分析LabVIEW提供了强大的数据处理和分析功能。
用户可以使用图形化编程的方式,通过拖拽和连接不同的函数块来实现数据的处理和分析。
这使得数据的处理变得更加直观、高效和可靠。
3. 数据传输协议LabVIEW支持多种常用的数据传输协议,包括TCP/IP、UDP、HTTP等。
用户可以根据具体需求选择合适的协议来进行数据传输。
同时,LabVIEW还支持自定义的数据传输协议,可以根据实际情况进行定制。
三、网络通信1. 建立网络连接LabVIEW提供了丰富的网络通信工具,可以方便地建立网络连接。
用户可以使用TCP/IP或者UDP协议来建立客户端和服务器之间的通信。
LabVIEW还支持Web服务,可以通过Web浏览器与LabVIEW程序进行交互。
2. 实时监控与控制LabVIEW可以实时监控和控制网络上的各种设备。
用户可以通过连接传感器和执行器等设备,实时地获取数据并进行控制。
labwindows CVI 教程
LabWindows/CVI基础教程序言LabWindows/CVI是National Instruments公司推出的一套面向测控领域的软件开发平台。
它以ANSI C为核心,将功能强大,使用灵活的C语言平台与数据采集,分析和表达的测控专业工具有机地接和起来。
它的集成化开发平台,交互式编程方法,丰富的控件和库函数大大增强了C语言的功能,为熟悉C语言的开发人员建立检测系统,自动测量环境,数据采集系统,过程监控系统等提供了一个理想的软件开发环境。
本教程面向的是那些从未使用过LabWindows/CVI的读者,但是假设读者以有了C语言的基础并且熟悉Windows 2000/9x/NT操作系统。
在每一章节的学习中,作者都是通过一个具体的实例让读者迅速的掌握本章的知识点;而不是长篇大论,述及边枝细叶,反而使读者望而却步,只见树木,不见森林。
想信通过对本教程的学习,读者可迅速掌握LabWindows/CVI编程思想及步骤,为读者日后进一步学习打下基础。
本书约定:“File>>Page Setup>>Opti ons”File 这一种黑色斜体字是指多级菜单名,按扭名,窗口名或者是关键性词汇。
“>>”是指打开一个多级菜单或对话框。
如:File>>Page Setup>>Options是指你首先打开File 菜单,然后选择Page Setup项,最后从弹出的对话框中选择Options 项。
“说明:通过这种方式你可以修改Panel顶端所显示的名字。
”该种字体所写的文字是值得读者注意并记忆的内容。
“”该椭圆形框所框住的内容是读者需修改的地方。
第一部分CVI快速入门本部分通过编制一个简单的LabWindows/CVI程序,使读者对CVI编程环境,思想及步骤有一初步的认识。
第一章初步认识CVI程序设计——从一个例子开始我们的第一个示例将很简单,我们所要做的是创建一个如下的图形用户界面(User Interface)。
基于LabWindows-CVIPC机与DSP间串口通讯设计
基于LabWindows/CVI的PC机与DSP间串口通讯设计摘要:本文以tms320f2808为例,简要的介绍了dsp c2000串口通讯接口的设计,并基于labwindows/cvi编程实现pc机与tms320f2808的串口通讯。
关键词:labwindows/cvi;tms320f2808;串口通讯中图分类号:tp393.09labwindows/cvi是一个完全的ansi c开发环境,用于仪器控制、自动检测、数据处理的应用软件。
使用灵活的c语言开发平台与数据采集、分析和显示有机的结合起来,为熟悉c语言的开发人员建立自动化检测系统、数据采集系统和过程化控制等提供了一个理想的软件开发环境。
采用ti公司生产的tms320f2808作为处理芯片,它是一款专为控制应用系统而设计的32位定点运算dsp。
它具有强大的外设功能,无需额外增加其它芯片便可轻松实现ad采集、多功能gpio口、sci、spi、can、iic以及其它通信接口。
利用labwindows/cvi灵活的c语言以及dsp强大的处理能力,可以灵活的实现pc机与dsp之间串行数据的交互功能。
1 pc机与dsp间的串口通讯设计1.1 dsp串口设计dsp与pc机进行数据交换,两者之间必须采用一个电平转换芯片,本文选用max公司生产的max3232进行电平转换。
pc机与dsp串口通讯框图如图1所示,电平转换电路如图2所示。
tms320f2808的内部具有两个相同的sci模块,scia和scib。
每个sci模块都有独立的接收器和发送器,他们有各自独立的使能位和中断位,可以进行半双工和全双工的工作模式。
每个sci模块同时拥有独立的两个收发引脚scirxd和scitxd,在不使用sci模式时,这两个引脚可以作为通用i/o口使用。
tms320f2808可编程实现64000种不同的波特率,还可通过硬件逻辑来实现自动波特率的功能。
1.2 通讯协议设计dsp与pc机之间采用固定的9.6k波特率,无奇偶校验,8位数据位,1位停止位。
LabWindowsCVI串口通信函数
LabWindows/CVI串口通信函数LabWindows/CVI提供的RS-232函数库主要包括以下几类函数:串行口打开/关闭 (Open/Close)函数,串行口输入/输出(Input/Output)函数,串行口控制(Control)函数,串行口状态查询(Status)函数和串行口事件处理(Callbacks)函数。
下面分别予以介绍。
1.串行口打开/关闭函数1)OpenCom函数功能:表示以默认的参数设置方式打开一个串口。
该函数原型为:int OpenCom (int COM_Port,char Device_Name[ ] )其中,参数COM_Port为整型变量,用于指定串口号,有效范围为1~1000;Device_Name[]为字符型数组,是用ASCⅡ码字符串表示的串口名。
2)OpenComConfig函数功能:用来打开一个串行口并进行相关的参数设置。
该函数原型为:int OpenComConfig(int COM_Port,char Device_Name[],long Baud_Rate,int Parity,int Data_Bits,int Stop_Bits,int Input_Queue_Size,int Output_Queue_Size)其中,参数COM_Port为整型变量,用于指定串口号,有效范围为1~1000;Device_Name[]为字符型数组,是用ASCⅡ码字符串表示的串口名。
例如,以“COM1”来代替端口1,如果输入值为NULL或一个空字符串,则以COM_Port号作为指定端口号。
Baud_Rate为长整型变量,用来设置串行口的传输速率,标准的传输速率有110、300、600、1200、2400、4800、9600、19200b/s等;默认值为9600。
Parity为整型变量,用来指定奇偶校验模式。
0表示无奇偶校验,1表示奇校验,2表示偶校验;Data_Bits为整型变量,用来指定每帧信息中数据位的个数,可选5、6、7、8;Stop_Bits为整型变量,用来指定每帧信息中停止位的个数,可选1、1.5或2;Input_Queue_Size为整型变量,用来指定串行口输入队列的大小;Output_Queue_Size为整型变量,用来指定串行口输出队列的大小。
LabWindowsCVI基础指导教程
LabWindows/CVI基础指导教程1. 简介LabWindows/CVI是一种基于C语言的集成开发环境(IDE),广泛应用于数据采集、实验控制和测试自动化等领域。
本教程旨在为初学者提供关于LabWindows/CVI的基础指导,包括环境安装、项目创建、界面设计和编程等方面的内容。
2. 环境安装在开始使用LabWindows/CVI之前,我们首先需要安装LabWindows/CVI的运行环境。
按照以下步骤进行安装:1.下载LabWindows/CVI安装程序,并运行安装程序。
2.在安装程序中选择安装路径,并点击“下一步”进行安装。
3.根据提示完成安装过程。
安装完成后,我们就可以开始创建LabWindows/CVI项目了。
3. 项目创建LabWindows/CVI使用项目(Project)的方式来组织和管理代码。
下面是创建新项目的步骤:1.打开LabWindows/CVI IDE。
2.点击“文件”菜单,并选择“新建项目”。
3.在弹出的对话框中选择项目类型和保存路径,然后点击“确定”。
4.在新建项目的基础上,可以添加文件、配置编译选项等。
4. 界面设计LabWindows/CVI提供了UI工具箱,可以通过拖拽控件来设计界面。
下面是界面设计的基本步骤:1.打开项目。
2.点击“窗体”菜单,并选择“添加窗体”。
3.在窗体设计器中,可以拖拽控件到窗体中,并调整位置和大小。
4.可以通过属性编辑器来设置控件的属性和事件。
界面设计完成后,我们可以进行程序的编程。
5. 编程LabWindows/CVI使用C语言进行编程。
下面是编程的基本步骤:1.打开窗体设计器,选择需要编写代码的控件。
2.双击控件,进入控件的事件处理函数。
3.在事件处理函数中编写代码,实现相应的功能。
4.可以使用LabWindows/CVI提供的函数库来完成各种操作,如数据采集、图形绘制等。
除了事件处理函数,我们还可以创建其他类型的函数来实现更复杂的功能。
在LABVIEW中实现网络通信的几种方法
在LABVIEW中实现网络通信的几种方法1 引言随着计算机技术、大规模集成电路、通信技术等的飞速发展,仪器系统与计算机软件技术紧密结合,使得传统仪器的概念得以突破,出现了一种全新的仪器概念——虚拟仪器。
1986年,美国国家仪器(national instruments, 简称NI)公司研发推出了图形化编程环境的开发平台——LabVIEW软件,随即就广泛地被工业界、学术界和研究实验室认可并接受,被公认为标准的数据采集和仪器控制软件,成为目前实现虚拟仪器软件设计最流行的工具之一。
同时随着网络的迅速发展,通过将网络技术和虚拟仪器相结合,构成网络化虚拟仪器系统,是自动测试仪器系统的发展方向之一。
所以通过网络进行数据共享是各种软件的发展趋势,而LabVIEW软件平台正是适应了这一发展趋势,它具有强大的网络通信功能,使用LabVIEW实现网络通信有4大类方法:(1)使用网络通信协议编程实现网络通信,可以使用的通信协议类型包括TCP/IP协议、UDP、串口通信协议、无线网络协议等;(2)使用基于TCP/IP的数据传输协议DSTP的DataSocket技术实现网络通信;(3)使用共享变量实现网络通信;(4)通过远程访问来实现网络通信。
本文对以上各种实现方法进行探讨,最后简单地分析了各种方法的优缺点及应用场合。
2 网络协议通信2.1 TCP通信技术网络通信协议是网络中传递、管理信息的一些规范,是计算机之间相互通信需要共同遵守的一些规则[1]。
网络通信协议通常被分为多个层次,每一层完成一定的功能,通信在对应的层次之间进行。
LabVIEW中支持的通信协议类型包括TCP/IP、UDP、串口通信协议、无线网络协议和邮件传输协议。
TCP/IP协议体系是目前最成功, 使用最频繁的Internet协议,有着良好的实用性和开放性。
它定义了网络层的网际互连协议IP,传输层的传输控制协议TCP、用户数据协议UDP等。
LabVIEW中为网络通讯提供了基于TCP/UDP的通讯函数供用户调用。
LabWindowsCVI串口通信函数
LabWindows/CVI串口通信函数LabWindows/CVI提供的RS-232函数库主要包括以下几类函数:串行口打开/关闭(Open/Close)函数,串行口输入/输出(Input/Output)函数,串行口控制(Control)函数,串行口状态查询(Status)函数和串行口事件处理(Callbacks)函数。
下面分别予以介绍。
1.串行口打开/关闭函数1)OpenCom函数功能:表示以默认的参数设置方式打开一个串口。
该函数原型为:int OpenCom (int COM_Port,char Device_Name[ ] )其中,参数COM_Port为整型变量,用于指定串口号,有效范围为1~1000;Device_Name[]为字符型数组,是用ASCⅡ码字符串表示的串口名。
2)OpenComConfig函数功能:用来打开一个串行口并进行相关的参数设置。
该函数原型为:int OpenComConfig(int COM_Port,char Device_Name[],long Baud_Rate,int Parity,int Data_Bits,int Stop_Bits,int Input_Queue_Size,int Output_Queue_Size)其中,参数COM_Port为整型变量,用于指定串口号,有效范围为1~1000;Device_Name[]为字符型数组,是用ASCⅡ码字符串表示的串口名。
例如,以“COM1”来代替端口1,如果输入值为NULL或一个空字符串,则以COM_Port号作为指定端口号。
Baud_Rate为长整型变量,用来设置串行口的传输速率,标准的传输速率有110、300、600、1200、2400、4800、9600、19200b/s等;默认值为9600。
Parity为整型变量,用来指定奇偶校验模式。
0表示无奇偶校验,1表示奇校验,2表示偶校验;Data_Bits为整型变量,用来指定每帧信息中数据位的个数,可选5、6、7、8;Stop_Bits为整型变量,用来指定每帧信息中停止位的个数,可选1、1.5或2;Input_Queue_Size为整型变量,用来指定串行口输入队列的大小;Output_Queue_Size为整型变量,用来指定串行口输出队列的大小。
LabVIEW串口通信详解
LabVIEW串口通信详解串口可以说是我们最容易见到,也最容易接触到的一种总线,台式机上一般都有二个,而现在很多下位机、仪器等很多都还是使用串口通信的。
论坛上很多朋友都经常会使用到串口,并遇到一些问题,这里有必要做一个详细的说明,以方便广大会员朋友,文章请勿转载到其它地方,谢谢。
论坛上早先发布过一个贴子,叫《串口WORD资料》,里面有一些中英文的串口的资料,这个文章是对那个资料的补充,如果是初接触串口的朋友建议先看一下上一个贴子先。
上一个贴子中提到过的内容这里不再进行补充首先补充一个比较重要的问题,就是在LabVIEW中使用串口的话一定要先安装VISA 这个驱动,然后生成的EXE运行时也需要在目标机上安装VISA Runtime Engine,可以在打包时一起打包。
VISA的驱动可以在NI网站上下载到:/nidu/cds/view/p/id/1605/lang/zhs1,串口扩展的问题先说一下串口的扩展问题,一般的台式机或工控机上都至少有二个串口,一般都是够用的,但是现在市场上已经很难找到带串口的笔记本了,而有时候在外出调试时需要在笔记本中使用到串口的,这时一般是使用USB-RS232的转接线,价格从十几到一百多都有,很多朋友反应在使用价格低的转接线时会出现乱七八糟的问题,而贵一点的线就很少听说有其它问题的,所以大家在使用便宜的USB-RS232转接线时要特别注意线的质量,遇到一些奇怪的问题时先考虑换一根好一点的线。
PCI-RS232扩展卡也同理,便宜的卡也容易出问题,尽量买好一点的,以免因小失大。
PCI-RS232一般至少能扩展2个串口,有些BT一点的可以扩展到8-16个,一堆线和接头。
转接线和扩展卡一般是要装驱动的。
2,串口功能的确认在使用串口之前,最好先确认一下串口是否正常,特别是使用转换接或扩展卡的。
检查的方法很简单,就是将串口的2、3脚短接起来,脚是发送数据,2脚接收数据,就是这个串口自发自收。
labWindows_CVI 串行口通信和网络数据传输
• 读写
▪ int ComRd (int COM_Port, char Buffer[], int Count); ▪ i = ComRd (1, buf, 128); ▪ int ComWrt (int COM_Port, char Buffer[], int Count); ▪ i = ComWrt (1, buf, 128); ▪ int ComRdByte (int COM_Port); ▪ int ComWrtByte (int COM_Port, int Byte);
▪ int RegisterTCPServer (unsigned int Port_Number, tcpFuncPtr Callback_Function, void *Callback_Data);
▪ i=RegisterTCPServer (200, ServerTCPCB, 0) ; ▪ 回调函数:int (*tcpFuncPtr) (unsigned handle, int xType,
▪ int CVICALLBACK ClientTCPCB (unsigned handle, int event, int error, void *callbackData);
• TCP_DISCONNECT • TCP_DATAREADY
2020/5/11
8/11
▪ int DisconnectFromTCPServer (unsigned int Conversation_Handle);
labwindowscvi6串行口通信和网络数据传输
▪ int DisconnectTCPClient (unsigned int Conversation_Handle);
• 客户机函数
▪ notifyCount = 50; // Wait for at least 50 bytes in queue eventChar = 13; // Wait for LF eventMask = LWRS_RXFLAG | LWRS_RECEIVE; InstallComCallback (comport, eventMask, notifyCount, eventChar, ComCallbackFunction, NULL);
• 控制
▪ int FlushInQ (int COM_Port); ▪ int FlushOutQ (int COM_Port);
2020/2/26
3/11
• 状态查询
▪ int GetInQLen (int COM_Port); ▪ i = GetInQLen (1); ▪ int GetOutQLen (int COM_Port); ▪ i = GetOutQLen (1);
▪ int ConnectToTCPServer (unsigned int *Conversation_Handle, unsigned int Port_Number, char Server_Host_Name[], tcpFuncPtr Callback_Function, void *Callback_Data, unsigned int Time_Out);
LabWindowsCVI串口通信函数
L a b W i n d o w s C V I串口通信函数标准化工作室编码[XX968T-XX89628-XJ668-XT689N]L a b W i n d o w s/C V I串口通信函数LabWindows/CVI提供的RS-232函数库主要包括以下几类函数:串行口打开/关闭(Open/Close)函数,串行口输入/输出(Input/Output)函数,串行口控制(Control)函数,串行口状态查询(Status)函数和串行口事件处理(Callbacks)函数。
下面分别予以介绍。
1.串行口打开/关闭函数1)OpenCom函数功能:表示以默认的参数设置方式打开一个串口。
该函数原型为:intOpenCom(intCOM_Port,charDevice_Name[])其中,参数COM_Port为整型变量,用于指定串口号,有效范围为1~1000;Device_Name[]为字符型数组,是用ASCⅡ码字符串表示的串口名。
2)OpenComConfig函数功能:用来打开一个串行口并进行相关的参数设置。
该函数原型为:intOpenComConfig(intCOM_Port,charDevice_Name[],longBaud_Rate,intP arity,intData_Bits,intStop_Bits,intInput_Queue_Size,intOutput_Queue_S ize)其中,参数COM_Port为整型变量,用于指定串口号,有效范围为1~1000;Device_Name[]为字符型数组,是用ASCⅡ码字符串表示的串口名。
例如,以“COM1”来代替端口1,如果输入值为NULL或一个空字符串,则以COM_Port 号作为指定端口号。
Baud_Rate为长整型变量,用来设置串行口的传输速率,标准的传输速率有110、300、600、1200、2400、4800、9600、19200b/s等;默认值为9600。
Labview实现PC与PC的串口通信
2.串口通信参数
波特率:衡量通信速度的参数。表示每秒钟传送的bit的 个数。
数据位:衡量通信中实际数据位的参数。实际数据位取决 于通信协议的选取。
停止位:指每个字节的最后一位。表示信息传输的结束。 奇偶校验位:串口通信中的一种检错方式。
采用图形化的编 程语言,比传统 的编程语言简单 直观,开发效率 高,而且运行速 度快,十分省时
2.串口通信(Serial Communications )
使用一条数据线,地线,及控制线,将数据一位 一位地依次传输。可以在系统间交换信息,特别 适用于计算机与计算机、计算机与外设之间的远 距离通信。
bview实现PC与PC串口通信
3.VViIsaS是A虚(V拟ir仪tu器al的In软st件ru结m构en体t 系Sr,ch在itLecatbuvireew)工
作平台上控制各种仪器的单接口程序库。
3.程序的实现—前面板的设计
(1)添加一个字符串输入控件:控件(Controls)→新式 (Modern)→字符串与路径(String & Path)→字符串输入控 件(String Control),将标签改为“发送区:”。
Labview实现PC与PC机的串口通信
本文主要内容
1
Labview简介
2
串口通信认识
3
Labvibview简介
Labview是实验室虚拟仪器集成环境(Laboratory Virtual Instrument Engineering Workbench)的简称,它是美国国 家仪器公司的创新软件产品。
bview实现PC与PC串口通信
Lab windowsCVI平台上实现带有握手机制的串行通信精品文档4页
Lab windowsCVI平台上实现带有握手机制的串行通信1 系统总体设计单片机和PC机的串行通信采用RS-232接口,系统工作时,单片机上电完成初始化设置后,等待PC机发送询问信号“?”(ASCII码是3FH),单片机接收到3FH后,就通过串口向PC机发送回答信号“.”(ASCII码是2EH),PC机收到回答信号“.”后,发送确认信号“!”(ASCII码是21H),到此就完成了软件握手,下面单片机开始发送数据,PC机接收并显示数据。
2 硬件设计系统中PC机作为上位机,单片机为下位机。
单片机的时钟振荡频率选择11.059MHz。
通过常用电平转换芯片MAX232实现PC机串口和单片机串口的连接,如图1所示。
单片机P2口接8位拨?a开关,通过拨码开关可以设置不同的波特率,如表1所示。
在单片机上电前将拨码开关打到相应位置完成单片机串口波特率的设定。
3 软件设计3.1 通信协议通信协议设定帧格式为:1位起始位,8位数据位,1位停止位,不设奇偶校验位。
有效的通信传输字节只是中间的8位数据位。
单片机的波特率设置由P2口内容设定,PC机的波特率由界面中的波特率选择控件决定,二者的波特率必须保持一致。
3.2 PC机程序设计PC机程序设计部分利用Lab windows/CVI平台进行,使用 Lab windows/CVI首先需建立一个项目文件,包含有用户界面文件(.uir)、C 源码文件(.c)、头文件(.h)、3个部分。
接下来调试好系统软件以后,使用Lab windows/CVI的Distribution Kit工具将项目文件生成应用文件(.EXE)。
3.2.1 用户界面设计创建一个新的工程文件,在工程文件中添加一个新的用户界面文件(.uir),在.uir文件中创建一个面板(panel)和若干控件。
面板和主要控件的属性设置则如表2所示。
设置好以后,还需要按照下面步骤修改设置一些控件属性:设置COMPORT控件的Label/Value属性:向控件Label中添加COM1、COM2、COM3、COM4,相应的Value值设为1、2、3、4,数据类型为int型;设置BAUDRATE 控件的Label/Value值:2400、4800、9600、19200,数据类型同样设为int型;设置CLEAR、READ、TEXTBOX、QUIT、FLUSHOUTQ、FLUSHINQ控件的Dimmed属性的初始值为TRUE[2]。
手把手教你labview串口通信(干货分享)
手把手教你labview串口通信我也是一个labview的初学者,这个例子介绍了一个最最简单的串口通信的上位机的例子。
单片机不断向串口发送数据。
上位机之显示串口发来的数据。
一.先在前面板添加一个VISA资源名称添加上之后前面板会出现在后面板会出现一.在后面板添加一个串口配置的控件接下来对对串口配置控件进行配置1.“启用终止符”-——-—-—-----配置布尔型变量“T”,就是取真.2.“终止符”--—-----———-我们不对其进行配置,选择默认终止符—-“\n”3。
’’超时'—--——-----为其配置10000的常量4。
资源名称与“VISA资源名称“控件相连接5。
波特率这里我们为其配置大小为“115200“的常量6。
其余各项不进行配置,默认系统设置上图为配置完成的结果二.接下来创建一个平铺式结构2.在平铺式顺序结构中添加一个延时控件ﻬ3.把串口配置控件的“错误输出“端、VISA资源名称输出端分别连接在平铺式顺序结构的两边上。
并给延时控件配置大小为100的常量。
如下图..三.1。
创建一个条件结构控件2.在条件结构控件中添加一个VISA读取控件3。
添加一个“VISA串口字节数“控件4。
将VISA串口字节数“控件”的“错误输入“端与上一环节中引出的”表示错误输出“的黄线连接。
5.将VISA串口字节数“控件”的“引用”端与上一环节中引出的代表VISA资源名称的线连接6. 将VISA串口字节数“控件”的“错误输出“端与“VISA 读取”控件的“错误输入"连接7.将VISA串口字节数“控件"的“引用输出“与“VISA 读取”控件的“VISA资源名称“的线连接。
..8。
字节数配置常量4,读者可根据自己数据大小任意配置。
四.1。
在条件结构外侧建立一个“VISA关闭“控件2.将VISA关闭“控件的错误输入、VISA资源名称端分别于“VISA读取”控件的对应端连接.3.建立一个简易错误处理器,将其错误输入端与串口关闭控件的错误输出端连接,如图,3.选择天剑结构控件“假”4。
LabVIEW软件中Communication子模块及其在网络通信中的应用
第7章 Communication子模块及其在网络通信中的应用
图7–3 TCP Listen.vi图标及其端口图 (a) TCP Listen.vi图标;(b) TCP Listen.vi图标与其端口
第7章 Communication子模块及其在网络通信中的应用
• TCP Listen.vi图标的调用路径: • Functions>>Communication>>TCP>>TCP Listen.vi • 输入端口: • port:端口号。 • timeout: 超时时间。如果在给定的时间内,没有创建
Connection.vi图标实现。TCP Open Connection.vi图标及
其端口图如图7–6所示。
•
第7章 Communication子模块及其在网络通信中的应用
图7–6 TCP Open Connection.vi图标及其端口图 (a) TCP Open Connection.vi图标;
(b) 服务器端流程图 图7–9 客户端流程图和服务器端流程图
第7章 Communication子模块及其在网络通信中的应用
实现。TCP Close Connection.vi图标及其端口图如图7–5 所示。
• TCP Close Connection.vi图标的调用路径: • Functions>>Communication>>TCP>>TCP Close
Connection.vi
第7章 Communication子模块及其在网络通信中的应用
是很可靠,但它有其特定的用途。
第7章 Communication子模块及其在网络通信中的应用
• 7.1.2 数据交换接口 • LabVIEW提供了在Windows应用程序之间或者应用程
LabWindowsCVI串口通信函数
L a b W i n d o w s/C V I串口通信函数LabWindows/CVI提供的RS-232函数库主要包括以下几类函数:串行口打开/关闭(Open/Close)函数,串行口输入/输出(Input/Output)函数,串行口控制(Control)函数,串行口状态查询(Status)函数和串行口事件处理(Callbacks)函数。
下面分别予以介绍。
1.串行口打开/关闭函数1)OpenCom函数功能:表示以默认的参数设置方式打开一个串口。
该函数原型为:intOpenCom(intCOM_Port,charDevice_Name[])其中,参数COM_Port为整型变量,用于指定串口号,有效范围为1~1000;Device_Name[]为字符型数组,是用ASCⅡ码字符串表示的串口名。
2)OpenComConfig函数功能:用来打开一个串行口并进行相关的参数设置。
该函数原型为:intOpenComConfig(intCOM_Port,charDevice_Name[],longBaud_Rate,intParity, intData_Bits,intStop_Bits,intInput_Queue_Size,intOutput_Queue_Size) 其中,参数COM_Port为整型变量,用于指定串口号,有效范围为1~1000;Device_Name[]为字符型数组,是用ASCⅡ码字符串表示的串口名。
例如,以“COM1”来代替端口1,如果输入值为NULL或一个空字符串,则以COM_Port 号作为指定端口号。
Baud_Rate为长整型变量,用来设置串行口的传输速率,标准的传输速率有110、300、600、1200、2400、4800、9600、19200b/s等;默认值为9600。
Parity为整型变量,用来指定奇偶校验模式。
0表示无奇偶校验,1表示奇校验,2表示偶校验;Data_Bits为整型变量,用来指定每帧信息中数据位的个数,可选5、6、7、8;Stop_Bits为整型变量,用来指定每帧信息中停止位的个数,可选1、1.5或2;Input_Queue_Size为整型变量,用来指定串行口输入队列的大小;Output_Queue_Size为整型变量,用来指定串行口输出队列的大小。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ASCII码
奇偶 停止 校验 位
位
• 电气特性
▪ 负逻辑:1=-5V~-15V, 0=+5V~+15V
▪ 最高速率:20kbit/s
▪ 最远距离:15m
•2020/5/25
• 打开配置和关闭
▪ int OpenComConfig (int COM_Port, char Device_Name[], long Baud_Rate, int Parity, int Data_Bits, int Stop_Bits, int Input_Queue_Size, int Output_Queue_Size);
labwindowscvi6第七章 串行口通信和网络数据
传输
2020年5月25日星期一
1. 串行口通讯
• RS-232端口定义
数据装置
就绪
请求
发送
清除
发送
振铃
指示
1 6
2 7
3 8 4 9 5
载波
检测
接收
数据
发送
数据
数据终端就
绪
信号
地
•2020/5/25
• 数据传输格式
起始
• 支持函数
▪ int GetTCPHostAddr (char Buffer[], int Buffer_Size); ▪ int GetTCPHostName (char Buffer[], int Buffer_Size); ▪ int GetTCPPeerAddr (unsigned int Connection_Handle,
• 事件处理
▪ int InstallComCallback (int COM_Port, int Event_Mask, int Notify_Count, int Event_Character, ComCallbackPtr Callback_Function, void *Callback_Data);
▪ i=RegisterTCPServer (200, ServerTCPCB, 0) ; ▪ 回调函数:int (*tcpFuncPtr) (unsigned handle, int xType,
int errCode, void *callbackData); • TCP_CONNECT • TCP_DISCONNECT • TCP_DATAREADY ▪ int CVICALLBACK ServerTCPCB (unsigned handle, int event, int error, void *callbackData); ▪ int UnregisterTCPServer (unsigned int Port_Number); ▪ int ServerTCPRead (unsigned int Conversation_Handle, void *Data_Buffer, unsigned int Data_Size, unsigned int Time_Out); ▪ dataSize = ServerTCPRead (g_hconversation, receiveBuf, dataSize, 1000);
char Buffer[], CPPeerName (unsigned int Connection_Handle,
char Buffer[], int Buffer_Size);
•2020/5/25
3. DataSocket
• NI公司定义的网络数据 通讯协议 • DataSocket库为NI的DataSocket编程提供
•2020/5/25
网络通讯
2. TCP协议(Transmission Control Protocol传 输控制协议 )
• 使用TCP进行网络通信时每个连接包括一个服务器 和一个客户。TCP服务器能通过网络向客户应用程 序发送数据或从客户应用程序接收数据,客户应用 程序也可以向服务器应用程序发送数据或从服务器 应用程序接收数据;
▪ int DisconnectTCPClient (unsigned int Conversation_Handle);
• 客户机函数
▪ int ConnectToTCPServer (unsigned int *Conversation_Handle, unsigned int Port_Number, char Server_Host_Name[], tcpFuncPtr Callback_Function, void *Callback_Data, unsigned int Time_Out);
• TCP服务器应用程序一旦向系统注册,就等待客户 应用程序的连接请求;而客户应用程序只能向已经 存在的服务器应用程序请求连接。
• 每个TCP服务器需要主机名(如:c)或主 机IP地址(如:123.456.78.90)和这个主机的唯一端 口号
•2020/5/25
• 服务器函数
▪ int RegisterTCPServer (unsigned int Port_Number, tcpFuncPtr Callback_Function, void *Callback_Data);
▪ int ClientTCPRead (unsigned int Conversation_Handle, void *Data_Buffer, unsigned int Data_Size, unsigned int Time_Out);
▪ i = ClientTCPRead (g_hconversation, receiveBuf, dataSize, 1000) ;
▪ int ClientTCPWrite (unsigned int Conversation_Handle, void *Data_Pointer, unsigned int Data_Size, unsigned int Time_Out);
▪ ClientTCPWrite (g_hconversation, transmitBuf, strlen (transmitBuf) + 1, 1000);
▪ i=ConnectToTCPServer (&g_hconversation, 200, tempBuf, ClientTCPCB, NULL, 5000);
▪ 回调函数:int (*tcpFuncPtr) (unsigned handle, int xType, int errCode, void *callbackData);
▪ i = OpenComConfig (1, “”, 14400, 0, 7, 1, 512, 512); ▪ int CloseCom (int COM_Port); ▪ i = CloseCom (1);
• 读写
▪ int ComRd (int COM_Port, char Buffer[], int Count); ▪ i = ComRd (1, buf, 128); ▪ int ComWrt (int COM_Port, char Buffer[], int Count); ▪ i = ComWrt (1, buf, 128); ▪ int ComRdByte (int COM_Port); ▪ int ComWrtByte (int COM_Port, int Byte);
•2020/5/25
▪ int ServerTCPWrite (unsigned int Conversation_Handle, void *Data_Pointer, unsigned int Data_Size, unsigned int Time_Out);
▪ i=ServerTCPWrite (g_hconversation, transmitBuf, strlen (transmitBuf) + 1, 1000) ;
• 控制
▪ int FlushInQ (int COM_Port); ▪ int FlushOutQ (int COM_Port);
•2020/5/25
• 状态查询
▪ int GetInQLen (int COM_Port); ▪ i = GetInQLen (1); ▪ int GetOutQLen (int COM_Port); ▪ i = GetOutQLen (1);
了支持,也简化了应用程序之间动态数据交 换 • 适用于大批量实时数据传递,简化用户编程
•2020/5/25
▪ notifyCount = 50; // Wait for at least 50 bytes in queue eventChar = 13; // Wait for LF eventMask = LWRS_RXFLAG | LWRS_RECEIVE; InstallComCallback (comport, eventMask, notifyCount, eventChar, ComCallbackFunction, NULL);
▪ int CVICALLBACK ClientTCPCB (unsigned handle, int event, int error, void *callbackData); • TCP_DISCONNECT • TCP_DATAREADY
•2020/5/25
▪ int DisconnectFromTCPServer (unsigned int Conversation_Handle);