串口通讯通信协议技术
串口通讯协议

串口通讯协议1. 概述串口通讯是指通过串行接口进行数据传输的一种通讯方式。
在许多应用领域,包括物联网、嵌入式系统、工业自动化等,串口通讯被广泛使用。
为了实现不同设备之间的数据交换,通信双方需要事先约定一套规范,即串口通讯协议。
2. 串口基本概念在深入了解串口通讯协议之前,有必要先了解一些基本的串口概念。
•波特率(Baud Rate):波特率指的是每秒传输的比特数,表示单位时间内串口传输的速度。
常见的波特率有9600、115200等。
•数据位(Data Bits):数据位是指每个数据字节中实际所使用的位数。
通常有7位、8位两种选择。
•停止位(Stop Bits):停止位是指在数据位之后,传输停止时所使用的位数。
常见的有1位、2位两种选择。
•校验位(Parity Bit):校验位用于检测数据传输过程中是否发生错误。
可以选择奇校验、偶校验或无校验。
3. 常见串口通讯协议以下介绍了几种常见的串口通讯协议。
3.1 RS232RS232是一种广泛使用的串口通讯协议。
它规定了物理层和部分数据链路层的规范,包括电气特性、线缆连接、通信速率等。
RS232使用异步传输方式,每个字节包含一位起始位、7-8位数据位、可选的奇偶校验位和一个或多个停止位。
3.2 RS485RS485是一种多点共享、半双工的串口通讯协议。
它可以连接多个设备,实现多设备之间的通讯。
RS485使用差分信号传输,具有较高的抗干扰能力和传输距离。
3.3 MODBUSMODBUS是一种通讯协议,用于在不同设备之间进行数据传输。
该协议定义了一组通信规范,包括数据帧结构、功能码、寄存器地址等。
MODBUS常用于工业自动化领域,例如远程测控系统、PLC控制等。
4. 串口通讯协议的实现实现串口通讯协议通常需要进行以下步骤:•建立物理连接:首先,需要通过串口线将两个设备相连。
通常使用的是两根线,分别用于发送和接收数据。
•配置通信参数:在进行数据传输之前,需要确定合适的波特率、数据位、停止位和校验位等参数。
串口(USART)通信-串口通讯协议简介

串⼝(USART)通信-串⼝通讯协议简介物理层:规定通讯系统中具有机械、电⼦功能部分的特性,确保原始数据在物理媒体的传输。
其实就是硬件部分。
协议层:协议层主要规定通讯逻辑,统⼀收发双⽅的数据打包、解包标准。
其实就是软件部分。
简单来说物理层规定我们⽤嘴巴还是⽤肢体来交流,协议层则规定我们⽤中⽂还是英⽂来交流。
物理层RS232标准USB转串⼝(TTL)原⽣的串⼝到串⼝(TTL->TTL)RS-232 与 TTL 电平区别TTL:⼀般是直接从单⽚机或者芯⽚⾥⾯出来的电平,逻辑1为2.4V-5V逻辑0为0-0.5v(⼀般⾼电平位5V或者3.3V,低电平为0)RS232:逻辑 1:-15V~-3V逻辑 0:+3V~+15V(低电平为-15V,⾼电平为15V峰值差别⼤,不以0为低电平,)RS232标准串⼝通讯结构图控制器AB可以理解为芯⽚,出来的是TTL电平,经过电平转换芯⽚(MAX3232,SP3232),转换成RS232电平.RS232串⼝⼀般⽤于⼯业,对于防⽌静电....很好...对于没有232串⼝的STM32板⼦,可以去某宝买⼀个232串⼝,⼀般长这个样.(RXD TXD VCC GND ⿊⾊的⼩块为电平转换芯⽚银⾊的接⼝为DB9接⼝,DB9串⼝先将两个DB9接⼝连接,将RXD TXD分别连接STM32的USTAR串⼝的引脚,VCC GND接好板⼦相应的位置(杜邦线),也可以⽤USB转串⼝线连接(电平转换芯⽚为CH340,PL2303,CP2102)电脑上,需要安驱动.)USB转(RXD<->TXD TXD<->RXD)原⽣的串⼝到串⼝1、原⽣的串⼝通信主要是控制器跟串⼝的设备或者传感器通信,不需要经过电平转换芯⽚来转换电平,直接就⽤TTL电平通信2、GPS模块、GSM模块、串⼝转WIFI模块、HC04蓝⽛模块协议层串⼝数据包的基本组成起始位:由1个逻辑 0 的数据位表⽰结束位:由 0.5、 1、 1.5 或 2 个逻辑 1 的数据位表⽰有效数据:在起始位后紧接着的就是有效数据,有效数据的长度常被约定为 5、 6、 7 或 8 9位长校验位:可选,为的是数据的抗⼲扰性。
串口通信原理与技术(RS232)

