没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
引言
·串口通信是 Windows 应用软件开发的重要环节,除了普通的通信软件外,还在工业控制领域有广泛的用
途,因此掌握串口编程是每个程序员的必备技巧。
·无庸讳言,目前网上有不少介绍串口通信的文章和代码,但对广大读者而言,缺少入门的、系统的介绍串
口编程的教程,因此小编组织了这个教程,它将填补这方面的空白。
深入浅出 Visual C++串口编程
RS-232C 接口,1970 年由美国电子工业协会联合贝尔系统、调制解调器厂家及计算机终端生产厂家
共同制定,全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准
"。本期教程将对 DOS 平台的串口编程,及 Windows 平台下基于 API、控件和第三方类的串口编程进行介
绍。
深入浅出 VC++串口编程之基本概念
在PC 机的主板上,有一种类型的接口可能为我们所忽视,那就是 RS-232C 串行接口,在微软的
Windows 系统中称其为 COM。我们可以通过设备管理器来查看 COM 的硬件参数设置,如图 1。
图 1 在 Windows 上查看 PC 串口设置
迄今为止,几乎每一台 PC 都包含 COM。本质而言,COM 是 PC 为和外界通信所提供的一种串行数
据传输的接口。作为一种物理通信的途径和设备,它和目前风靡的另一种串行接口――USB 所提供的功能
是一致的。不过 RS-232C 显然已经开始被后起之秀 USB 赶超,因为 USB 的传输速率已经远远超过了
RS-232C。
尽管如此,RS-232C 仍然具有非常广泛的应用,在相对长的一段时间里,难以被 USB 等接口取代。
RS-232C 接口(又称 EIA RS-232C),1970 年由美国电子工业协会(EIA)联合贝尔系统、调制解调器
厂家及计算机终端生产厂家共同制定,全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二
进制数据交换接口技术标准"。
本文将对这一接口进行硬件原理的介绍,随后我们将逐章学习 DOS 平台的串口编程,及 Windows 平
台下基于 API、控件和第三方类的串口编程,最后本文将给出一个综合实例。
硬件原理
众所周知,CPU 与存储芯片和 I/O 芯片的通信是并行的(并行传输的最大位数依赖于 CPU 的字长、
数据总线的宽度),一种叫做 UART(通用异步收发器,Universal Asynchronous Receiver/Transmitter)
的芯片提供了并行数据传输和 RS-232C 串行数据传输方式的转换。这样的设备通常有如图 2 所示的管脚
分布,当其向外传输数据时,CPU 并行的将数据写入这类芯片的寄存器,UART 再将寄存器中的数据一位
一位地移动并向外传输;当外界向其传输数据时,UART 一位一位地接收数据,并将其移位组合为并行数
据,CPU 再并行地读取这些数据。实际上,由于 UART 芯片一般以 TTL/CMOS 电平工作,在 UART 连接
接口之前,还要经过一个 TTL/CMOS 和 RS-232C 电平的转换。RS-232C 规定了其标准的电气特性,逻辑
1 对应的电压必须在-5~-15V 之间;逻辑 0 对应的的电压必须在+5~+15V 之间。
图 2 UART 并/串转换
一个常见的 TTL/CMOS 和 RS-232C 电平转换芯片如图 3。
RS-232C 通常以两类接插件与外界相连,分别称为 DB9 和 DB25,如图 4 所示。
图 4 DB9 和 DB25
而接插件中各个针的定义则如表 1:
表1 DB9 和 DB25 引脚定义
DB9 DB25
针号 功能说明 缩写 针号 功能说明 缩写
1
数据载波检测
DCD 8
数据载波检测
DCD
2
接收数据
RXD 3
接收数据
RXD
3
发送数据
TXD 2
发送数据
TXD
4
数据终端准备
DTR 20
数据终端准备
DTR
5
信号地
GND 7
信号地
GND
6
数据设备准备好
DSR 6
数据准备好
DSR
7
请求发送
RTS 4
请求发送
RTS
8
清除发送
CTS 5
清除发送
CTS
9
振铃指示
DELL 22
振铃指示
DELL
RS-232C 定义为数据通信设备(DCE)和数据终端设备(DTE)之间的互连,实现上,到现在为止,
究竟一个设备属于 DCE 还是属于 DTE 已经没有明显的界限,PC 即可作为 DCE,又可作为 DTE。两串口
互连,连接方法主要有二:
一种方法是,数据的发送和接收由软件控制,不进行硬件握手,其连接方法如图 5(最常用 DB9 连接
示意)和表 2(DB9、DB25 三线连接表),真正需要互相连接的是 RXD、TXD 和 GND;
图 5 无硬件握手时两串口连接
表2 DB9、DB25 三线连接
9 针-9 针 5针-25 针 2 9 针-25 针
2 3 3 2 2 2
3 2 2 3 3 3
5 5 7 7 5 7
软件握手又称为 XON/XOFF,通常以 CTRL-S(0x13)和 CTRL-Q(0x11)两个字符来实现流控制。
前者用于请求对方暂停发送,后者用于清除暂停传送的请求,继续发送数据。
另一种方法是,数据的发送和接收由硬件控制,进行硬件握手,其连接方法如图 6(最常用 DB9 连接
示意),需要连接的信号除 RXD、TXD 和 GND 外,还包括 DTR、DSR、RTS 和 CTS。
硬件握手依赖于 RTS 和 CTS 信号,当发送设备欲发送数据时,将 RTS 信号置为有效表示请求发送,
接收设备准备好后,置 CTS 信号有效,接着发送设备通过信号线 TXD 开始发送串行数据。
这里我们联想开来,RTS/CTS 模式在许多领域里都出现过。回忆一下 IEEE 802.11 无线局域网协议标
准,在其 MAC 协议中就使用了 RTS/CTS,RTS/CTS 抽象开来就是一种请求/应答。笔者曾经在拙作中多
次以实例论证计算机领域里许多知识的相通性,这又是一个明证。
图 6 有硬件握手时两串口连接
实际上,目前我们经常使用的是方法一,即只连接 RXD、TXD 和 GND,简单灵活。另外,串口之间
互连还有诸多途径,如图 7 所示。
图 7 其它互连方式
调试工具
在MS-DOS 下使用的编程环境是 TC 2.0;
在Windows 2000 下的编程环境是 VC++ 6.0;
借助工具:串口调试助手 2.1(图 8)。
图 8 串口调试助手
串口调试助手是由《Visual C++/Turbo C 串口通信编程实践》一书作者龚建伟编写的共享软件,可以方
便地进行串口上的数据收发、显示(16 进制和 ASCII 码方式)和串口参数的设置,在串口调试领域应用广
泛。
"串口调试助手"的开发原理很简单(相信读者看完本文后在相当短的时间之内就能开发出这样的软
件),但是作者龚建伟敏锐地抓住了串口调试在业界的需求,使得自身随这一软件而成名。这一事件或多
或少会给程序员们一定的启发。优秀的共享软件不一定要技术含量高,只要有需求,哪怕是开发原理再简
单,都能拥有广泛的使用者。
为了在一台 PC 上同时搭建 DOS 和 Windows 平台,我们应该在 Windows 平台上安装虚拟 PC 的软件
剩余189页未读,继续阅读
资源评论
- SenySunny2013-08-14有一定参考价值!!!
wfq307550196
- 粉丝: 1
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功