基于c的rs232通信协议模拟终端所有专业(编辑修改稿)内容摘要:
per second),用来描述数据的传送速率,是衡量串行通信数据传输速度快慢的重要指标。 国际上对波特率规定了一个标准系列: 110bps、 300bps、 600bps、 1200bps、 1800bps、2400bps、 4800bps、 9600bps、 、 、 、 56Kbps。 例如:9600bps,是指每秒传送 数据 9600 位,其中包含字符的数位和其它必须的数位。 串行接口电路的接收波特率和发送的波特率可以设置,要求接收方的接收波特率必须与发送方的发送波特率是一致的。 在串行通信中,通信线上所传输的字符数据(代码)是逐位传送的,一个字符由若干位组成,所以每秒钟所传输的波特率和字符 数(字符速率)是完全不同的。 有时也用 “位周期 ”来表示传输速率,位 周期是波特率的倒数。 (2)数据位 数据位 是衡量通信中实际数据位的参数。 当计算机发送一个信息包,实际的数据不会是 8 位的,标准的值是 7 和 8 位。 怎样决定数据位的取值取决于传送的信息。 数据一般 为 58 位,它在起始位的后面 ,是衡量 传送字符的有效数据位 的个数。 传送时先传送字符的低位,后传送字符的高位。 数据位可以由硬件或软件设备进行设置,用来 满足设备间数据交换的需要。 (3)停止位 7 停止位一般为 和 2 位,用来表示单个包的最后一位。 停止位不仅仅是表示传输的结束,还为 计算机 提供校正时钟同步的机会,由于 数据是在传输线上定时的,并且每个设备都有其自己的时钟 ,很可能在通信中要进行数据交换的两台设备间出现小小的不同步, 停止位 的设置就是为了避免其中 小小的不同步 [6]。 停止位的位数的设置可以由设备的软件设置,停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率相应地也会越慢。 (4)奇偶校验位 在串行通信中奇偶校验是一种简单的检错方式,奇偶校验位仅占一位,用于进行奇校验和偶校 验,同时也可以无校验位。 对于奇校验和偶校验,串口会设置校验位,是数据位后面的一位,用一个值保证传输的数据有偶个或者奇个逻辑高位。 例如,如果数据是 001,那么对于奇校验,校验位是 0; 如果是偶校验,校验位是 1。 这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者传输和接收数据是否发生了不同步。 串行通信的分类 串行通信 又 可以分为同步串行通信和异步串行通信两类。 同步通信是一种在发送端发送一个抑制载波的双边带信号,而在接收端恢复载波,再进行检波的通信方式。 是按照软件识别同步字符来实 现数据的发送和接收。 它是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。 信息中含有若干个数据字符。 它们均由数据字符、 CRC 即同步字符和校验字符组成。 因为恢复的载波与被接收的信号载波同频同相,故取名为同步通信,也称抑制载波双边带通信。 异步通信数据通常以字符或者字节为单位组成字符帧传送,字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收 [7]。 异步通信 通常 有两个非常重要的指标:即 字符帧格式和 波特率。 发送端和接收端可以由各自的时钟 源 来控制数据的发送和接收,这两个时钟源彼此独立,互不同步, 接收端检测到 传输线上发送过来的低电平逻辑 0(即字符帧起始位)时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕 [3]。 异步通信有自己的 的缺点, 其缺点是 它在通信时的传输效率较低。 当然它也具有自己独特的优点, 其优 点就是它的通信设备简单、便宜。 8 串口的调制 串口连接 现在大多数计算机外用接口都是 USB 口, 外用接口很少有串口的, 并且现在的个人计算机的串口大多都是 简型的 9 针串口。 所以要想通过 串行通信实现与外围设备数据交换,必须用 USB 转 RS232 9 针串口转换线。 9 芯管脚图如图 23 所示。 图 23 9 芯管脚图 表 21 9 针管脚各引脚名称功能图 九针串口 针号 缩写 功能说明 信号来源 1 DCD 功能说明 调制解调器 2 RXD 接收数据 调制解调器 3 TXD 发送数据 PC 4 DTR 数据终端准备 PC 5 GND 信号地 6 DSR 数据设备准备好 调制解调器 7 RTS 请求发送 PC 8 CTS 请求发送 调制解调器 9 DELL 振铃指示 调制解调器 9 目前,市场上使用的串口有 9 针管脚的还有 25 针管脚的。 在 RS232 的通讯标准中是以一个 25 针的接口来定义的,并且在早期的计算机中,如 PC 机或XT 机型上得到了广泛地使用,但是在 AT 机以后的机型上,实际上均采用了 9针管脚的简化版本应用,现在所说的 RS232 通讯均默认为 9 针的接口。 图 23显示了 9 针通讯的接口管脚, 9 针管脚的串口各引脚名称、功能和信号来源各不相同。 表 21 说明九针管脚的串口各引脚的名称,功能说明和信号源等。 由表 21 可知要想实现两台个人计算机间的数据交换,可以将两个 USB 转RS232 线的接口头的 3 引脚交叉对接,两个 5 脚相接 即可,具体接法如 图24 所示,然后再讲两个 USB 接头与两台电脑相连。 图 24 USB 转 RS232 线的连接图 串口调试 实现个人计算机与外围设备间的串行通信必须将个人计算机上的串口调通,验证一下个人计算机上的串口是否好用。 这就需要用到串口调试小助手。 首先将一根 USB 转 RS232 转换线的 3 引脚短接,然后将带有 “驱动程序 ”的光盘放入个人计算机中,安装并运行与自己计算机相匹配的驱动程序,接着将转换线的 USB 端插入个人计算机的 USB 口,即完成了初步的安装。 打开设备管理器,看一 下所插入的转换线占的是哪个串口,因为在接下来调试串口要用到。 串口调试助手是一个专门用来调试串口程序的功能软件,要想测试串口是否可用,应先打开软件,选择串口号,打开串口,在发 送区输入内容,点击发送按钮,若在接收区中有所发送的内容,则证明此 串口可用。 10 本章小结 本章从原理上介绍了串行通信 的基本原理,详细的阐 述了 RS232 标准协议接口和与串行通信相关的一些知识。 介绍了通信参数与串行通信的分类。 为下文编写 Windows 应用程序实现两台 PC 机进行数据交换提供了基础。 11 第 3章 CRC校验 CRC校验 原理 CRC校验码的基本原理 早期的通信由于受到外界各种因素的干扰 , 会造成传输、接收信号的不准确。 这主要是由通信技术不可靠性决定的。 这样不可靠的通信就会带来 “确认信息 ”的麻烦,造成一些事情的延误等。 为了避免这一弊端,在进行数据交换,通信的过程中,对通信的可靠性检查就需要校验,校验是从数据本身进行检查,它依靠某种数学上约定的形式进行检查,校验的结果是可靠或不可靠,如果可靠就对数据进行处理,如果不可靠,就丢弃重发或者进行修复。 如早期一样目前在通信系统的数据传输过程中,由于信道中各种复杂因素的影响, 使传输的信号受到干扰,造成传输过程中误码的出现 [8]。 接收方为了检查所接收的数据是否有误码,可采用多种检测方法。 差错控制编码是目前数据传输过程中普遍采用的一种提高数据通信可靠性的方法,而 CRC 是一种在实际通信中应用很广泛的差错控制编码,具有很强的检错能力。 CRC( Cyclic Redundancy Check)循环冗余校验码是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定, CRC循环冗余校验码的基本原理是任意一个由二进制位串组成的代码都可以和一个系数仅为 „0‟和 „1‟取 值的多项式一一对应 [9]。 例如:代码 101011 对应的多项式为135 XXX ,而多项式为 1256 XXX 对应的代码 1100101。 CRC 校验码是 在 K 位信息码后 再拼接 R 位的校验码,整个编码长度为 N 位,因此,这种编码也叫( N, K)码。 CRC 校验码的生成借助于多项式除法,其余数为校验字段。 其中发送方发出传输字段,传输字段由两部分组成的,分别为信息字段和校验字段 [10,11]。 接收方使用相同的生成码进行校验,若接收到的字段或生成码(二进制除法)如果能够 除尽,则说明在通信过程中,数据交换期间未受到其他因素的干扰,消息收发成功。 12 CRC校验码权的形式 CRC 校验码有很多 种权的 行式, 使用哪一种形式是根据通信双方共同制定的 “规则 ”而定的,其中各种常用 权 的形式 如下所示: 18 458 XXXC R C ( 31) 151216 XXXC C IT TC R C ( 32) 116 51516 XXXC R C ( 33) 112 231112 XXXXC R C ( 34) 101112162223263232 XXXXXXXXC R C 124578 XXXXXX ( 35) 以其中 CRCCCITT 形式为例。 图 31 说明了 CRC 校验中 CRC 值是如何计算出来的,体现的多项式正是 式 ( 35)。 从把数据移位开始计算,将数据位(从最低的数据位开始)逐位移入反向耦合移位寄存器。 当所有数据位都这样操作后,计算结束。 此时, 16 位移位寄存器中的内容就是 CRC 码。 图 31 中X5 代表 Bit5, X12 代表 Bit12, 1 是代表 Bit0, 16X 比较特别,是指移位寄存器移入的数据。 图 31 生成 CRCCCITT 的移位寄存器的作用原理 13 CRC校验的实 现 实现 CRC 校验有很多种算法和方式,最基本的算法应该是按位计算了 ,这个方法可以适用于所有长度的数据校验,是最为灵活 的,但由于是按位计算,其效率并不是最迅速、最优的,只适用于对速度不敏感的场合。 还有一种是按照字节计算 CRC 校验码,按字节校验是每次计算 8 位数据,多是基于查表的算法,首先要准备一个表,一共 256 项。 在使用的时候,把计算出来的校验值放在最后两个字节里,将其发送出去,接收端对所有的数据进行相同的校验,如校验值为 0 我们则认为其数据没有出错。 这个是按高位到低位的发送顺序时使用的校验方法。 本章介绍了通信中最常使用的校验方法,即 CRC 校验。 分析了 CRC 校验原理、算法形式和算法的实现。 并通过 CRC 校验实现通信中的检错。 14 第 4章 软件的实现及其测试 开发工具概述 Windows 编程与 MFC Windows 编程大致 有两种方法,一种是 Windows C 方向,即 SDK 方向,调用 Win 32 API 函数,主要是利用 C 语言来实现软件的功能与编程;另外一种方法是 C++对 SDK 函数进行包装,如 VC 的 MFC(微软基础类库), BOB 的 OWL等 [12,13]。 其中使用 MFC 直接编写提供大量预先 编好的类和支持代码或使用 MFC和向导( Wizards)编写,用 AppWizard 来生成 Windows 应用程序框架。 本次软件程序设计功能的实现主要利用 Windows 编程中 MFC(利用 C++语言)。 MFC 提供了构造 Windows 应用程序的框架,它不仅为应用程序建立标准的结构,还为其提供了标准的图形用户界面如菜单栏、工具栏、状态栏等,开发人员只需要在此基础上添加针对特定应用的代码即可。 使用此应用程序框架有很多优点,如其应用程序代码小,运行速度快,并且此应用程序提供的工具也降低了编码的难度等。 Windows应用 程序的框架主要有两种类型,一种是基于对话框的应用程序框架,另外一种是基于文档、视图结构的应用程序框架。 平大家所见到的大多数Windows应用程序均属于这两种框架。 MFC的全称是 Microsoft Foundation Classes。 是微软把 Windows API 进行封装的类库,该类库以层次结构组织起来,其中封装了大部分 Windows API函数和Windows控件 [14]。 1989年微软公司成立 Application Framework技术团队,名为AFX小组,用以开发 C++面向对象工具给 Windows应用程序开发人员使用。 启用MFC编码可以使 Windows程序员能够利用 C++面向对象的思想进行编程,用好的类作为标准,减少代码的编写量 [15]。 串行通信控件 MSComm 目前,以 Windows 下的 MFC 应用程序为主要 的 框架, 常用的 基于 VC++的串行通信编程一般可以用两种方法实现:一种是使用 Windo。基于c的rs232通信协议模拟终端所有专业(编辑修改稿)
相关推荐
CNTER=0000000000000000000000000。 CNTEER=NOT CNTEER。 ELSE CNTER=CNTER+1。 END IF。 END IF。 END PROCESS。 CLK500=CNTEER。 END ART。 CLKGEN模块的源程序为:LIBRARY IEEE。 USE。 USE。 ENTITY CLKGEN ISPORT( CLK :IN
同的工作模式,芯片的功耗有着显著的不同。 在系统中共有一种活动模式( AM)和五种低功耗模式( LPM0~LPM4)。 在实时时钟模式下,可达 ,在 RAM 保持模式下,最低可达。 ( 4) 片内资源丰富 MSP430 系列单片机的各系列都集成了较丰富的片内外设。 它们分别是 看门狗 ( WDT)、 模拟比较器 A、定时器 A0( Timer_A0)、定时器 A1( Timer_A1)、定时器
, but provide few benefits for taking advantage of the previous design experience and resources, which are precisely the key factors in improving the efficiency. The methodology of case based
简图。 塑性内力重分布计算时,其计算跨度: 中跨: mmll n 5800202000002 边跨: mmalln 5840212022020206000201 mm5 9 5 0,5 9 4 55 8 0 01 lmml n 取 ( 120a mm ) 因跨度相差小于 10%,可按等跨连续梁计算,计算简图如下: g+q= 5K N/ m次梁的计算简图A
04 0 45 6 52 0 01 4 . 30cc 可知截面尺寸满足要求 ② 计算所需箍筋 采用 Φ6双肢箍筋,计算截面尺寸 由0svyv0tcs ,得 56556 . 30t 0svyv 故根据 构造确定 箍筋间距 , 取 s=200mm 2)次梁 l2 次梁 l2 跨度 ,次梁截面高度 h=l/18~ l/12=3900/18~
00001 when state =CLEAR else //0x01清屏 00000010 when state =RETURNCURSOR else //0x02光标返回 00000110 when state = SETMODE else //0x06//显示光标移动设置,当读或写一个字符后地址指针加 1,且光标加 1 00001100 when state =SWITCHMODE