232串口RS232的标准就是将(+3V)-(+15V),(-3V)-(-15V)的电平作为通讯的高低电平使用,所谓的信号强弱是和电压、电流有关,通常RS232 的通讯电流都在5mA-10mA左右,如果导线过长,电损耗相对也会加大,那么电压就会下降,这样便会影响到所谓的信号识别。
如果你的导线在 1.5m 范围内,所谓的信号强度按标准的RS232 协议来说是绝对足够的,如果说真的存在信号弱问题,只有可能是TTL 电平转换时的问题,比如说电压不稳或电流太小等原因,但被应用得比较常见的TTL 转RS232 的转换模块来说,通常不会有这类问题。
就MAX232来说,他为了能适应各种距离的通讯,所以在外围电路上提供了几个电容接口,根据不同的需求可以使用不同大小的电容,范围是1uF-0.1uF,通常使用USB转串口设备时采用0.1uF,因为像CH240或CH341这类的转换芯片通常不需要距离太远,所以电损和电流也不需要太大,但是如果直接用串口线连接,相对来说需要的电流和电压需要大一点,以满足电损耗部分,那么电容使用1uf能比较稳定的将(+3V)-(+15V),(-3V)-(-15V)的电平传递到目标端。
在有导线的情况下,所谓的信号强弱就是这么个电压电流传递能不能识别的问题。
有些设备识别电压的范围广一点,比如通常(+3V为)低电平,(+15V为高电平),如果因为导线或器件的问题导致电压不到(+15V),只有(+9V),如果也被视为高电平的话,那也就解决了所谓的信号弱的问题。
如果说你的串口通讯出问题是因为信号弱的问题,我认为不是。
因为按你的说法长期都是好的,只有几次出现通讯不了的问题,这说明无论是上位机还是下位机,包括导线,他们所提供的电压和电流都是长期能够相互接受的,就这么偶尔几次不能通讯,而且是需要重启电脑后才能通讯,难道说这几次问题会是因为几个不稳定的电压或电流造成的?肯定不会,所以说和信号无关。
估计应该不是这个所谓的信号强弱问题,除非的下位机电路或器件本身有问题,比如转换芯片用了略制的器件或电路短路,导致器件使用时间过长发烫或烧毁,否则就应该不是信号问题,因为既然能够长期使用,表明硬件的器件本身的电压电流控制还是能够工作的,如果说不稳,那么应该考虑供电部分稳吗?就PC主板上的UBS供电来说,5V供电基本上都能达到。
串口通讯协议

