串口网络编程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单工模式的数据传输是单向的。通信双方中,一方固定 为发送端,另一方则固定为接收端。信息只能沿一个方向传 输,使用一根传输线。单工模式一般用在只向一个方向传输 数据的场合。例如计算机与打印机之间的通信是单工模式, 因为只有计算机向打印机传输数据,而没有相反方向的数据 传输。在某些通信信道中,存在单工无线发送等单工模式。 4
在这里选择COM。
(3) 在弹出的窗口中设置相关的参数,如图3-1所示。
23
图3-1 超级终端参数设置
24
(4) 单击“确定”按钮后,就会出现一个工作窗口,这说 明已经连接到需要连接的设备上。 设置完成后,会出现连接提示,包括连接时间、终端类 型、连接参数等。如果串口不存在,或已被其他设备使用,
在使用个人计算机或终端设备通过调制解调器和主计算
机进行通信时(例如:对路由器进行基于串口的远程配置的情 况),一般会采用软硬结合的握手。这种握手同时采用了硬件
握手和软件握手:一方面,个人计算机与调制解调器、主计
算机与调制解调器之间,使用硬件握手方法进行联系;另一 方面,主计算机和个人计算机之间将使用软件握手方法进行
10
只有当DSR和DTR都处于有效(ON)状态时,才能在DTE 和DCE之间进行传输操作。若DTE要发送数据,则预先将 DTR线置成有效(ON)状态,等CTS线上收到有效(ON)状态的 回答后,才能在TXD线上发送串行数据。这种顺序的规定对
半双工的通信线路特别有用,因为半双工的通信确定DCE已
由接收端向改为发送端向,这时线路才能开始发送。从计算 机的角度来看这些引脚的通信状况,流进计算机端的,可以
知计算机暂停发送数据。通常,串行通信握手的协议可以是
硬件握手、软件握手或二者的结合,具体如下所述。
16
1.硬件握手
在硬件握手中,发送端通过将某一条导线拉到高电平或
者低电平,以表示发送端可以发送数据。接收端已经准备好 接收数据之后,也把某一个导线拉到高电平或者是低电平,
以通知发送端,发送端一直在检测这个信号。接收端可以在
冲突保护特性,扩展了总线共模范围。RS-485协议可以看做
是RS-232协议的替代标准,与传统的RS-232协议相比,其在 通信速率、传输距离、多机连接等方面均有了非常大的提高。
由于RS-485总线是RS-232总线的改良标准,因此在软件设计
上它与RS-232总线基本上一致。
13
当两台RS-232串口设备通信距离较近时(小于15 m),可 以用电缆线直接将两台设备的RS-232端口连接;若通信距离 较远时(大于15 m),则需要附加Modem。当PC与串口设备的 通信距离较远或PC与多台具有RS-232接口的设备通信时,也
路层,通信协议简单、编程接口函数数量较少,适合作为进
行网络编程技术的入门学习内容。 本章由串口通信的基本原理、接口入手,介绍串口通信
的API函数;并以主机与单片机、主机间的通信为实例,介
绍串口网络编程的方法。
2
3.1 串行通信概述
串行总线是一种目前经Leabharlann Baidu使用的通信方式,单片机、
PLC、测试仪器、PC、打印机、交换机、路由器、防火墙、 工业控制设备都带有串口总线。串行接口包括RS-
机)和数据通信设备(DCE,如Modem)的接口标准。RS-232C 是PC与通信工业中应用最广泛的一种串行接口,PC上的
COM1和COM2大多是RS-232C接口。
利用RS-232C串行通信接口可实现两台个人计算机之间 点对点的通信;通过RS-232C接口可与其他外设(如打印机、
逻辑分析仪、智能调节仪、PLC等)近距离串行连接
看做数字输入;而流出计算机端的,则可以看做数字输出。
从工业应用的角度来看,所谓的输入就是用来“监测”的, 而输出就是用来“控制”的。
11
2.RS-422
RS-422由RS-232发展而来,是为了弥补RS-232的不足而
提出的。为了改进RS-232抗干扰能力差、通信距离短、传输 速度低等缺点,RS-422定义了一种平衡通信接口,将传输速
制解调器作为传输用的,因此它的引脚位意义通常也和调制 解调器传输有关。从功能来看,全部信号线分为三类,即数
据线(TXD、RXD)、地线(GND)和联络控制线(DSR、DTR、
RI、DCD、RTS、CTS)。
9
表3-1 RS-232各引脚的信号功能
引 脚 1 2 3 4 5 6 7 8 9 符 号 DCD RXD TXD DTR GND DSR TRS CTS RI 通 信 方 向 PC 至 Modem Modem 至 PC PC 至 Modem PC 至 Modem PC 至 Modem Modem 至 PC PC 至 Modem Modem 至 PC Modem 至 PC 功 能 载波信号检测 接收数据 发送数据 数据终端准备好 信号地线 数据装置准备好 请求发送 清除发送 振铃信号指示
20
3.2 串口通信程序设计
现在的产品若要自动化,一定要提供一个能与计算机进
行通信的通道。最简单的方式就是在产品内部烧上一颗单芯 片,利用单芯片上的串行通信功能进行自动化的工作,由于
计算机中的串口是必备的通道,且从价格及技术上来说是最
能被厂商所接受的,因此,市面上很多自动化产品也就加上 了串行通信的功能,从而扩大了产品的使用领域,使产品自
2.半双工模式
半双工通信中使用同一根传输线,既可发送数据又可接
收数据,但不能同时进行发送和接收。在任何时刻,只能由 其中的一方发送数据,另一方接收数据。因此半双工模式既
可以使用一条数据线,也可以使用两条数据线。在半双工通
信中,每一端需装有一个收发切换电子开关,通过切换来决 定数据向哪个方向传输。因为有切换,所以会产生时间延迟,
动化的实现技术变得简单化。
21
3.2.1 串行通信软件工具
除了用户自己动手编写串口通信软件之外,目前也有一
些现成的串口通信软件工具。
1.超级终端程序
超级终端程序是Windows操作系统自带的串口通信软件,
用户可以选择“开始/程序/附件/通信/超级终端”命令来调用 它。使用超级终端程序需要对其进行设置,设置步骤如下: (1) 首先按照“开始/程序/附件/通信”顺序,执行“超级 终端”操作(对应系统目录“C:\Program Files\Windows NT”下 的hypertrm.exe应用程序),
在数据传输中,如果发送端的发送速度大于接收端的接收速
度,同时接收端处理数据的速度不够快,那么接收端的缓冲 区必定在一定时间后溢出,从而造成以后发送过来的数据不 能进入缓冲区而丢失。 15
发送端何时可以继续发送数据,何时必须暂停发送,从而让 接收端有时间处理数据,则必须靠握手信号来解决这个问题。 例如,打印机和计算机进行通信时,一些打印机的打印速度 可能跟不上计算机发送数据的速度,就必须通过握手信号通
8
通过RS-232C接口连接调制解调器(Modem)可远距离地与其他 计算机通信;将RS-232C接口转换为RS-422或RS-485接口, 可实现一台个人计算机与多台现场设备之间的通信。 RS-232的每一引脚都有它的作用,也有其信号流动的方向,
各引脚的信号功能描述见表3-1。原来的RS-232是用来连接调
任何时候把这个信号变为无效,甚至是在接收一个数据块的 过程中。当发送端检测到这个信号变为无效之后,就必须停
止本次发送,直到这个信号变为有效为止。
17
2.软件握手
在软件握手中,以数据线上特定的数据信号来代替实际
的硬件电路电平变化。这种方法用在直接连接或者通过调制 解调器连接的两台计算机之间进行双向通信的场合。
第3章 串口网络编程
3.1 串行通信概述 3.2 串口通信程序设计
3.3 串口通信程序设计
小结
1
串口通信是一种通信条件要求最低却十分重要的网络通 信模式,网络设备调试、极端条件下的网络通信都可以通过 串口来实现,特别是对一些便携式、小型设备,串口通信可 能是它们的唯一通信手段。串口通信处于OSI模型的数据链
7
其中RS(Recommended Standard)代表推荐标准,232是标识号, C代表RS-232的最新一次修改,它适合于数据传输速度在0~ 20 kb/s范围内的通信。这个标准对串行通信接口的有关问题, 如信号电平、信号线功能、电气特性、机械特性等都作了明
确的规定。目前RS-232C已成为数据终端设备(DTE,如计算
232/422/485,其技术简单成熟,性能可靠,所要求的软硬件
环境和条件都很低,是一种最简单的建立网络连接的方式。
3
3.1.1 串行通信的模式
通过单线传输信息是串行数据通信的基础,数据通常是
在两个站(点对点)之间进行传输的。按照数据流的方向,串 行通信可分成三种传输模式:单工、半双工、全双工。
1.单工模式
信息传输效率也较低。
5
3.全双工模式
全双工数据通信分别由两根可以在两个不同的站点同时
发送和接收的传输线进行传输,通信双方都能在同一时刻进 行发送和接收操作。在全双工模式中,每一端都有发送器和
接收器,有两条传输线,可在交互式应用和远程监控系统中
使用,信息传输效率较高。
6
3.1.2 串口的基本参数与标准
对于软件握手,现在已经建立了一些标准协议,其中最
常用的是通信协议。通信协议是指通信双方的一种约定,包 括对数据格式、同步方式、传输速度、传输步骤、检/纠错方
式以及控制字符定义等问题进行统一规定,通信双方必须共
同遵守,也叫做通信控制规程或传输控制规程,它属于OSI 七层参考模型中的数据链路层。
18
3.软硬结合握手
超级终端就无法打开该端口,会显示错误提示。
用超级终端和其他的设备进行连接时,双方互传的数据 以文字数据为主,在正式用程序将计算机和设备联机之前,
最好使用类似超级终端之类的程序先行做一些基本的测试,
以确定使用字符串的通信没有问题,然后再进行控制。
25
2.窗口精灵软件
窗口精灵软件是一个极好的串口监视与调试程序,适用
度提高到10 Mb/s,速率低于100 kb/s时的传输距离延长到
4000英尺(1英尺=0.3048 m),并允许在一条平衡总线上连接 最多10个接收器。RS-422是一种单机发送、多机接收的单向、
平衡传输规范。
12
3.RS-485
为扩展应用范围,EIA又于1983年在RS-422基础上制定
了RS-485标准,增加了多点、双向通信能力,即允许多个发 送器连接到同一条总线上,同时增加了发送器的驱动能力和
目前,常用的串口标准有RS-232C、RS-422、RS-485标
准。
1.RS-232C
RS-232C是美国电子工业协会(Electronic Industry
Association,EIA)于1962年公布并于1969年修订的串行接口 标准,它已经成为了国际上通用的标准。1987年1月,RS232C经修改后,正式改名为EIA-232D。由于标准修改内容并 不多,因此现在很多厂商仍使用旧的。RS-232C标准(协议)的 全称是EIA-RS-232C标准,
联系。因此,个人计算机向主计算机传输数据时,同时要考
虑硬件和软件握手。
19
例如:在个人计算机通过调制解调器向主计算机发送数据时, 只有在调制解调器DSR(有时可能使用CD)线电位变高,且没 有收到来自主计算机的“停止传输”软件信号时,才送出数 据。
一些计算机会自动监测硬件握手信号,所以应用程序只
需要处理软件握手信号即可。但这种情况并不等于硬件握手 不存在,依然是软硬结合的握手。
22
会出现一个本次联机的名称设置窗口(第一次使用该应用程序 时,可能还会被要求设置国家、区号等属性参数),在其中输 入名称并选择一个代表图标。此名称通常应使用易记的名称 来命名,以后再进行联机操作时,只要加载该名称,一切其
它的设置就会恢复。
(2) 然后在出现的界面中选择所要连接的设备。可以根据 需要连接相应的设备,可选得选项包括:COM、TCP/IP等,
可以采用RS-485总线。
14
3.1.3 串行通信握手协议
串行通信需要使用握手协议保持数据收发双方的同步,
握手协议靠握手信号实现。握手信号实际上就是控制信号, 用来控制数据的传输。通过握手信号,发送端可以得知接收
端是否有数据要发送。接收端通过握手信号通知发送端它是
否已经准备好了接收信号。握手信号遵循某种协议。当发送 端和接收端处理数据的速度不一样时,可能会造成数据丢失。
在这里选择COM。
(3) 在弹出的窗口中设置相关的参数,如图3-1所示。
23
图3-1 超级终端参数设置
24
(4) 单击“确定”按钮后,就会出现一个工作窗口,这说 明已经连接到需要连接的设备上。 设置完成后,会出现连接提示,包括连接时间、终端类 型、连接参数等。如果串口不存在,或已被其他设备使用,
在使用个人计算机或终端设备通过调制解调器和主计算
机进行通信时(例如:对路由器进行基于串口的远程配置的情 况),一般会采用软硬结合的握手。这种握手同时采用了硬件
握手和软件握手:一方面,个人计算机与调制解调器、主计
算机与调制解调器之间,使用硬件握手方法进行联系;另一 方面,主计算机和个人计算机之间将使用软件握手方法进行
10
只有当DSR和DTR都处于有效(ON)状态时,才能在DTE 和DCE之间进行传输操作。若DTE要发送数据,则预先将 DTR线置成有效(ON)状态,等CTS线上收到有效(ON)状态的 回答后,才能在TXD线上发送串行数据。这种顺序的规定对
半双工的通信线路特别有用,因为半双工的通信确定DCE已
由接收端向改为发送端向,这时线路才能开始发送。从计算 机的角度来看这些引脚的通信状况,流进计算机端的,可以
知计算机暂停发送数据。通常,串行通信握手的协议可以是
硬件握手、软件握手或二者的结合,具体如下所述。
16
1.硬件握手
在硬件握手中,发送端通过将某一条导线拉到高电平或
者低电平,以表示发送端可以发送数据。接收端已经准备好 接收数据之后,也把某一个导线拉到高电平或者是低电平,
以通知发送端,发送端一直在检测这个信号。接收端可以在
冲突保护特性,扩展了总线共模范围。RS-485协议可以看做
是RS-232协议的替代标准,与传统的RS-232协议相比,其在 通信速率、传输距离、多机连接等方面均有了非常大的提高。
由于RS-485总线是RS-232总线的改良标准,因此在软件设计
上它与RS-232总线基本上一致。
13
当两台RS-232串口设备通信距离较近时(小于15 m),可 以用电缆线直接将两台设备的RS-232端口连接;若通信距离 较远时(大于15 m),则需要附加Modem。当PC与串口设备的 通信距离较远或PC与多台具有RS-232接口的设备通信时,也
路层,通信协议简单、编程接口函数数量较少,适合作为进
行网络编程技术的入门学习内容。 本章由串口通信的基本原理、接口入手,介绍串口通信
的API函数;并以主机与单片机、主机间的通信为实例,介
绍串口网络编程的方法。
2
3.1 串行通信概述
串行总线是一种目前经Leabharlann Baidu使用的通信方式,单片机、
PLC、测试仪器、PC、打印机、交换机、路由器、防火墙、 工业控制设备都带有串口总线。串行接口包括RS-
机)和数据通信设备(DCE,如Modem)的接口标准。RS-232C 是PC与通信工业中应用最广泛的一种串行接口,PC上的
COM1和COM2大多是RS-232C接口。
利用RS-232C串行通信接口可实现两台个人计算机之间 点对点的通信;通过RS-232C接口可与其他外设(如打印机、
逻辑分析仪、智能调节仪、PLC等)近距离串行连接
看做数字输入;而流出计算机端的,则可以看做数字输出。
从工业应用的角度来看,所谓的输入就是用来“监测”的, 而输出就是用来“控制”的。
11
2.RS-422
RS-422由RS-232发展而来,是为了弥补RS-232的不足而
提出的。为了改进RS-232抗干扰能力差、通信距离短、传输 速度低等缺点,RS-422定义了一种平衡通信接口,将传输速
制解调器作为传输用的,因此它的引脚位意义通常也和调制 解调器传输有关。从功能来看,全部信号线分为三类,即数
据线(TXD、RXD)、地线(GND)和联络控制线(DSR、DTR、
RI、DCD、RTS、CTS)。
9
表3-1 RS-232各引脚的信号功能
引 脚 1 2 3 4 5 6 7 8 9 符 号 DCD RXD TXD DTR GND DSR TRS CTS RI 通 信 方 向 PC 至 Modem Modem 至 PC PC 至 Modem PC 至 Modem PC 至 Modem Modem 至 PC PC 至 Modem Modem 至 PC Modem 至 PC 功 能 载波信号检测 接收数据 发送数据 数据终端准备好 信号地线 数据装置准备好 请求发送 清除发送 振铃信号指示
20
3.2 串口通信程序设计
现在的产品若要自动化,一定要提供一个能与计算机进
行通信的通道。最简单的方式就是在产品内部烧上一颗单芯 片,利用单芯片上的串行通信功能进行自动化的工作,由于
计算机中的串口是必备的通道,且从价格及技术上来说是最
能被厂商所接受的,因此,市面上很多自动化产品也就加上 了串行通信的功能,从而扩大了产品的使用领域,使产品自
2.半双工模式
半双工通信中使用同一根传输线,既可发送数据又可接
收数据,但不能同时进行发送和接收。在任何时刻,只能由 其中的一方发送数据,另一方接收数据。因此半双工模式既
可以使用一条数据线,也可以使用两条数据线。在半双工通
信中,每一端需装有一个收发切换电子开关,通过切换来决 定数据向哪个方向传输。因为有切换,所以会产生时间延迟,
动化的实现技术变得简单化。
21
3.2.1 串行通信软件工具
除了用户自己动手编写串口通信软件之外,目前也有一
些现成的串口通信软件工具。
1.超级终端程序
超级终端程序是Windows操作系统自带的串口通信软件,
用户可以选择“开始/程序/附件/通信/超级终端”命令来调用 它。使用超级终端程序需要对其进行设置,设置步骤如下: (1) 首先按照“开始/程序/附件/通信”顺序,执行“超级 终端”操作(对应系统目录“C:\Program Files\Windows NT”下 的hypertrm.exe应用程序),
在数据传输中,如果发送端的发送速度大于接收端的接收速
度,同时接收端处理数据的速度不够快,那么接收端的缓冲 区必定在一定时间后溢出,从而造成以后发送过来的数据不 能进入缓冲区而丢失。 15
发送端何时可以继续发送数据,何时必须暂停发送,从而让 接收端有时间处理数据,则必须靠握手信号来解决这个问题。 例如,打印机和计算机进行通信时,一些打印机的打印速度 可能跟不上计算机发送数据的速度,就必须通过握手信号通
8
通过RS-232C接口连接调制解调器(Modem)可远距离地与其他 计算机通信;将RS-232C接口转换为RS-422或RS-485接口, 可实现一台个人计算机与多台现场设备之间的通信。 RS-232的每一引脚都有它的作用,也有其信号流动的方向,
各引脚的信号功能描述见表3-1。原来的RS-232是用来连接调
任何时候把这个信号变为无效,甚至是在接收一个数据块的 过程中。当发送端检测到这个信号变为无效之后,就必须停
止本次发送,直到这个信号变为有效为止。
17
2.软件握手
在软件握手中,以数据线上特定的数据信号来代替实际
的硬件电路电平变化。这种方法用在直接连接或者通过调制 解调器连接的两台计算机之间进行双向通信的场合。
第3章 串口网络编程
3.1 串行通信概述 3.2 串口通信程序设计
3.3 串口通信程序设计
小结
1
串口通信是一种通信条件要求最低却十分重要的网络通 信模式,网络设备调试、极端条件下的网络通信都可以通过 串口来实现,特别是对一些便携式、小型设备,串口通信可 能是它们的唯一通信手段。串口通信处于OSI模型的数据链
7
其中RS(Recommended Standard)代表推荐标准,232是标识号, C代表RS-232的最新一次修改,它适合于数据传输速度在0~ 20 kb/s范围内的通信。这个标准对串行通信接口的有关问题, 如信号电平、信号线功能、电气特性、机械特性等都作了明
确的规定。目前RS-232C已成为数据终端设备(DTE,如计算
232/422/485,其技术简单成熟,性能可靠,所要求的软硬件
环境和条件都很低,是一种最简单的建立网络连接的方式。
3
3.1.1 串行通信的模式
通过单线传输信息是串行数据通信的基础,数据通常是
在两个站(点对点)之间进行传输的。按照数据流的方向,串 行通信可分成三种传输模式:单工、半双工、全双工。
1.单工模式
信息传输效率也较低。
5
3.全双工模式
全双工数据通信分别由两根可以在两个不同的站点同时
发送和接收的传输线进行传输,通信双方都能在同一时刻进 行发送和接收操作。在全双工模式中,每一端都有发送器和
接收器,有两条传输线,可在交互式应用和远程监控系统中
使用,信息传输效率较高。
6
3.1.2 串口的基本参数与标准
对于软件握手,现在已经建立了一些标准协议,其中最
常用的是通信协议。通信协议是指通信双方的一种约定,包 括对数据格式、同步方式、传输速度、传输步骤、检/纠错方
式以及控制字符定义等问题进行统一规定,通信双方必须共
同遵守,也叫做通信控制规程或传输控制规程,它属于OSI 七层参考模型中的数据链路层。
18
3.软硬结合握手
超级终端就无法打开该端口,会显示错误提示。
用超级终端和其他的设备进行连接时,双方互传的数据 以文字数据为主,在正式用程序将计算机和设备联机之前,
最好使用类似超级终端之类的程序先行做一些基本的测试,
以确定使用字符串的通信没有问题,然后再进行控制。
25
2.窗口精灵软件
窗口精灵软件是一个极好的串口监视与调试程序,适用
度提高到10 Mb/s,速率低于100 kb/s时的传输距离延长到
4000英尺(1英尺=0.3048 m),并允许在一条平衡总线上连接 最多10个接收器。RS-422是一种单机发送、多机接收的单向、
平衡传输规范。
12
3.RS-485
为扩展应用范围,EIA又于1983年在RS-422基础上制定
了RS-485标准,增加了多点、双向通信能力,即允许多个发 送器连接到同一条总线上,同时增加了发送器的驱动能力和
目前,常用的串口标准有RS-232C、RS-422、RS-485标
准。
1.RS-232C
RS-232C是美国电子工业协会(Electronic Industry
Association,EIA)于1962年公布并于1969年修订的串行接口 标准,它已经成为了国际上通用的标准。1987年1月,RS232C经修改后,正式改名为EIA-232D。由于标准修改内容并 不多,因此现在很多厂商仍使用旧的。RS-232C标准(协议)的 全称是EIA-RS-232C标准,
联系。因此,个人计算机向主计算机传输数据时,同时要考
虑硬件和软件握手。
19
例如:在个人计算机通过调制解调器向主计算机发送数据时, 只有在调制解调器DSR(有时可能使用CD)线电位变高,且没 有收到来自主计算机的“停止传输”软件信号时,才送出数 据。
一些计算机会自动监测硬件握手信号,所以应用程序只
需要处理软件握手信号即可。但这种情况并不等于硬件握手 不存在,依然是软硬结合的握手。
22
会出现一个本次联机的名称设置窗口(第一次使用该应用程序 时,可能还会被要求设置国家、区号等属性参数),在其中输 入名称并选择一个代表图标。此名称通常应使用易记的名称 来命名,以后再进行联机操作时,只要加载该名称,一切其
它的设置就会恢复。
(2) 然后在出现的界面中选择所要连接的设备。可以根据 需要连接相应的设备,可选得选项包括:COM、TCP/IP等,
可以采用RS-485总线。
14
3.1.3 串行通信握手协议
串行通信需要使用握手协议保持数据收发双方的同步,
握手协议靠握手信号实现。握手信号实际上就是控制信号, 用来控制数据的传输。通过握手信号,发送端可以得知接收
端是否有数据要发送。接收端通过握手信号通知发送端它是
否已经准备好了接收信号。握手信号遵循某种协议。当发送 端和接收端处理数据的速度不一样时,可能会造成数据丢失。