VB与串口通信.txt     -你脚踏俩只船,你划得真漂亮。- 每个说不想恋爱的人 心里都装着一个不可能的人。我心疼每一个不快乐却依然在笑的孩子。(有没有那么一个人,看透我在隐身,知道我在等人。    本文由qinjin171贡献
doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
第 5 章 VB 与串口通信
接口技术是工业实时控制和数据采集中非常重要的计算机应用技术, 它可实现 CPU 与存 储器、I/O 设备、控制设备、测量设备、通信设备、A/D 及 D/A 转换器等的信息交换。 VB 是程序设计人员在 Windows 环境下最常用的开发串口通信程序的编程语言。 利用 VB 开发串口通信程序主要有两种方法:一是使用 MSComm 串口控件,二是调用 Windows API 函数。 在实践中,使用 VB 串口控件 MSComm 实现通信的方法比调用 API 函数的方法更加方 便、快捷,而且用较少的代码可以实现相同的功能,从而使编程效率大大提高。
5.1 串行接口简介
串行接口一般包括 RS232/422/485,其技术简单成熟,性能可靠,价格低廉;所要求的 软/硬件开发环境都很低,广泛应用于计算机及相关领域,如调制解调器(Modem) 、串行打 印机、各种监控模块、PLC
、摄像头云台、数控机床、单片机及相关智能设备,甚至路由器 也不例外(通过串口设置参数) 。 在计算机测控系统中,主控机一般采用 PC 或 IPC,通过串口与测控模块相连,测控模 块再连接相应的传感器和执行器,如此形成一个简单的双层结构的计算机测控系统。这种结 构主要用于单独的中小型企业或部门,如果属于综合型企业或部门,如电力系统监控,高速 公路监控和收费系统,则可以此为基础结构进行扩充,用集线器将众多双层监控系统连接起 来,再用交换机将若干集线器连接起来,统一接上路由器,从而与 Internet 互联,如此即可 形成一个庞大的计算机测控网络。由此可见,尽管现代计算机的新接口层出不穷,各种网络 应用也日新月异,其规模也越来越大,但是,其基础结构却有不少是串行通信系统,串行通 信也成了其中的核心技术。
5.1.1 串口通信的基本概念
1.并行通信与串行通信 终端与其他设备(例如,其他终端、计算机和外部设备)通过数据传输进行通信。数据 传输可以通过两种方式进行:并行通信和串行通信。 (1)并行通信。 在计算机和终端之间的数据传输通常是靠电缆或信道上的电流或电压变化实现的。如 果一组数据的各数据位在多条线上同时被传送,这种传输方式被称为并行通信,如图 5-1 所示。
Visual Basic 数据采集与串口通信测控应用实战
1 1 0
发 送 端
0
接 收 端
1 1 0 1
5-1
通信
数据 数据 数据 数据 2 串 通信 串 通信 通信 制 0 1 数据 用
数据 1 集 通信 通 数据信 5-2
1 1 0
用 实 128 数据
30m 数据
1 1 0
发 送 端
0 1 1 0 1
11001101 /串 串/
0
接 收 端vb软件开发
1 1 0 1
5-2
通信
数据 与
通信 串 数据
数据 串 通信 力 通信
到 数据 串 通信 通信 信 串 通信 T 串 NT 数据采集 控制 到 应
串 通信 通信 串 通信 用 2.串行通信的工作模式 通
– 132 –
串 数据通信
数据通
第 5 章 VB 与串口通信
送,按照数据流的方向可分成 3 种传送模式:单工、半双工和全双工。 (1)单工形式。 单工形式的数
据传送是单向的。通信双方中,一方固定为发送端,另一方则固定为接收 端。信息只能沿一个方向传送,使用一根传输线。如图 5-3 所示。
接 发 送 器 器 收
线
图 5-3
单工形式
单工形式一 用 只向一个方向传送数据的 。 如, 与 的通信是 单工形式, 为只 向 传送数据, 的数据传送。 通信信 中,如单工 线发送 。 (2)半双工形式。 半双工通信使用 一根传输线, 可发送数据 可接收数据, 能 发送和接收。 刻只能 中的一方发送数据,另一方接收数据。 半双工形式 可 使用一 数据线, 可 使用 数据线。如图 5-4 所示。
发送 接收 线
图 5-4 半双工形式
发送 接收
半双工通信中 一端 一个收/发 ,通 定数据向 个方向传 输。 为 ,所 。信息传输 。 是 单方 向传输的 ,用半双工方式 能 , 用全双工方式,可 一根传输线。 (3)全双工形式。 全双工数据通信分 根可 个 的 发送和接收的传输线 传送, 通信双方 能 一 发送和接收 。如图 5-5 所示。
发送 接收 线
图 5-5 全双工形式
接收 发送
– 133 –
Visual Basic 数据采集与串口通信测控应用实战
在全双工方式中,每一端都有发送器和接收器,有两条传送线,可在交互式应用和远程 监控系统中使用,信息传输效率较高。 3.异步传输与同步传输 串行传输中,数据是一位一位按照到达的顺序依次传输的,每位数据的发送和接收都需 要时钟来控制。发送端通过发送时钟确定数据位的开始和结束,接收端需要在适当的时间间 隔对数据流进行采样来正确地识别数据。接收端和发送端必须保持步调一致,否则就会在数 据传输中出现差错。为了解决以上问题,串行传输可以采用以下两种方法:异步传输和同步 传输。 (1)异步传输。 异步传输方式中,字符是数据传输单位。在通信的数据流中,字符间
异步,字符内部各 位间同步。异步通信方式的“异步”主要体现在字符与字符之间通信没有严格的定时要求。 异步传输中,字符可以是连续地、一个个地发送,也可以是不连续地,随机地进行单独发送。 在一个字符格式的停止位之后,立即发送下一个字符的起始位,开始一个新的字符的传输, 这叫做连续的串行数据发送,即帧与帧之间是连续的。断续的串行数据传送是指在一帧结束 之后维持数据线的“空闲”状态,新的起始位可在任何时刻开始。一旦传送开始,组成这个 字符的各个数据位将被连续发送,并且每个数据位持续的时间是相等的。接收端根据这个特 点与数据发送端保持同步,从而正确地恢复数据。收/发双方则以预先约定的传输速率,在时 钟的作用下,传送这个字符中的每一位。 (2)同步传输。 在同步传输方式中, 比特块以稳定的比特流的形式传输, 数据被封装成更大的传输单位, 称为帧。每个帧中含有多个字符代码,而且字符代码与字符代码之间没有间隙以及起始位和 停止位。和异步传输相比,数据传输单位的加长容易引起时钟漂移。为了保证接收端能够正 确地区分数据流中的每个数据位,收发双方必须通过某种方法建立起同步的时钟。可以在发 送器和接收器之间提供一条独立的时钟线路,由线路的一端(发送器或者接收器)定期地在 每个比特时间中向线路发送一个短脉冲信号,另一端则将这些有规律的脉冲作为时钟。这种 技术在短距离传输时表现良好,但在长距离传输中,定时脉冲可能会和信息信号一样受到破 坏,从而出现定时误差。另一种方法是,通过采用嵌有时钟信息的数据编码位向接收端提供 同步信息。 4.硬件握手与软件握手 握手信号实际上是控制信号,用来控制数据的传送。通过握手信号,发送方可以通知接 收方是否有数据要发送。接收方通过握手信号通知发送方它是否已经准备好了接收信号。握 手信号遵循某种协议。 当发送方和接收方处理数据的速度不一样时,可能
会造成数据丢失。在传输中,如果发送 方的发送速度大于接收方的接收速度,同时接收方处理数据的速度不够快的话,那么接收端的 缓冲区必定在一定时间后溢出,从而造成以后发送过来的数据不能进入缓冲区而丢失。发送方 何时可以继续发送数据, 何时必须暂停发送, 从而让接收方有时间处理数据, 这称为流量控制, 必须靠握手信号来解决这个问题。例如,打印机和计算机进行通信时,一些打印机打印速度可 能跟不上计算机发送数据的速度,就必须要通过握手信号通知计算机暂停发送数据。
– 134 –
第 5 章 VB
与串口通信
(1)硬件握手。 在硬件握手中,发送方通过将某一个导线拉到高电平或者低电平,来表示发送方可以发 送数据。接收方已经准备好接收数据之后,也把某一个导线拉到高电平或者是低电平,来通 知发送方,发送方一直在检测这个信号。接收方可以在任何时候把这个信号变为无效,甚至 是在接受一个数据块的过程中。当发送方检测到这个信号变为无效之后,就必须停止本次发 送,直到这个信号变为有效。 (2)软件握手。 在软件握手中,以数据线上的数据信号来代替实际的硬件电路。这种方法用在直接连接 或者通过调制解调器连接的两台计算机之间进行双向通信的场合。 对于软件握手现在已经建立了一些标准协议,其中最常用的是通信协议。通信协议是指 通信双方的一种约定,约定包括对数据格式、同
步方式、传送速度、传送步骤、检纠错方式 以及控制字符定义等问题作出统一规定,通信双方必须共同遵守,也叫做通信控制规程或称 传输控制规程,它属于 OSI 七层参考模型中的数据链路层。 (3)硬件和软件结合的握手方法。 如果使用计算机或终端通过调制解调器和主计算机进行通信,那么调制解调器使用硬件 握手方法和计算机联系,主计算机和调制解调器之间也使用硬件握手方法,主计算机和计算 机之间将使用软件握手方法进行联系。 因此, 计算机必须要编程, 仅当调制解调器的 DSR (有 时可能使用 CD)线电位变高和软件停止信号没有收到时,软件才送出一个通知信号。 一些计算机自动监测硬件握手信号,这些计算机等待硬件握手信号变高以后送出一个字 符,所以程序只需要处理软件握手信号。 5.串口通信的基本参数 串行端口的通信方式是将字节拆分成一个接着一个的位再传送出去。接到此电位信号的 一方再将此一个一个的位组合成原来的字节,如此形成一个字节的完整传送。 在传输进行的过程中,双方明确传送信息的具体方式,否则双方就没有一套共同的译码 方式,从而无法了解对方所传过来的信息的意义。因此双方为了进行通信,必须遵守一定的 通信规则,这个共同的规则就是通信端口的初始化。 通信端口的初始化必须对以下几项参数进行设置。 (1)数据的传输速度。 串行通信的传输受到通信双方硬件配备性能及通信线路的特性控制,收、发双方必须按 照同样的速率进行串行通信,即收、发双方采用同样的波特率。我们通常将传输速度称为波 特率,指的是串行通信中每一秒所传送的数据位数,单位是 bit/s。我们经常可以看到仪器或 Modem 的规格书上都写着 19 200bit/s、38 400bit/s,……,所
指的就是传输速度。 就仪器或工业场合来说,4 800bit/s、9 600bit/s 是最常见的传输速度,现在的个人计算机 所提供的串行端口的传输速度都可以达到 15 200bit/s (甚至达到 921 600bit/s) 若传输距离较 , 近而设备也提供时,使用最高的传输速度也可以。 例如,在某异步串行通信中,每传送一个字符需要 8 位,如果采用波特率 4 800bit/s 进行 传送,则每秒可以传送 600 个字符。 (2)数据的传送单位。 一般串行通信端口所传送的数据是字符型, 若用来传输文件, 则会使用二进制的数据型。
– 135 –
Visual Basic 数据采集与串口通信测控应用实战
当使用字符型时,工业界使用到的有 ASCII 字符码及 JIS 字符码;ASCII 码使用了 8 位形成 一个字符,而 JIS 码则以 7 位形成一个字符。我们可以发现,欧美的设备多使用 8 位的字节, 而日本的设备多使用 7 位为一个字节。以实际的 RS-232 传输上看来,由于工业界常使用的 PLC 大多只是传送文字码,因此只要 7 位就可以将 ASCII 码的 0~127 码表达出来(2 7=128, 共有 128 种组合方式) ,所有的可见字符也落在此范围内,所以只要 7 个数据位就够了。不同 的情况下(看所使用的协议) ,会使用到不同的传送单位。使用多少位合成一个字节必须先行 确定。 (3)起始位与停止位。 由于异步串行传输中并没有使用同步脉冲作基准,故接收端完全不知道发送端何时将 进行数据的传送。发送端准备要开始传送数据时,发送端会在所送出的字符前后分别加上 高电位的起始位(逻辑 0)及低电位的停止位(
逻辑 1) ,它们分别是所谓的起始位和停止 位。也就是说,当发送端要开始传送数据时,便将传输线上的电位由低电位提升至高电位, 而当传送结束后,再将电位降至低电位。接收端会因起始位的触发(因电压由低电位升至 高电位)而开始接收数据,并因停止位的通知(因电压维持在低电位)而明确数据的字符 信号已经结束;当加入了起始位及停止位才比较容易达到多字符的接收能力。起始位固定 为 1 位, 而停止位则有 1、 1.5、 位等多种选择, 2 如何选择呢?只要通信双方协议通过即可, 没有强制规定。 (4)校验位。 为了预防错误的产生,使用校验位作为检查的机制。校验位是用来检查所传送数据的正 确性的一种核对码,又分成奇校验与偶校验两种,分别是检查字符码中 1 的数目是奇数或偶 数。 以偶校验为例, “A” ASCII 码是 41H 的 (十六进制) 将它以二进制表示时, 01000001, , 是 其中 1 的数目是 2,因此校验位便是 0,使 1 的数目保持偶数。同样的,校验位是奇校验时, “A”的校验位便是 1,
使 1 的数目保持在奇数。接收者重新计算奇偶校验位,如果新的计算 值正确,那么表示正常。如果新的计算值错误,那么接收端就会收到一些指示,表示此次接 收的数据有误。
5.1.2 RS-232C 串口通信标准
RS-232C 是美国电子工业协会(Electronic Industry Association) ,EIA 于 1962 年公布, 并于 1969 年修订的串行接口标准。 它已经成为国际上通用的标准。 1987 年 1 月, RS-232C 经修改后,正式改
名为 EIA-232D。由于标准修改得并不多, 因此现在很多厂商仍用旧的 名称。 RS-232C 标准(协议)的全称是 EIA-RS-232C 标准,其中 RS(Recommended Standard) 代表推荐标准,232 是标识号,C 代表 RS-232 的最新一次修改(1969 年) ,它适合于数据传 输速率在 0~20 000bit/s 范围内的通信。这个标准对串行通信接口的有关问题,如信号电平、 信号线功能、电气特性、机械特性等都作了明确规定。 目前 RS-232C 已成为数据终端设备(Data Terminal Equipment,DTE,如计算机)和数 据通信设备(Data Communication Equipment,DCE,如 Modem)的接口标准。RS-232C 是 PC 机与通信工业中应用最广泛的一种串行接口,在 IBM PC 机上的 COM1、COM2 接口,就 是 RS-232C 接口。
– 136 –
第 5 章 VB 与串口通信
利用 RS-232C 串行通信接口可实现两台个人计算机的点对点的通信; 通过 RS-232C 接口 可与其他外设 (如打印机、 逻辑分析仪、 智能调节仪、 PLC 等) 近距离串行连接; 通过 RS-232C 接口连接调制解调器可远距离地与其他计算机通信; RS-232C 接口转换为 RS-422 或 RS-485 将 接口,可实现一台个人计算机与多台现场设备之间的通信。 1.接口连接器 由于 RS-232C 并未定义连接器的物理特性,因此,出现了 DB-25 和 DB-9 各种类型的连 接器,其引脚的定义也各不相同。现在计算机上一般只提供 DB-9 连接器,都为公头。相应 的连接线上的串口连接器也有公头和母头之分,如图 5-6 所示。
作为多功能 I/O 卡或主板上提供的 COM1 和 COM2 两个串行接口的 DB-9 连接器,它只 提供异步通信的 9 个信号针脚,如图 5-7 所示,各针脚的信号功能描述如表 5-1 所示。
公头 母头
DCD RXD TXD DTR GND
1 2 3 8 4 5 9 6 DSR 7 RTS CTS RI
图 5-6 表 5-1 针 1 2 3 4 5 6 7 8 9 脚 符
公头与母头串口连接器 9 针串行口的针脚功能 号 通 信 方 向 计算机→调制解调器 计算机→调制解调器 计算机→调制解调器 计算机→调制解调器 计算机 = 调制解调器 计算机→调制解调器 计算机→调制解调器 计算机→调制解调器 计算机→调制解调器
图 5-7
DB9 串口连接器
DCD RXD TXD DTR GND DSR RTS CTS RI
载波信号检测 接收数据 发送数据

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。