串口通讯协议串口通讯协议是一种用于在计算机和外部设备之间进行数据传输的通信协议。
它是通过串行通信接口(串口)将数据以逐位的方式传输。
串口通讯协议通常用于连接计算机和各种外设,如打印机、调制解调器、传感器等。
1. 什么是串口通讯协议?串口通讯协议是一种规定了数据传输格式和通信规则的协议。
它定义了数据帧的结构、数据的编码和解码方式、数据的传输速率等。
串口通讯协议通常由硬件和软件两部分组成。
硬件部分包括串口接口的物理连接、电气特性以及数据线的连接方式。
串口通常包括发送线(TX)、接收线(RX)和地线(GND)。
这些线路通过串口线连接计算机和外设。
软件部分涉及到数据的传输和解析。
在串口通讯中,数据被分为连续的字节,并通过串行方式逐个传输。
发送方将字节一位一位地发送到接收方,接收方则按照事先约定好的规则解析和处理数据。
2. 常见的串口通讯协议2.1 RS-232RS-232是一种常见的串口通讯协议,它定义了串口的物理接口和电气特性。
RS-232通常使用DB9或DB25连接器,并且规定了数据线的连接方式、电平范围等。
2.2 UARTUART(Universal Asynchronous Receiver/Transmitter)是一种通用的异步收发器。
它是实现串口通讯的重要组件,负责将数据从并行格式转换为串行格式,并在发送和接收之间进行时序控制。
UART可以通过调整参数来适应不同的通信需求,如波特率、数据位、停止位和校验位等。
2.3 SPISPI(Serial Peripheral Interface)是一种同步串行通信协议,常用于连接微控制器和外部设备。
SPI使用4条线进行通信,包括时钟线、数据线、主从选择线和片选线。
SPI具有高速传输和多设备连接的优势。
2.4 I2CI2C(Inter-Integrated Circuit)是一种串行通信协议,用于连接集成电路芯片之间的通信。
I2C使用两条线进行通信,一条是时钟线(SCL),另一条是数据线(SDA)。
串口通信协议的制定及配置流程

串口通信协议的制定及配置流程串口通信协议串口通信指串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
在串口通信中,常用的协议包括RS-232、RS-422和RS-485。
里以串口作为传输媒介,介绍下怎样来发送接收一个完整的数据包。
过程涉及到封包与解包。
设计一个良好的包传输机制很有利于数据传输的稳定性以及正确性。
串口只是一种传输媒介,这种包机制同时也可以用于SPI,I2C的总线下的数据传输。
在单片机通信系统(多机通信以及PC与单片机通信)中,是很常见的问题。
一、根据帧头帧尾或者帧长检测一个数据帧1、帧头+数据+校验+帧尾这是一个典型的方案,但是对帧头与帧尾在设计的时候都要注意,也就是说帧头、帧尾不能在所传输的数据域中出现,一旦出现可能就被误判。
如果用中断来接收的话,程序基本可以这么实现:unsigned char recstatu;//表示是否处于一个正在接收数据包的状态unsigned char ccnt; //计数unsigned char packerflag;//是否接收到一个完整的数据包标志unsigned char rxbuf[100];//接收数据的缓冲区void UartHandler(){unsigned char tmpch;tmpch = UARTRBR;if(tmpch 是包头)//检测是否是包头{recstatu = 1;ccnt = 0 ;packerflag = 0;return ;}if(tmpch是包尾)//检测是否是包尾{recstatu = 0;packerflag = 1; //用于告知系统已经接收到一个完整的数据包return ;}if(recstatu ==1)//是否处于接收数据包状态{rxbuf[ccnt++]= tmpch;}}上面也就是接收一个数据包,但是再次提醒,包头和包尾不能在数据域中出现,一旦出现将会出现误判。
串口通信协议书

