labwindowscvi6第七章串行口通信和网络数据传输.pptx
LabWindowsCVI教程(1)PPT课件
LabWindows/CVI
19.08.2020
4/18
2. LabWindows/CVI的历史
19.08.2020
5/18
3. LabWindows/CVI的特点
(1)针对测试测量领域的ANSI C语言开发环境
C compiler for Virtual Instruments (CVI)
变量命名 程序的格式和注释 复杂的程序要事先规划设计
19.08.2020
7/18
4. 程序结构
测控软件一般包括:用户界面、程序控制、数 据采集和数据分析4部分
19.08.2020
8/18
5. 开发环境
(1)主要窗口
LabWindows/CVI开发环境的三个主要窗口是工程窗口 (.prj)、源代码窗口(.c)和用户界面编辑器窗口(.uir)。
19.08.2020
15/18
LabWindows/CVI的函数库
19.08.2020
16/18
(4)交互式代码生成 C文件中生成程序结构:Main, Switch, If, For Loop… … UIR文件中生成代码框架: Main Function, Callback Functions (panel, control, menu) 函数面板中函数的自动插入
20/18
C源代码文件
.uir 用户界面资源文件
.h
用户界面资源头文件
.lib 外部静态库模块文件
.obj 目标文件
.h
外部模块头文件
.dll 动态链接库文件
.lib 动态链接库导入库文件
.fp 函数库(函数数和函数面板)文件
19.08.2020
第7章 串行通信接口(SCI)
第7章串行通信接口(SCI)目前几乎所有的台式电脑都带有9芯的异步串行通信口,简称串行口或COM口。
有的台式电脑带有两个串行口,分别称为COM1、COM2口。
大部分的笔记本电脑也带有串行口。
随着USB接口的普及,串行口的地位逐渐变低了。
但是,作为设备间的一种简便的通信方式,在相当长的时间内,串行口还不会消失。
因为简单且常用的串行通信只需要三根线(发送线、接收线和地线),所以,串行通信可以作为MCU与外界通信的简便方式之一。
大部分嵌入式MCU都具有串行通信接口(Serial Communication Interface,SCI),掌握SCI的编程是学习MCU的重要内容之一。
本章从掌握规范的SCI基本编程角度讨论串行通信编程,把与芯片型号相关内容和与芯片型号无关内容区别开来,便于读者融会贯通与实际应用。
本章7.1、7.2节是与芯片无关的有关串行通信的通用基础知识,只有理解这些基础知识,才能进行串行通信的应用。
7.3、7.4节阐述GP32芯片的SCI模块的编程方法,在此基础上,重点掌握7.5节给出的编程实例。
注意,在汇编程序中,只有初始化子程序与GP32相关,收发程序在整个08系列中是通用的,在C程序中,只有初始化子程序与GP32相关,收发程序对任何芯片是通用的。
当然,要注意头文件SCI.h相关位的定义。
关于串口程序的测试,最好利用教学资料中提供的PC机方的高级语言源程序进行。
根据自己对高级语言的熟悉程度选用VB、C#、VC或其他高级语言。
实际上,掌握一门PC机方的高级语言编程对嵌入式系统开发是必要的。
7.1异步串行通信的基础知识本节简要概括了串行通信中的通常使用的相关基本概念,为学习MCU的串行接口编程做准备。
对于已经了解这方面知识的读者,可以略读本节。
7.1.1基本概念“位”(bit)是单个二进制数字的简称,是可以拥有两种状态的最小二进制值,分别用“0”和“1”表示。
在计算机中,通常一个信息单位用8位二进制表示,称为一个“字节”(byte)。
串行通信ppt课件
第10章 串行通信
(2)起始位的检测
必须确定起始位才能开始接收数据,即实现位同步。 数据接收时钟RCLK使用16倍波特率的时钟信号。接收器 用RCLK检测到串行数据输入引脚SIN由高电平变低后,连续 测试8个RCLK时钟周期,若采样到的都是低电平,则确认为 起始位。 确认了起始位后每隔16个RCLK时钟周期对SIN输入的数据 位进行采样一次,直至规定的数据格式结束。
10
第10章 串行通信
TxD 发送数据——串行数据的发送端。 RxD 接收数据——串行数据的接收端。 GND 信号地——为所有的信号提供一个公共的参考电平 RTS 请求发送——当数据终端设备准备好送出数据时,就发出有效的 RTS信号,用于通知数据通信设备准备接收数据。 CTS 清除发送——当数据通信设备已准备好接收数据终端设备的传送 数据时,发出CTS有效信号来响应RTS信号。 DTR 数据终端准备好——通常当数据终端设备一加电,该信号就有效, 表明数据终端设备准备就绪。 DSR 数据装置准备好——通常表示数据通信设备(即数据装置)已接通 电源连到通信线路上,并处于数据传输方式,而不是处于测试方式或 断开状态。 CD 载波检测——当本地调制解调器接收到来自对方的载波信号时,就 从该引脚向数据终端设备提供有效信号。该引脚缩写为DCD。 RI 振铃指示——当调制解调器接收到对方的拨号信号期间,该引脚 信号作为电话铃响的指示,保持有效。
16
第10章 串行通信
2.结构
其中寄存器: THR、TSR RBR、RSR LCR LSR DLH DLL MCR MSR IER IIR
17
第10章 串行通信
(1)串行数据的发送
CPU送来的并行数据存在发送保持寄存器THR中。 只要发送移位寄存器TSR中没有正在发送的数据, 发送保持寄存器的数据就送入TSR 。 与此同时,8250按照编程规定的起止式字符格式, 加入起始位、奇偶校验位和停止位,从串行数据输 出引脚SOUT逐位输出。 因为THR、TSR采用双缓冲寄存器结构,所以在 TSR进行串行发送的同时,CPU可以向8250提供下 一个发送数据到THR,这样可以保证数据的连续发 送。
labwindowscvi6第七章串行口通信和网络数据传输
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);
串口通信原理及操作流程PPT(共60张).ppt
模拟 电子开
关
模拟 电子开
关
合成
频带信 号输出
1 01
1.5串行通信的错误校验
1、奇偶校验 在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。 奇校验时,数据中“1”的个数与校验位“1”的个数之和应 为奇数;偶校验时,数据中“1”的个数与校验位“1”的个 数之和应为偶数。接收字符时,对“1”的个数进行校验,若 发现不一致,则说明传输数据过程中出现了差错。 2、代码和校验 代码和校验是发送方将所发数据块求和(或各字节异或), 产生一个字节的校验字符(校验和)附加到数据块末尾。接 收方接收数据同时对数据块(除校验字节外)求和(或各字 节异或),将所得结果与发送方的“校验和”进行比较,相 符则无差错,否则即认为传送过程中出现了差错。 3、循环冗余校验 这种校验是通过某种数学运算实现有效信息与校验位之间的 循环校验,常用于对磁盘信息的传输、存储区完整性校验等 。这种校验方法纠错能力强,广泛应用于同步通信中。
? 典型的面向位的同步协议如ISO的高级数据链路控制规程 HDLC和IBM的同步数据链路控制规程SDLC。
? 同步通信的特点是以特定的位组合“01111110”作为帧 的开始和结束标志,所传输的一帧数据可以是任意位。所以 传输的效率较高,但实现的硬件设备比异步通信复杂。
1.3 串行通信的传输方向
①单工
? RS-422A传输速率(90Kbps)时,传输距离可达1200米。
2.3 RS-485 接口
? RS-485是RS-422A的变型
:RS-422A用于全双工,而
RS-485则还可用于半双工。
RS-485是一种多发送器标准
,在通信线路上最多可以使用
TTL
TTL 32 对差分驱动器/接收器。
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网络通信专题知识课件
第十一章 通信编程
11.2 DataSocket通信技术
11.3 TCP通信
11.1 串行通信
第十一章 通信编程
早期旳仪器、单片机、PLC等均使用串口与 计算机进行通信,RS-232协议是一种通用旳串 行通信总线。目前,RS-232总线依然是虚拟仪 器旳构成方式之一。
将串口中断至少250ms。
11.1.3 串行通信应用实例
第十一章 通信编程
例13.1 用LabVIEW实现双机串行通讯。 本例使用两台计算机进行通讯,一台计算机 作为服务器,经过串口向外发送数据,另一台 计算机作为客户机,接受由服务器发送过来旳 数据。
两台计算机串口旳连线如下图:
PIN1 PIN2 PIN3 PIN4 PIN5 PIN6 PIN7 PIN8 PIN9
PIN1 PIN2 PIN3 PIN4 PIN5 PIN6 PIN7 PIN8 PIN9
服务器框图程序
第十一章 通信编程
服务器前面板
第十一章 通信编程
客户机框图程序
第十一章 通信编程
客户机前面板
第十一章 通信编程
由一种程序进行串口旳读写
第十一章 通信编程
前面板。
第十一章 通信编程
第十一章 通信编程
·Data:表达从DataSocket服务器读出旳数据。
④ 关闭打开旳连接
第十一章 通信编程
第十一章 通信编程
⑤ 选择Datasocket旳URL 显示一种对话框供顾客选择URL。
第十一章 通信编程
11.2.4 使用DataSocket链接前面板对象
DataSocket旳前面板对象链接是一种不需要 任何编程旳网络数据传播措施。经过DataSocket 将两个程序旳前面板对象链接起来,一种发送 数据,另一种接受数据,就能够实现对程序旳 远程控制、数据旳远程采集等多种功能。
串口通信原理与应用 ppt课件
ppt课件
17
ppt课件
18
UART结构图
ppt课件
19
1. 数据传输模式
回环模式
(此模式仅用于测试,不用做传输数据)。 S5PV210的UART提供了一个参考环回模式测试 模式,有助于排除在通信连接中的故障。通过设 置UART控制寄存器中的环回位来选择此模式。
中断或轮询
当有数据到来或数据可发送时产生中断,通知 CPU。这种方式要求通信硬件比较高,需要支持 产生中断信号。
ppt课件
35
5. UART波特率除数寄存器和UART分槽寄存 器 UBRDIVn寄存器和UDIVSLOTn寄存器用来决 定波特率。
ppt课件
36
7.2.2 UART操作寄存器
1. UART接收发送状态寄存器(UTRSTATn) UTRSTATn寄存器用于记录UART发送和接收 的状态,其中包括发送器是否为空、发送缓冲 寄存器是否为空。 如下表所示:
DMA模式
通常实现数据的转移或复制时,CPU将从源地址复 制数据到寄存器,然后将寄存器数据再写入到目的 地址处,这个操作是由CPU来执行。
ppt课件
20
2. 数据发送
发送的数据帧是可编程的,包括一个开始位, 5-8个数据位,一个可选的奇偶位和1-2个停止 位,其可由线性控制寄存器ULCONn来设置。 发送器也可以产生一个终止条件,其可以对一 个发送时间强制串行输出为逻辑0。在当前发 送字被完全传输完以后,该模块发送一个终止 信号。在终止信号发送后,其不断发送数据到 Tx FIFO中。
当计算机发送一个 信息包,标准的值 是5、6、7和8位。
2. 数据位
每个包是指一个字 节,包括开始/停止 位,数据位和奇偶 校验位。 如何设置取决于想 传输的信息。比如, 标准的ASCII码是 0-127(7位),扩 展的ASCII码是0255(8位)。
串口通信原理及操作流程PPT课件
第8页/共24页
近距离传送电路
RXD TXD GND
微机
电
RXD
平
TXD
转
GND
换
较远距离传送电 路
RXD TXD
RXD
TXD
GND
GND
RXD TXD GND
微机其他 设备
电
平
RXD
转
TXD
换
GND
第9页/共24页
接 微 机口
远距离传送电路
调电 电调
制话 话制
解分 分解
调机 机调
器
器
接微 机
口
T1OUT
RST
C 1
C1
C 1
1
6 7
2
8
3 4
9 5
89C51
C 2
C2
C 2
V+ VCC
MAX232
C3
+5V C4
PC机 COM1
或
COM2
XTAL1
GND
V-
C5
XTAL2 GND
C1=C2=C3=C4=C5=1F
第12页/共24页
51单片机串行口结构
<1>51单片机串行口是可编程全双工的通信接口,能同时进行数据的发送和 接收, 也可作为同步移位寄存器使用。
第16页/共24页
SM2:多机通信控制位 主要用于方式2、3。在不同串口工作方式下,通
过控制SM2,可以实现多机通信。
SM2作用: 在方式2,3中,发送机SM2=1(程序设置). 接收机SM2=1,若RB8=1,激活RI,引起接收中断RB8=0, 不激活RI,不引起接断。SM2=0,无论RB8=1还是RB8=0 均激活RI引起接收中断。在方式 0 中, SM2应置为0。 在方式1中, 当接收时SM2=1, 则只有收到有效停止位 才激活RI。
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应用程序之间或者应用程
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);
手把手教你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。
《串口通信》PPT课件(2024版)
接收方检测到协议要求的1~2个同步字符后,就可以认为双方已经取 得一致,之后就可以在严格的时钟控制下采样数据线接收数据。同步 通信对双方的时钟要求很严格,并且容易造成错误累积。
20.11.2024
精品医学
第12页
2.3 同步通信
头目)前,广D泛CE地的应接用口于为计孔算式机(和母终头端)或。外设之间的近距离连接。
20.11.2024
精品医学
第20页
3.1 连接器的机械特性
20.11.2024
精品医学
第21页
3.2 串口通信基本接线方法
9针串口(DB9)
25针串口(DB25)
针号 1 2 3 4 5 6 7 8 9
功能说明 数据载波检测 接收数据 发送数据 数据终端准备 信号地 数据设备准备好 请求发送 清除发送 振铃指示
20.11.2024
精品医学
第8页
2.2 异步通信
异步通信以字符为单位传送数据。为了解决帧同步,每个字符都 附加了一些控制信息,由4部分组成:1位起始位(低电平)、5~8 位数据位、1位奇偶校验位、1~2位停止位(高电平)。
异步通信的通信中两个字符的时间间隔是不固定的,而在同一字 符中两个相邻位代码间的间隔是固定的。
20.11.2024
精品医学
第15页
2.5 数据纠错和检错
由于突发性干扰(电气干扰、天气干扰等)引起传输信号的误码, 这将直接影响通信系统的可靠性。
将如何发现传输中的错误叫做检错。 当发现错误后,如何消除和纠正错误叫做纠错。 在基本通信规程中,一般采用奇偶校验检错,以反馈重发方式纠错。 在高级通信规程中,一般采用循环冗余校验CRC检错,以自动纠错
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]。
LabWindowsCVI串口通信函数
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为整型变量,用来指定串行口输出队列的大小。
串口通信 PPT课件
图2 通常情况下,发送驱动器A、B之间的正电平在+2~+6V,是一个
逻辑状态,负电平在-2~-6V,是另一个逻辑状态。另有一个 信号地C,在RS-485中还有一“使能”端,而在RS-422中这 是可用可不用的。“使能”端是用于控制发送驱动器与传输线 的切断与连接。当“使能”端起作用时,发送驱动器处于高阻 状态,称作“第三态”,即它是有别于逻辑“1”与“0”的第三 态。
②20mA电流环信号 9个(12,13,14,15,16, 17,19,23,24)
③空6个(9,10,11,18,21,25) ④保护地(PE)1个,作为设备接地端(1脚) DB-25型连接器的外形及信号线分配如图3所示。注
意,20mA电流环信号仅IBM PC和IBM PC/XT机 提供,至AT机及以后,已不支持。
行匹配。但在短距离与低速率下可以不用考虑终端 匹配。那么在什么情况下不用考虑匹配呢?理论上, 在每个接收数据信号的中点进行采样时,只要反射 信号在开始采样时衰减到足够低就可以不考虑匹配。 一般终端匹配采用终接电阻方法, 终接电阻一般在RS-422网络中取100Ω,在RS-485 网络中取120Ω。相当于电缆特性阻抗的电阻,因 为大多数双绞线电缆特性阻抗大约在100~120Ω。 这种匹配方法简单有效,但有一个缺点,匹配电阻 要消耗较大功率,对于功耗限制比较严格的系统不 太适合。
RS-485与RS-422的不同还在于其共模输出电压 是不同的,RS-485是-7V至+12V之间,而RS422在-7V至+7V之间,RS-485接收器最小输入 阻抗为12k RS-422是4k
RS-485与RS-422一样,其最大传输距离约为 1219米,最大传输速率为10Mb/s。平衡双绞线的 长度与传输速率成反比,在100kb/s速率以下,才 可能使用规定最长的电缆长度。只有在很短的距离 下才能获得最高速率传输。一般100米长双绞线最 大传输速率仅为1Mb/s。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
▪ int InstallComCallback (int COM_Port, int Event_Mask, int Notify_Count, int Event_Character, ComCallbackPtr Callback_Function, void *Callback_Data);
• TCP服务器应用程序一旦向系统注册,就等待客户 应用程序的连接请求;而客户应用程序只能向已经 存在的服务器应用程序请求连接。
• 每个TCP服务器需要主机名(如:c)或主 机IP地址(如:123.456.78.90)和这个主机的唯一端 口号
2021/2/21
6/11
• 服务器函数
• 控制
▪ int FlushInQ (int COM_Port); ▪ int FlushOutQ (int COM_Port);
2021/2/21
4/11
• 状态查询
▪ int GetInQLen (int COM_Port); ▪ i = GetInQLen (1); ▪ int GetOutQLen (int COM_Port); ▪ i = GetOutQLen (1);
• RS-232端口定义
1
载波检测
数据装置就绪
6
2
接收数据
请求发送
7
3
发送数据
清除发送
8 4
数据终端就绪
振铃指示95信地2021/2/212/11
• 数据传输格式
起始位
ASCII码
奇偶 停止位 校验位
• 电气特性
▪ 负逻辑:1=-5V~-15V, 0=+5V~+15V ▪ 最高速率:20kbit/s ▪ 最远距离:15m
LabWindows/CVI教程(6)
串行口和网络通讯
主讲:乔立岩
2021/2/21
Email: qiaoliyan@ (交作业) MSN: qiaoliyan@(在线交流) Tel: 86413532 ext. 8611 (逸夫楼611)
自动化测试与控制研究所
1. 串行口通讯
2021/2/21
5/11
网络通讯
2. TCP协议(Transmission Control Protocol传 输控制协议 )
• 使用TCP进行网络通信时每个连接包括一个服务器 和一个客户。TCP服务器能通过网络向客户应用程 序发送数据或从客户应用程序接收数据,客户应用 程序也可以向服务器应用程序发送数据或从服务器 应用程序接收数据;
▪ 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);
▪ dataSize = ServerTCPRead (g_hconversation, receiveBuf, dataSize, 1000);
2021/2/21
7/11
▪ int ServerTCPWrite (unsigned int Conversation_Handle, void *Data_Pointer, unsigned int Data_Size, unsigned int Time_Out);
▪ int RegisterTCPServer (unsigned int Port_Number, tcpFuncPtr 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);
▪ i=ServerTCPWrite (g_hconversation, transmitBuf, strlen (transmitBuf) + 1, 1000) ;
▪ int UnregisterTCPServer (unsigned int Port_Number);
▪ int ServerTCPRead (unsigned int Conversation_Handle, void *Data_Buffer, unsigned int Data_Size, unsigned int Time_Out);
▪ 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);
2021/2/21
3/11
• 打开配置和关闭
▪ 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);