硬件课程设计串口通信_第1页
硬件课程设计串口通信_第2页
硬件课程设计串口通信_第3页
硬件课程设计串口通信_第4页
硬件课程设计串口通信_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安文理学院 计算机科学系 课程设计报告 设计名称:设计名称: 硬件课程设计硬件课程设计 设计题目:设计题目: 串口通信系统的设计与实现串口通信系统的设计与实现 学生学号:学生学号: 专业班级:专业班级: 2008 级软件工程级软件工程 2 班班 学生姓名:学生姓名: 王雅宁王雅宁 学生成绩:学生成绩: 指导教师(职称):指导教师(职称): 马国峻(讲师)马国峻(讲师) 课题工作时间:课题工作时间: 2011.5.30 至至 2011.6.10 说明: 1、报告中的任务书、进度表由指导教师在课程设计开始前填写并发给每 个学生;四、五两项(中英文摘要)由学生在完成综合设计后填写。 2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。 3、指导教师评语一栏由指导教师就学生在整个设计期间的平时表现、设 计完成情况、报告的质量及答辩情况,给出客观、全面的评价。 4、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一 律按不及格处理。答辩小组成员应由 2 人及以上教师组成。 5、报告正文字数一般应不少于 3000 字,也可由指导教师根据本门综合设 计的情况另行规定。 6、平时表现成绩低于 6 分的学生,取消答辩资格,其本项综合设计成绩 按不及格处理。 计算机科学系课程设计任务书计算机科学系课程设计任务书 学生姓 名 王雅宁 学 号 专业 班级 2008 级软件工程 2 班 设计题 目 串口通信系统的设计与实现 内容概要: 需要通过两台具有 RS232 接口计算机的进行通信, 要求: 1设计并制作连接两台具有 RS232 接口计算机的连接线; 2编写串口通信程序,使 的两台具有 RS232 接口计算机能够相互通信,开发 语言不限; 文献资料: 1微型计算机技术及应用. 戴梅萼.清华大学出版社。 2Visual C+串口通信技术详解. 李景峰等.机械工业出版社。 3. 设计要求: 1、 给出连接线的设计方法 ; 2、 制作连接线。 2、 编写串口通信程序; 3、 联机,调试运行 工作期限: 设计工作自 2011 年 5 月 30 日至 2011 年 6 月 10 日止。 指指导导教教师师: 马马国国峻峻 系系主主任任: 任任可可明明 日日 期期:2 20 01 11 1 年年 5 5 月月 3 30 0 日日 计算机科学系课程设计进度安排表计算机科学系课程设计进度安排表 专业:专业: 软件工程软件工程 姓名:姓名: 王雅宁王雅宁 学号:学号: 日期内 容备注 5 月 30 日 5 月 31 日 分析题目,查阅相关资料 6 月 1 日 6 月 2 日 拟定整体方案 6 月 3 日 6 月 4 日 设备选择及预算 6 月 5 日 6 月 6 日 网络设计与配置 6 月 7 日 6 月 8 日 整理报告 6 月 9 日 6 月 10 日 答辩 月 日 月 日 月 日 月 日 月 日 月 日 月 日 月日 月 日 月 日 月 日 月 日 月 日 月 日 月 日 月 日 月 日 月 日 指导教师签名:指导教师签名: 20112011 年年 5 5 月月 3030 日日 指导教师评语 指导教师: (签字) 日 期: 2011 年 月 日 答辩记录及评语表 学生姓名: 王雅宁 学号: 班级: 2008 级软件工程 2 班 答辩地点: 答辩内容记录: 评 语 答辩小组成员(签字): 2010 年 6 月 10 日 成绩评定表 学生姓名: 王雅宁 学号: 班级: 2008 级软件工程 2 班 类别 合计 分值 各项 分值 评分标准实际得分备注 平时 表现 1010 按时参加设计指导,无违反纪律 情况。 20 按设计任务书的要求完成了全部 任务,能完整演示其设计内容, 符合要求。 完成 情况 30 10 能对其设计内容进行详细、完整 的介绍,并能就指导教师提出的 问题进行正确的回答。 10 报告文字通顺,内容翔实,论述 充分、完整,立论正确,结构严 谨合理;报告字数符合相关要求, 工整规范,整齐划一。 5 课题背景介绍清楚,综述分析充 分。 5 设计方案合理、可行,论证严谨, 逻辑性强,具有说服力。 5 符号统一;图表完备、符合规范 要求。 5 能对整个设计过程进行全面的总 结,得出有价值的结论或结果。 报告 质量 35 5 参考文献数量在 2 篇以上,格式 符合要求,在正文中正确引用。 10 在规定时间内能就所设计的内容 进行阐述,言简意明,重点突出, 论点正确,条理清晰。 答辩 情况 25 15 在规定时间内能准确、完整、流 利地回答教师所提出的问题。 摘 要 随着通信技术和计算机网络技术的发展、Internet网的普及,计算机远程通信已 渗透到国民经济的各个领域,而远程通信绝大多数采用串行通信的方式,所以了解和 研究串行通信中的概念和技术有非常重要的意义。 本文主要介绍了如何利用 VC+60 MSComm 控件来实现 PC 之间的串口通信。 以 MFC 来设计界面编制程序,同时用 MSComm 控件通过串口发送和接收数据,实现 两台具有串口的计算机串口通信。结果表明完全可以实现具有串口的不同计算机之间 的的通信联系,证明了该软件的可靠性和稳定性。 关键词: 串口通信;VC+;MSComm Abstract As the communications and computer network technologys rapid development, and the popularity of Internet networks, computer communication has penetrated into the wide areas of national economy, meanwhile the vast majority of remote communication by way of serial communication, so the study of serial communication concepts and techniques are of great significance. This article describes how to use the MSComm of VC+60 to achieve serial communication between the PCs. The software is designed by MFC, at the same time it using MSComm control to send and receive data through the serial port in order to achieve the serial communication. The result shows that we can achieve the communication link of the two computers and also proves that reliability and stability of the software KeywordsKeywords:VC+6.0; Serial Communication; MSComm 西安文理学院计算机科学系 课程设计报告 目目 录录 第一章 课题背景.1 1.1 引言 .1 1.2 串行通信的基本概念 .2 1.3 串口的基本概念 .2 1.4 RS232 标准介绍 .3 第二章 设计简介及设计方案论述.5 5 2.1 串口通信原理 .5 2.2 MICROSOFT COMMUNICATIONS CONTROL控件简介 .6 2.3 串口通信基本步骤 .7 第三章 详细设计.9 9 3.1 建立工程与使用控件 .9 3.2 程序界面布局 .10 3.3 初始化串口 .10 3.4 添加串口事件消息处理函数 .11 3.5 发送数据函数 .13 3.6 RS232 串口通信接线方法(三线制) .13 3.7 串口通信中需要注意的几点 .14 3.8 RS232 串口的代替品 .15 第四章 设计结果及分析.1616 4.1 程序结果 .16 4.2 设计反思 .16 总 结.1717 致 谢.1818 参考文献.1919 西安文理学院计算机科学系 课程设计报告 1 第一章第一章 课题背景课题背景 1.1 引言引言 在通信领域内,有两种数据通信方式:并行通信和串行通信。随着计算机 网络化和微机分级分布式应用系统的发展,通信的功能越来越重要。通信是指 计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括计算机 与外部设备,如终端、打印机和磁盘等设备之间的传输。 在PC 机的主板上,有一种类型的接口可能为我们所忽视,那就是RS-232C 串行接口,在微软的Windows 系统中称其为COM。我们可以通过设备管理器来查 看COM 的硬件参数设置,如图1。 图 1 在 Windows 上查看 PC 串口设置 迄今为止,几乎每一台 PC 都包含 COM。本质而言,COM 是 PC 为和外 界通信所提供的一种串行数据传输的接口。COM 接口是指 Component Object Mode 接口,是微软定义的标准接口。 串口叫做串行接口,现在的 PC 机一般有两个串行口 COM 1 和 COM 2。串 行口不同于并行口之处在于它的数据和控制信息是一位接一位地传送出去的。 虽然这样速度会慢一些,但传送距离较并行口更长,因此若要进行较长距离的 通信时,应使用串行口。通常 COM 1 使用的是 9 针 D 形连接器,也称之为 RS- 232 接口,而 COM 2 有的使用的是老式的 DB25 针连接器,也称之为 RS-422 接口,这种接口目前已经很少使用。 作为一种物理通信的途径和设备,它和目前风靡的另一种串行接 口USB 所提供的功能是一致的。不过 RS-232C 显然已经开始被后起之秀 USB 赶超,因为 USB 的传输速率已经远远超过了 RS-232C。 尽管如此,RS-232C 仍然具有非常广泛的应用,在相对长的一段时间里, 难以被 USB 等接口取代。RS-232C 接口(又称 EIA RS-232C) ,1970 年由美 国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂 家共同制定,全名是数据终端设备(DTE)和数据通讯设备(DCE)之间串行 二进制数据交换接口技术标准。 西安文理学院计算机科学系 课程设计报告 2 硬件原理众所周知,CPU 与存储芯片和 I/O 芯片的通信是并行的(并行传 输的最大位数依赖于 CPU 的字长、数据总线的宽度) ,一种叫做 UART(通用 异步收发器,Universal Asynchronous Receiver/Transmitter)的芯片提供了并行 数据传输和 RS-232C 串行数据传输方式的转换。 1.2 串行通信的基本概念串行通信的基本概念 在微型计算机中,通信(数据交换)有两种方式:串行通信和并行通信。 串行通信是指计算机与 I/O 设备之间仅通过一条传输线交换数据,数据的各 位是按顺序依次一位接一位进行传送。并行通信是指计算机与 I/O 设备之间 通过多条传输线交换数据,数据的各位同时进行传送。应该理解所谓的并行和 串行,仅是指 I/O 接口与 I/O 设备之间数据交换(通信)是并行或串行。无论 怎样 CPU 与 I/O 接口之间数据交换总是并行。 二者比较:串行通信的速度慢,但使用的传输设备成本低,可利用现有的 通信手段和通信设备,适合于计算机的远程通信;并行通信的速度快,但使用 的传输设备成本高,适合于近距离的数据传送。 1异步串行通信 所谓异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全 异步的,位与位之间的传送基本上是同步的。异步串行通信的特点可以概括为: 以字符为单位传送信息。 相邻两字符间的间隔是任意长。 接收时钟和发送时钟只要相近就可以。 异步方式特点简单的说就是:字符间异步,字符内部各位同步。 2同步串行通信 所谓同步通信,是指数据传送是以数据块(一组字符)为单位,字符与字 符之间、字符内部的位与位之间都同步。同步串行通信的特点可以概括为: 以数据块为单位传送信息。 在一个数据块(信息帧)内,字符与字符间无间隔。 接收时钟与发送进钟严格同步。 3.波特率、波特率因子、位周期 波特率是指单位时间传输二进制数据的位数,其单位为位/秒(B/S) 或波特。它是一个用以衡量数据传送速率的量。一般串行异步通行的传送速度 为 5019200 波特,串行同步通信的传送速度可达 500 千波特。 波特率因子是指时钟脉冲频率与波特率的比。 位周期 Td是指每个数据位传送所需要的时间,它与波特率的关系是: Td=1/波特率。它用以反映连续二次采样数据之间的间隔时间 1.3 串口的基本概念串口的基本概念 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线 Universal Serial Bus 或者 USB 混淆) 。大多数计算机包含两个基于 RS232 的串 口。串口同时也是仪器仪表设备通用的通信协议;很多 GPIB 兼容的设备也带 西安文理学院计算机科学系 课程设计报告 3 有 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 码是 0127(7 位) 。扩展的 ASCII 码是 0255(8 位) 。如果数据使用简单的文本(标准 ASCII 码) ,那么每个数据包 使用 7 位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。 由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 c,停止位:用于表示单个包的最后一位。典型的值为 1,1.5 和 2 位。由 于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信 中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并 且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步 的容忍程度越大,但是数据传输率同时也越慢。 d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、 奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设 置校验位(数据位后面的一位) ,用一个值确保传输的数据有偶个或者奇个逻辑 高位。例如,如果数据是 011,那么对于偶校验,校验位为 0,保证逻辑高的位 数是偶数个。如果是奇校验,校验位位 1,这样就有 3 个逻辑高位。高位和低 位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能 够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收 数据是否不同步 1.4 RS232 标准介绍标准介绍 RS-232-C 接口(又称 EIA RS-232-C)是目前最常用的一种串行通讯接口。 它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家 及计算机终端生产厂家共同制定的用于串行通讯的标 准。它的全名是“数据终 端设备(DTE)和数据通讯设备(DCE)之间 串行二进制数据交换接口技术标 准”该标准规定采用一个 25 个脚的 DB25 连接器,对连接器的每个引脚的信号 西安文理学院计算机科学系 课程设计报告 4 内容加以规定,还对各种信 号的电平加以规定。 西安文理学院计算机科学系 课程设计报告 5 (1)接口的信号内容 实际上 RS-232-C 的 25 条引线中有许多是很少使用的,在计算机与终端通 讯中一般只使用 3-9 条引线。RS-232-C 最常用的 9 条引线的信号内容见附表 1 所示 (2)接口的电气特性 在 RS-232-C 中任何一条信号线的电压均为负逻辑关系。即:逻 辑“1”,- 5 -15V;逻辑“0” +5 +15V 。噪声容限为 2V。即 要求接收器能识别低至 +3V 的信号作为逻辑“0”,高到-3V 的信号 作为逻辑“1” (3)接口的物理结构 RS-232-C 接口连接器一般使用型号为 DB-25 的 25 芯插头座,通常插头在 DCE 端,插座在 DTE 端. 一些设备与 PC 机连接的 RS-232-C 接口,因为不使用对 方的传送控制信号,只需三条接口线,即“发送数据”、 “接收数据”和“信号地”。所 以采用 DB-9 的 9 芯插头座,传输线采用屏蔽双绞线。 (4)传输电缆长度 由 RS-232C 标准规定在码元畸变小于 4%的情况下,传输电缆长度应为 50 英尺,其实这个 4%的码元畸变是很保守的,在实际应用中,约有 99%的用户 是按码元畸变 10-20%的范围工作的,所以实际使用中最大距离会远超过 50 英 尺,美国 DEC 公司曾规定允许码元畸变为 10%而得出附表 2 的实验结果。其 中 1 号电缆为屏蔽电缆,型号为 DECP.NO. 内有三对双绞线,每对由 22# AWG 组成,其外覆以屏蔽网。2 号电缆为不带屏蔽的电缆。型号为 DECP.NO.-04 是 22#AWG 的四芯电缆。 1.RS-232-C 是美国电子工业协会 EIA(Electronic Industry Association)制 定的一种串行物理接口标准。RS 是英文“推荐标准”的缩写,232 为标识号,C 表示修改次数。RS-232-C 总线标准设有 25 条信号线,包括一个主通道和一个 辅助通道,在多数情况下主要使用主通道,对于一般双工通信,仅需几条信号 线就可实现,如一条发送线、一条接收线及一条地线。RS-232-C 标准规定的数 据传输速率为每秒 50、75、100、150、300、600、1200、2400、4800、9600、19200 波特。RS- 232-C 标准规定,驱动器允许有 2500pF 的电容负载,通信距离将受此电容限制, 例如,采用 150pF/m 的通信电缆时,最大通信距离为 15m;若每米电缆的电容 量减小,通信距离可以增加。传输距离短的另一原因是 RS-232 属单端信号传送, 存在共地噪声和不能抑制共模干扰等问题,因此一般用于 20m 以内的通信。 西安文理学院计算机科学系 课程设计报告 6 第二章第二章 设计简介及设计方案论述设计简介及设计方案论述 2.1 串口通信原理串口通信原理 串口通信原理:所谓串行通信是指外设和计算机间使用一根数据信号线, 数据在一根数据信号线上按位进行传输,每一位数据都占据一个固定的时间长 度。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,当然, 其传输速度比并行传输慢。相比之下,由于高速率的要求,处于计算机内部的 CPU 与串口之间的通讯仍然采用并行的通讯方式,所以串行口的本质就是实现 CPU 与外围数据设备的数据格式转换(或者称为串并转换器) ,即当数据从外 围设备输入计算机时,数据格式由位 (bit)转化为字节数据;反之,当计算机发 送下行数据到外围设备时,串口又将字节数据转化为位数据。 串行端口的本质功能是作为 CPU 和串行设备间的编码转换器。当数据从 CPU 经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串 行的位被转换为字节数据。 在 Windows 环境下,串口是系统资源的一部分。 应用程序要使用串口进 行通信,必须在使用之前向操作系统提出资源申请要求(打开串口) ,通信完成 后必须释放资源(关闭串口) 。 串口信号线的一个完整的 RS-232C 接口有 22 根线,采用标准的 25 芯插头 座(或者 9 芯插头座) 。25 芯和 9 芯的主要信号线相同。以下的介绍是以 25 芯 的 RS-232C 为例。 主要信号线定义: 2 脚:发送数据 TXD; 3 脚:接收数据 RXD; 4 脚:请求发送 RTS; 5 脚:清除发送 CTS; 6 脚:数据设备就绪 DSR;20 脚:数据终端就绪 DTR; 8 脚:数据载波 检测 DCD; 1 脚:保护地; 7 脚:信号地。 DB9 和 DB25 的常用信号脚说明如下: 表 2-1 9 针串口(DB9)25 针串口(DB25) 针号功能说明缩写针号功能说明缩写 1数据载波检测DCD8数据载波检测DCD 2接收数据RXD3接收数据RXD 3发送数据TXD2发送数据TXD 4数据终端准备DTR20数据终端准备DTR 5信号地GND7信号地GND 6数据设备准备好DSR6数据准备好DSR 7请求发送RTS4请求发送RTS 8清除发送CTS5清除发送CTS 9振铃指示DELL22振铃指示DELL 电气特性: 西安文理学院计算机科学系 课程设计报告 7 数据传输速率最大可到 20K bps,最大距离仅 15m. 注:看了微软的 MSDN 6.0,其 Windows API 中关于串行通讯设备(不一定都 是串口 RS-232C 或 RS-422 或 RS-449)速率的设置,最大可支持到 RS_,即 256K bps! 也不知道到底是什么串行通讯设备?但不管怎样,一般主机和单片 机的串口通讯大多都在 9600 bps,可以满足通讯需求。 接口的典型应用: 大多数计算机应用系统与智能单元之间只需使用 3 到 5 根信号线即可工作。 这时,除了 TXD、RXD 以外,还需使用 RTS、CTS、DCD、DTR、DSR 等信 号线。 (当然,在程序中也需要对相应的信号线进行设置。 ) 以上接法,在设计 程序时,直接进行数据的接收和发送就可以了,不需要对信号线的状态进行判 断或设置。 (如果应用的场合需要使用握手信号等,需要对相应的信号线的状态 进行监测或设置。 “并行通信”是把一个字符的各数位用几条线同时进行传输,传输速度快, 信息率高。但它比串行通信所用的电缆多,故常用在传输距离较短(几米至几 十米) 、数据传输率较高的场合。 实现并行通信的接口就是并行接口。 并行接 口可设计为只作为输入/输出接口,也可设计为既作为输入又作为输出的接口。 它可以用两种方法实现,一种是利用同一个接口中的两个通路,一个作输入通 路,一个作输出通路;另一种使用同一个双向通路,既作为输入又作为输出。 连接设备接口有 PS/2,PATA,LPT 等 串行通信是指数据一位一位地依次传输, 每一位数据占据一个固定的时间长度。其只要少数几条线就可以在系统间交换 信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信, 连接设 备接口有 SATA,USB 等。 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线 Universal Serial Bus 或者 USB 混淆) 。大多数计算机包含两个基于 RS232 的串 口。串口同时也是仪器仪表设备通用的通信协议;很多 GPIB 兼容的设备也带 有 RS- 232 口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字 节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 根线接收数据。它很简单并且能够实现远距离通信。比如 IEEE488 定义并行通 行状态时,规定设备线总常不得超过 20 米,并且任意两个设备间的长度不得超 过 2 米;而对于串口而言,长度可达 1200 米。 2.2 Microsoft Communications Control 控件简介控件简介 Visual C+为我们提供了一种好用的 ActiveX 控件 Microsoft Communications Control(MSComm)来支持应用程序对串口的访问,在应用程序 中插入 MSComm 控件后就可以较为方便地实现对通过计算机串口收发数据。 要使用 ActiveX 控件 MSComm,程序员必须将其添加入工程,其方法是: (1)单击主菜单 project 的子菜单 Add To project 的 Components and Controls 选 项;(2)在弹出的Components and Controls Gallery对话框中选择 Registered ActiveX Controls 文件夹中的Microsoft Communications Control,version 6.0选项, 如下图: 西安文理学院计算机科学系 课程设计报告 8 图 2-1 基本上,MSComm 的诸多接口可以分为如下几类: (1)打开与设置串口 接口函数; (2)获得串口设置和串口状态接口函数; (3)设置串口发送数 据方式、缓冲区接口及发送数据接口函数; (4)设置串口接收数据方式、缓 冲区接口及接收数据接口函数;(5)设置与获取串口上发生的事件接口函数。 以下介绍设置中遇到的几个相关函数。 SetCommPort:指定使用的串口。 GetCommPort:得到当前使用的串口。 SetSettings:指定串口的参数。一般设为默认参数9600,N,8,1。这样 方便与其他串口进行通讯。 GetSettings:取得串口参数。 SetPortOpen:打开或关闭串口,当一个程序打开串口时,另外的程序将无 法使用该串口。 GetPortOpen:取得串口状态。 GetInBufferCount:输入缓冲区中接受到的字符数。 SetInPutLen:一次读取输入缓冲区的字符数。设置为 0 时,程序将读取缓 冲区的全部字符。 GetInPut:读取输入缓冲区。 GetOutBufferCount:输出缓冲区中待发送的字符数。 SetOutPut:写入输出缓冲区。 一般而言,使用上述函数和属性就可以进行串口通讯了。 2.3 串口通信基本步骤串口通信基本步骤 实现串口通信的基本步骤如下流程图所示: 西安文理学院计算机科学系 课程设计报告 9 图 2-2 弄清了程序的流程,下面的步骤就是编写程序。 西安文理学院计算机科学系 课程设计报告 10 第三章第三章 详细设计详细设计 3.1 建立工程与使用控件建立工程与使用控件 打开 VC+6.0 建立基于对话框的 MFC 应用程序 mytest,如图 3-1 图 3-1 在项目中插入 MSComm 控件 工程-增加到工程-Components and Controls-双击 Registered ActiveX Controls-选 择 Microsoft Communications Control, version 6.0-Insert,按默认值添加,多了 个电话图标,这是增加后串口通信控件。如图 3-2 图 3-2 西安文理学院计算机科学系 课程设计报告 11 3.2 程序界面布局程序界面布局 删除确认、取消和提示框,添加“电话”、静态文本、按钮、编辑框,拖动 添加的控件,根据喜好布局。如下图 3-3 所示 图 3-3 3.3 初始化串口初始化串口 查看-建立类向导 MFC ClassWizard-Member Viariable,选择 ClassName 为 CmytestDlg 的类,Control ID 为 MSCOMM1,双击它,为它添加控制变量 m_ctrlComm 类似的,选择其它项修改,改后如图 3.4。 图 3-4 西安文理学院计算机科学系 课程设计报告 12 对 CMytestDlg:OnInitDialog()函数中写入对串口的初始化语句,串口初始 化语句由 IDC_MSCOMM1 的 CMSComm 控制变量 m_ctrlComm 来设置串口控 件属性。代码如下: BOOL CMytestDlg:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here m_ctrlComm.SetCommPort(4); /选择 COM4 m_ctrlComm.SetInputMode(1); /输入方式为二进制方式 m_ctrlComm.SetInBufferSize(1024); /设置输入缓冲区大小 m_ctrlComm.SetOutBufferSize(512); /设置输出缓冲区大小 /波特率 9600,无校验,8 个数据位,1 个停止位 m_ctrlComm.SetSettings(9600,n,8,1); if(!m_ctrlComm.GetPortOpen() m_ctrlComm.SetPortOpen(TRUE);/打开串口 m_ctrlComm.SetRThreshold(1); /参数 1 表示每当串口接收缓冲区中有多 于 /或等于 1 个字符时将引发一个接收数据的 OnComm 事件 m_ctrlComm.SetInputLen(0); /设置当前接收区数据长度为 0 m_ctrlComm.GetInput(); /先预读缓冲区以清除残留数据 return TRUE; / return TRUE unless you set the focus to a control 3.4 添加串口事件消息处理函数添加串口事件消息处理函数 查看-建立类向导 MFC ClassWizard-Message Maps,在 Class Name 中选择 类 CmytestDlg,再在 Object IDs 中选择 IDC_MSCOMM1,然后在 Message 中双 击消息 OnCom,在弹出的对话框中将函数名改为 OnComm(好记),单击“OK”, 就加入了串口事件的消息处理函数,如图 3-5 西安文理学院计算机科学系 课程设计报告 13 图 3-5 然后编写 OnComm()中的代码,主要任务是从串口接收数据并显示在接收 编辑框中。 void CMytestDlg:OnComm() / TODO: Add your control notification handler code here VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata2048; /设置 BYTE 数组 CString strtemp; if(m_ctrlComm.GetCommEvent()=2) /事件值为 2 表示接收缓冲区内有 字符 variant_inp=m_ctrlComm.GetInput(); /读缓冲区 safearray_inp=variant_inp; /VARIANT 型变量转换为 ColeSafeArray 型变量 len=safearray_inp.GetOneDimSize(); /得到有效数据长度 for(k=0;klen;k+) safearray_inp.GetElement(/转换为 BYTE 型数组 for(k=0;kMessage Maps,选择类 CMytestDlg,选中 IDC_BUTTON_MANUALSEND,双击 BN_CLICKED 添加 OnButtonManualsend()函数,如图 3-6 图 3-6 然后在函数中添加代码如下: void CMytestDlg:OnButtonManualsend() / TODO: Add your control notification handler code here UpdateData(TRUE); /读取编辑框内容 m_ctrlComm.SetOutput(COleVariant(m_strEditTXData);/发送数据 程序编好了,下面的问题就是选择数据传输的介质问题,可以使用串口线, 也可用虚拟串口。 3.63.6 RS232RS232 串口通信接线方法(三线制)串口通信接线方法(三线制) 实际应用中,电子工程师在设计计算机与外围设备的通信时,通常在 9 针 的基础再进行简化,只用其中的 2、3、5 三个管脚进行通信。这三个管脚分别 是接收线、发送线和地线,在一般情况下即可满足通讯的要求,计算机和外部 通讯的接线方法如图 3-7: 西安文理学院计算机科学系 课程设计报告 15 图 3-7 值得注意的是,图 3-7 中 2、3 两脚是交叉互联的,这很容易理解,因为一个设 备的发送线必须联接到另外一台设备的接收线上,反之亦然。 另外说明一下,232 信号的有效通讯距离是 15M。 首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:同一个串 口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连 同一个串口的接收脚和发送脚直接用线相连 对 9 针串口和 25 针串口, 均是 2 与 3 直接相连; 两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的 串口) 表 3-1 9 针9 针25 针25 针9 针25 针 233222 322333 557757 上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收 GPS 数据或电子罗盘数据,只要记住一个原则:接收数据针脚(或线)与发送数据 针脚(或线)相连,彼些交叉,信号地对应相接。 3.73.7 串口通信中需要注意的几点串口通信中需要注意的几点 1.不同编码机制不能混接,如 RS232C 不能直接与 RS422 接口相连,市面 上专门的各种转换器卖,必须通过转换器才能连接; 2.线路焊接要牢固,不然程序没问题,却因为接线问题误事; 3.串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等, 有事半功倍之效果; 4.强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易 损坏。 3.83.8 RS232RS232 串口的代替品串口的代替品 现在的大多数笔记本电脑中多数都不配备串口,但是串口通信如 RS232 在 西安文理学院计算机科学系 课程设计报告 16 单片机等一系列科技产品中依然存在广泛的应用,所以寻找 RS232 串口的代替 解决方案就成为当务之急,而主要存在以下两种解决方案。 1.虚拟串口软件 VSPM 的使用 由于现在大多数笔记本电脑没有串口,所以可以使用虚拟串口软件代替物 理串口。VSPM 软件的主要功能用途其实是通过网络 IP 映射成相应的端口号。 打开虚拟串口软件 VSPM,由于软件已设置好,一打开就建立 C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论