串口通信协议书甲方(以下简称“甲方”):_____________________地址:_____________________________________法定代表人(或授权代表):_________________职务:_____________________________________联系电话:_________________________________乙方(以下简称“乙方”):_____________________地址:_____________________________________法定代表人(或授权代表):_________________职务:_____________________________________联系电话:_________________________________鉴于甲方与乙方就串口通信技术的应用与合作达成一致,根据《中华人民共和国合同法》及相关法律法规的规定,双方本着平等、自愿、公平、诚实信用的原则,经协商一致,订立本协议书,以资共同遵守。
第一条协议目的1.1 本协议旨在明确甲乙双方在串口通信技术领域内的合作范围、权利义务及合作方式等事项。
第二条合作内容2.1 甲方同意向乙方提供串口通信技术及相关技术支持。
2.2 乙方同意按照本协议约定的条件使用甲方提供的串口通信技术,并支付相应的费用。
第三条技术提供与技术支持3.1 甲方应保证所提供的串口通信技术符合国家相关技术标准和行业规范。
3.2 甲方应提供必要的技术支持和培训,以确保乙方能够正确使用串口通信技术。
第四条合作期限4.1 本协议自双方签字盖章之日起生效,有效期至____年____月____日。
第五条费用及支付方式5.1 乙方应按照本协议约定向甲方支付串口通信技术使用费,具体金额为:________________。
5.2 乙方应于本协议生效后____天内,将上述费用支付至甲方指定账户。
串口通信协议

串⼝通信协议所谓通信协议是指通信双⽅的⼀种约定。
约定包括对数据格式、同步⽅式、传送速度、传送步骤、检纠错⽅式以及控制字符定义等问题做出统⼀规定,通信双⽅必须共同遵守,属于OSI七层参考模型中的数据链路层。
⽬前,采⽤的通信协议有两类:异步协议和同步协议。
异步协议为起⽌式异步协议。
异步通信是按字符传输的,每传输⼀个字符,就⽤起始位来通知收⽅,以此来重新核对收发双⽅同步。
若接收设备和发送设备两者的时钟频率略有偏差,这也不会因偏差的累积⽽导致错位,加之字符之间的空闲位也为这种偏差提供⼀种缓冲,所以异步串⾏通信的可靠性⾼。
但由于要在每个字符的前后加上起始位和停⽌位这样⼀些附加位,使得传输效率变低了,只有约80%。
因此,起⽌协议⼀般⽤在数据速率较慢的场合(⼩于19.2kbit/s)。
同步协议分为⾯向字符和⾯向⽐特以及⾯向字节计数三种。
在⾼速传送时,⼀般要采⽤同步协议。
总的来说,通讯协议就是通讯双⽅共同遵循的⼀套规则,定义协议的原则是尽可能的简单以提⾼传输率,尽可能的具有安全性保证数据传输完整正确。
基于这2点规则,我们⼀个通讯协议应该是这样的:头+数据长度+数据正⽂+校验例如:AA 44 05 01 02 03 04 05 EA这⾥我假设的⼀条数据,协议如下:数据头: AA 44数据长度: 05数据正⽂: 01 02 03 04 05校验: EA⼀般数据的校验,都会采⽤常⽤的⽅式,CRC16,CRC32,Xor。
有的数据安全要求⾼的,不允许丢包的,可能还要加⼊重发机制或是加⼊数据恢复算法,在校验后根据前⾯数据添加恢复字节流以恢复数据。
我这⾥采⽤的是简单的异或校验,包含数据头的所有字节,依次异或得到的。
协议很简单,我也认为分析协议是很简单的事情,下⾯我们就如何分析协议来实际的结合c#看⼀下。
er…再等等,在我们实际开始编码之前,还有⼀个规则需要了解,我们有了通讯协议,如何结合串⼝的协议来分析,需要关⼼什么呢?⼀般就是3个问题:1、如何缓存收到的所有数据2、如何找到⼀条完整数据3、如何分析数据如何缓存收到的所有数据?如果分的更详细⼀点,⽐如针对缓存收到的所有数据这个问题,我们想到最⾼效的办法就是顺序表,也就是数组,但数组的操作⽐较复杂,当你使⽤完⼀条数据后,⽤过的需要移除;新数据如果过多的时候,缓存过⼤需要清理;数据搬移等等,很有可能⼀个不⼩⼼就会丢数据导致软件出些莫名其妙的⼩问题。
关于欧姆龙plc串口通讯协议

1.无协议通信无协议通信是不使用固定协议,协议不经过数据转换,通过通信端口输入、输出指令,如txd、rxd指令,发送接收数据的功能。
这种情况下,通过plc的系统设定将串行端口的串行通信模式设为无协议通信(串行端口1、2都可以)。
通过该无协议通信,与带有rs-232端口或rs-422a/485 端口的通用外部设备,按照txd、rxd指令进行单方面发送接收数据。
例如,可进行来自条形码阅读器的数据输入以及向打印机的数据输出等简单的数据接收和发送。
无协议通信时发送接收的消息帧:开始代码和结束代码之间的数据用txd指令进行发送,或者将插入“开始代码”及“结束代码”之间的数据用rxd 指令进行接收。
当按照txd指令发送时。
将数据从i/o存储器中读取后发送。
按照rxd指令接收时,仅将数据保仔到i/o存储器的指定区域。
“开始/结束代码”均由plc系统设定来指定。
1次txd指令或rxd指令可发送的信息的长度(不包括开始代码或结束代码)最大是256字节。
2.nt链接通信cp1h在pt(可编程终端)及nt链接(1台链接多台的1:n模式)下可进行通信,但在nt链接(1:1模式)下不能进行通信。
pt为nt31/631(c)-v2系列触摸屏或ns系列触摸屏的情况下,可使用高速nt链接。
nt链接可以通过plc系统设定及pt本体上的系统菜单进行设定。
利用pt本体上的系统菜单进行设定时,可通过以下操作进行pt侧的设定。
(1)在pt本体的系统菜单内的存储切换菜单的【串行端口a】或【串行端口b】,选择【nt链接(1:n)】。
(2)按【设定】按钮,将【通信速度】设定为【高速】。
3.上位链接通信上位链接包括两个方面,即从上位计算机到plc和plc到上位计算机。
在前者中,对于cpu单元,从上位计算机发布上位链接指令(c模式指令)或fins指令,进行plc的i/o存储器的读写、动作模式的变更及强制置位/复位等各种控制。
在后者中,对于上位计算机,从cpu单元发出fins指令,发送数据和信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
串口通讯—通信协议所谓通信协议是指通信双方的一种约定。
约定包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定,通信双方必须共同遵守。
因此,也叫做通信控制规程,或称传输控制规程,它属于ISO'S OSI七层参考模型中的数据链路层。
目前,采用的通信协议有两类:异步协议和同步协议。
同步协议又有面向字符和面向比特以及面向字节计数三种。
其中,面向字节计数的同步协议主要用于DEC公司的网络体系结构中。
一、物理接口标准1.串行通信接口的基本任务(1)实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。
在异步通信方式下,接口自动生成起止式的帧数据格式。
在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。
(2)进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。
所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。
因此串并转换是串行接口电路的重要任务。
(3)控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选择和控制的能力。
(4)进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。
在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。
(5)进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用的电平及负逻辑不兼容,需在接口电路中进行转换。
(6)提供EIA-RS-232C接口标准所要求的信号线:远距离通信采用MODEM时,需要9根信号线;近距离零MODEM方式,只需要3根信号线。
这些信号线由接口电路提供,以便与MODEM或终端进行联络与控制。
2、串行通信接口电路的组成为了完成上述串行接口的任务,串行通信接口电路一般由可编程的串行接口芯片、波特率发生器、EIA 与TTL电平转换器以及地址译码电路组成。
其中,串行接口芯片,随着大规模继承电路技术的发展,通用的同步(USRT)和异步(UART)接口芯片种类越来越多,如下表所示。
它们的基本功能是类似的,都能实现上面提出的串行通信接口基本任务的大部分工作,且都是可编程的。
才用这些芯片作为串行通信接口电路的核心芯片,会使电路结构比较简单。
3.有关串行通信的物理标准为使计算机、电话以及其他通信设备互相沟通,现在,已经对串行通信建立了几个一致的概念和标准,这些概念和标准属于三个方面:传输率,电特性,信号名称和接口标准。
1、传输率:所谓传输率就是指每秒传输多少位,传输率也常叫波特率。
国际上规定了一个标准波特率系列,标准波特率也是最常用的波特率,标准波特率系列为110、300、600、1200、4800、9600和19200。
大多数CRT终端都能够按110到9600范围中的任何一种波特率工作。
打印机由于机械速度比较慢而使传输波特率受到限制,所以,一般的串行打印机工作在110波特率,点针式打印机由于其内部有较大的行缓冲区,所以可以按高达2400波特的速度接收打印信息。
大多数接口的接收波特率和发送波特率可以分别设置,而且,可以通过编程来指定。
2、RS-232-C标准:RS-232-C标准对两个方面作了规定,即信号电平标准和控制信号线的定义。
RS-232-C采用负逻辑规定逻辑电平,信号电平与通常的TTL电平也不兼容,RS-232-C将-5V~-15V规定为“1”,+5V~+15V规定为“0”。
图1是TTL标准和RS-232-C标准之间的电平转换。
图1二、软件协议1.OSI协议和TCP/IP协议图2(1)OSI协议OSI七层参考模型不是通讯标准,它只给出一个不会由于技术发展而必须修改的稳定模型,使有关标准和协议能在模型定义的范围内开发和相互配合。
一般的通讯协议只符合OSI七层模型的某几层,如: EIA-RS-232-C:实现了物理层。
IBM的SDLC(同步数据链路控制规程):数据链路层。
ANSI的ADCCP(先进数据通讯规程):数据链路层IBM的BSC(二进制同步通讯协议):数据链路层。
应用层的电子邮件协议SMTP只负责寄信、POP3只负责收信。
(2)TCP/IP协议实现了五层协议。
(1)物理层:对应OSI的物理层。
(2)网络接口层:类似于OSI的数据链路层。
(3)Internet层:OSI模型在Internet网使用前提出,未考虑网间连接。
(4)传输层:对应OSI的传输层。
(5)应用层:对应OSI的表示层和应用层。
2.串行通信协议串行通信协议分同步协议和异步协议。
(1)异步通信协议的实例——起止式异步协议图3特点与格式:起止式异步协议的特点是一个字符一个字符传输,并且传送一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。
其格式如图3所示。
每一个字符的前面都有一位起始位(低电平,逻辑值0),字符本身有5~7位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位,或意味半,或二位停止位,停止位后面是不定长度的空闲位。
停止位和空闲位都规定为高电平(逻辑值),这样就保证起始位开始处一定有一个下跳沿。
从图中可以看出,这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起始式协议。
传送时,数据的低位在前,高位在后,图4表示了传送一个字符E的ASCAII码的波形1010001。
当把它的最低有效位写到右边时,就是E的ASCII码1000101=45H。
图4起/止位的作用:起始位实际上是作为联络信号附加进来的,当它变为低电平时,告诉收方传送开始。
它的到来,表示下面接着是数据位来了,要准备接收。
而停止位标志一个字符的结束,它的出现,表示一个字符传送完毕。
这样就为通信双方提供了何时开始收发,何时结束的标志。
传送开始前,发收双方把所采用的起止式格式(包括字符的数据位长度,停止位位数,有无校验位以及是奇校验还是偶校验等)和数据传输速率作统一规定。
传送开始后,接收设备不断地检测传输线,看是否有起始位到来。
当收到一系列的“1”(停止位或空闲位)之后,检测到一个下跳沿,说明起始位出现,起始位经确认后,就开始接收所规定的数据位和奇偶校验位以及停止位。
经过处理将停止位去掉,把数据位拼装成一个并行字节,并且经校验后,无奇偶错才算正确的接收一个字符。
一个字符接收完毕,接收设备有继续测试传输线,监视“0”电平的到来和下一个字符的开始,直到全部数据传送完毕。
由上述工作过程可看到,异步通信是按字符传输的,每传输一个字符,就用起始位来通知收方,以此来重新核对收发双方同步。
若接收设备和发送设备两者的时钟频率略有偏差,这也不会因偏差的累积而导致错位,加之字符之间的空闲位也为这种偏差提供一种缓冲,所以异步串行通信的可靠性高。
但由于要在每个字符的前后加上起始位和停止位这样一些附加位,使得传输效率变低了,只有约80%。
因此,起止协议一般用在数据速率较慢的场合(小于19.2kbit/s)。
在高速传送时,一般要采用同步协议。
(2)面向字符的同步协议特点与格式:这种协议的典型代表是IBM公司的二进制同步通信协议(BSC)。
它的特点是一次传送由若干个字符组成的数据块,而不是只传送一个字符,并规定了10个字符作为这个数据块的开头与结束标志以及整个传输过程的控制信息,它们也叫做通信控制字。
由于被传送的数据块是由字符组成,故被称作面向字符的协议。
特定字符(控制字符)的定义:由上面的格式可以看出,数据块的前后都加了几个特定字符。
SYN是同步字符(synchronous Character),每一帧开始处都有SYN,加一个SYN的称单同步,加两个SYN的称双同步设置同步字符是起联络作用,传送数据时,接收端不断检测,一旦出现同步字符,就知道是一帧开始了。
接着的SOH是序始字符(Start Of Header),它表示标题的开始。
标题中包括院地址、目的地址和路由指示等信息。
STX是文始字符(Start Of Text),它标志着传送的正文(数据块)开始。
数据块就是被传送的正文内容,由多个字符组成。
数据块后面是组终字符ETB(End Of Transmission Block)或文终字符ETX(End Of Text),其中ETB用在正文很长、需要分成若干个分数据块、分别在不同帧中发送的场合,这时在每个分数据块后面用文终字符ETX。
一帧的最后是校验码,它对从SOH开始到ETX(或ETB)字段进行校验,校验方式可以是纵横奇偶校验或CRC。
另外,在面向字符协议中还采用了一些其他通信控制字,它们的名称如下表所示:数据透明的实现:面向字符的同步协议,不象异步起止协议那样,需要在每个字符前后附加起始和停止位,因此,传输效率提高了。
同时,由于采用了一些传输控制字,故增强了通信控制能力和校验功能。
但也存在一些问题,例如,如何区别数据字符代码和特定字符代码的问题,因为在数据块中完全有可能出现与特定字符代码相同的数据字符,这就会发生误解。
比如正文有个与文终字符ETX的代码相同的数据字符,接收端就不会把它当作为普通数据处理,而误认为是正文结束,因而产生差错。
因此,协议应具有将特定字符作为普通数据处理的能力,这种能力叫做“数据透明”。
为此,协议中设置了转移字符DLE(Data Link Escape)。
当把一个特定字符看成数据时,在它前面要加一个DLE,这样接收器收到一个DLE就可预知下一个字符是数据字符,而不会把它当作控制字符来处理了。
DLE本身也是特定字符,当它出现在数据块中时,也要在它前面加上另一个DLE。
这种方法叫字符填充。
字符填充实现起来相当麻烦,且依赖于字符的编码。
正是由于以上的缺点,故又产生了新的面向比特的同步协议。
(3)面向比特的同步协议特点与格式:面向比特的协议中最具有代表性的是IBM的同步数据链路控制规程SDLC(Synchronous Data Link Control),国际标准化组织ISO(International Standard Organization)的高级数据链路控制规程HDLC(High Level Data link Control),美国国家标准协会(Americal National Standard Institute)的先进数据通信规程ADCCP(Advanced Data Communication Control Procedure)。
这些协议的特点是所传输的一帧数据可以是任意位,而且它是靠约定的位组合模式,而不是靠特定字符来标志帧的开始和结束,故称“面向比特”的协议。
这中协议的一般帧格式如图5所示:图5帧信息的分段:由图5可见,SDLC/HDLC的一帧信息包括以下几个场(Filed),所有场都是从有效位开始传送。