c串口通信协议设计
串口通信之协议格式

串⼝通信之协议格式缓存收到的所有数据,找到⼀条完整数据,分析数据,界⾯通知。
信令格式:同步头 + 数据正⽂ + 同步尾同步头 + 命令字 + 数据长度 + 数据正⽂ + 同步尾同步头 + 地址码 + 命令字 + 数据长度 + 数据正⽂ + 同步尾同步头 + 数据正⽂ + 校验码同步头 + 命令字 + 数据长度 + 数据正⽂ + 校验码同步头 + 地址码 + 命令字 + 数据长度 + 数据正⽂ + 校验码 ⽂本格式可以直观的定义回车换⾏是协议的结尾,所以我们可以省略数据长度,增加协议尾。
即:协议头 + 数据 + 校验 + 数据尾 ⼀般情况下,同步头2B,地址码1B,命令字1B,数据长度1B,数据正⽂nB,同步尾2B,校验码2B。
信令的格式为了3个⽬的:a>符合业务需求;b>⽅便识别⼀条完整的数据;c>进⼀步验证数据,如有需要进⾏数据还原。
地址码、命令字为了⽬的a; 同步头、数据长度、同步尾、校验码为了⽬的b; 校验码为了⽬的c。
建议:1> 尽量采⽤数据内容不会出现的字符作为同步头尾。
⽐如数据⽤BCD码,则同步头可以⽤A-E,如5E;2> 如果同步头尾字符可能会在数据正⽂出现,则可能要⽤转义符,当然同步头+数据长度+同步尾3个条件同时成⽴的正⽂数据出现概率应该⾮ 常⾮常低;3> 如果数据较短,请使⽤校验码进⼀步验证数据的正确性;4> 如果正确性要求特别⾼,请采⽤校验码还原可能的错误数据,如果校验码不能完成数据还原,请重发信令请求以保证正确。
C# 串⼝操作系列(3) -- 协议篇,⼆进制协议数据解析C#串⼝操作系列(4) -- 协议篇,⽂本协议数据解析。
串口通信协议

串口通信协议协议名称:串口通信协议一、引言串口通信协议旨在规范串行通信中数据的传输方式和格式,确保不同设备之间的数据交换能够顺利进行。
本协议适用于使用串口进行数据传输的各种设备和系统。
二、术语定义1. 串口:指计算机或其他设备上的串行通信接口,用于将数据以序列的方式传输。
2. 数据位:指每个数据字节中所包含的位数,常用的取值为5、6、7、8。
3. 停止位:指数据字节之后的额外位数,用于标识数据传输的结束。
4. 校验位:指用于校验数据传输的正确性的额外位数。
5. 波特率:指每秒钟传输的比特数,用于衡量数据传输速率。
6. 帧:指数据传输中的一个完整单元,包括数据位、停止位和校验位。
三、通信协议1. 通信参数设置a. 数据位:默认为8位,可根据实际需求进行设置。
b. 停止位:默认为1位,可根据实际需求进行设置。
c. 校验位:默认为无校验,可根据实际需求进行设置。
d. 波特率:默认为9600bps,可根据实际需求进行设置。
2. 数据帧格式a. 起始位:每个数据帧以一个起始位开始,用于标识数据帧的开始。
b. 数据位:根据通信参数设置的数据位数确定,用于传输实际数据。
c. 停止位:每个数据帧以一个或多个停止位结束,用于标识数据帧的结束。
d. 校验位:可选项,用于校验数据传输的正确性。
3. 通信流程a. 发送端将数据按照数据帧格式进行封装,并通过串口发送。
b. 接收端通过串口接收数据,并按照数据帧格式进行解析。
c. 接收端校验数据的正确性,如果校验失败,则丢弃该数据帧。
d. 接收端将有效数据提取出来进行处理。
四、通信协议示例以下为一个示例,展示了一个基于串口通信的简单数据传输协议。
1. 通信参数设置:数据位:8位停止位:1位校验位:无波特率:9600bps2. 数据帧格式:起始位:1位(固定为0)数据位:8位停止位:1位(固定为1)3. 通信流程:a. 发送端封装数据帧:起始位:0数据位:实际数据停止位:1b. 发送端通过串口发送数据帧。
单片机串口通信协议

单片机串口通信协议1. 引言单片机串口通信是一种常见的数据通信方式,它允许单片机与其他外部设备进行通信。
串口通信协议定义了数据传输的格式、波特率等参数,确保通信的稳定和可靠性。
本文将介绍单片机串口通信协议的基本原理和常用协议。
2. 串口通信基础串口通信是通过串行数据传输来实现的。
其中,UART(通用异步收发传输器)是实现串口通信的重要组件。
UART将并行数据转换为串行数据,并通过串口进行传输。
在单片机中,常用的串口通信引脚是TX(发送)和RX(接收)。
3. 串口通信协议串口通信协议定义了数据传输时各个数据包的格式和规则。
常见的串口通信协议有以下几种:3.1. RS-232RS-232是最早出现的串口通信协议之一。
它定义了数据传输的电气特性和信号级别。
RS-232使用9个引脚进行数据传输,包括发送和接收数据线、数据控制线等。
该协议具有较长的最大传输距离和可靠性,但通信速率相对较慢。
3.2. RS-485RS-485是一种多点通信的串口协议。
相比于RS-232,RS-485支持多个设备之间的通信。
它使用不同的信号级别和电气特性,可实现更远的传输距离和更高的通信速率。
RS-485通信中设备分为主设备和从设备,主设备负责控制通信流程。
3.3. SPISPI(Serial Peripheral Interface)是一种同步串口通信协议,常用于单片机与外部设备之间的通信。
SPI使用四条引脚进行通信,包括时钟线、数据线、主设备输出从设备输入线和主设备输入从设备输出线。
SPI通信速率较快,适用于高速数据传输。
3.4. I2CI2C(Inter-Integrated Circuit)是一种多主从通信的串口协议。
I2C使用两条引脚进行通信,包括时钟线和数据线。
在I2C总线上,可以连接多个设备,实现多个设备之间的通信和数据交换。
I2C通信速率较慢,但具有较简单的硬件设计和较低的功耗。
4. 协议选择和配置选择合适的串口通信协议需要考虑通信距离、通信速率、设备数量等因素。
MCU与PC串行通信设计

MCU与PC串行通信设计首先,我们需要确定通信协议和接口。
在串行通信中,常用的协议包括UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器),SPI(Serial Peripheral Interface,串行外设接口)和I2C (Inter-Integrated Circuit,多主机串行总线)等。
接下来,我们需要确定硬件连线。
对于UART,我们需要连接MCU和PC的TX(传输)和RX(接收)引脚。
对于SPI和I2C,我们需要连接MCU和PC的SCLK(时钟)、MISO(主输入从输出)和MOSI(主输出从输入)等引脚。
同时,我们还需要为每个设备分配一个唯一的地址,以便在通信过程中进行识别和寻址。
当硬件连线完成后,我们可以开始编写代码并进行软件配置。
首先,在MCU端,我们需要配置相应的通信模块(UART/SPI/I2C),设置通信速率(波特率)、传输模式、数据位数等参数。
接下来,我们可以编写发送数据和接收数据的函数,以实现与PC之间的通信。
具体来说,在PC端的串行通信程序中,我们需要打开对应的串口,并进行相应的配置(波特率、数据位数、校验位等)。
然后,我们可以使用读取和写入函数来实现从MCU接收数据和向MCU发送数据的功能。
在读取数据时,我们可以选择阻塞或非阻塞模式,以及设定超时时间等。
在通信过程中,我们可以使用不同的数据格式进行传输,如ASCII码、二进制码或者自定义的协议格式。
对于ASCII码,我们可以通过字符的编码和解码来实现数据的传输。
对于二进制码,我们可以使用位操作来实现数据的传输。
而对于自定义的协议格式,我们可以根据具体应用的需求来设计数据结构和解析方式。
此外,为了提高通信的可靠性和稳定性,我们还可以添加一些错误检测和纠错功能。
对于UART和SPI等协议,可以使用校验位(如奇偶校验位、校验和等)来检测和纠正数据传输中的错误;对于I2C协议,可以使用应答信号和重试机制来实现错误处理。
上位机与下位机串口通信协议

上位机与下位机串口通信协议篇一:基于C#的串口通信上位机和下位机源程序基于单片机串口通信的上位机和下位机实践串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。
大多数计算机包含两个基于RS232的串口。
串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
首先亮出C#的源程序吧。
1主要界面:只是作为简单的运用,可以扩展的。
源代码:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO.Ports;using System.Timers;namespace 单片机功能控制{public partial class Form1 : Form{public Form1(){InitializeComponent();}SerialPort sp = new SerialPort();private void button1_Click(object sender, EventArgs e) 2{String str1 = comboBox1.Text;//串口号String str2 = comboBox2.Text;//波特率String str3 = comboBox3.Text;//校验位String str4 = comboBox5.Text;//停止位String str5 = comboBox4.Text;//数据位Int32 int2 = Convert.ToInt32(str2);//将字符串转为整型Int32 int5 = Convert.ToInt32(str5);//将字符串转为整型groupBox3.Enabled = true;//LED控制界面变可选try{if (button1.Text == 打开串口){if (str1 == null){MessageBox.Show(请先选择串口~, Error); return; }sp.Close();sp = new SerialPort();sp.PortName = comboBox1.Text;//串口编号sp.BaudRate = int2;//波特率switch (str4)//停止位3{case 1:sp.StopBits = StopBits.One;break;case 1.5:sp.StopBits = StopBits.OnePointFive;break;case 2:sp.StopBits = StopBits.Two;break;default:MessageBox.Show(Error:参数不正确, Error); break;}switch (str3){case NONE:sp.Parity = Parity.None; break;case ODD:sp.Parity = Parity.Odd; break;case EVEN:sp.Parity = Parity.Even; break;default:4MessageBox.Show(Error:参数不正确, Error); break;}sp.DataBits = int5;//数据位sp.Parity = Parity.Even;//设置串口属性sp.Open();//打开串口button1.Text = 关闭串口;textBox1.Text = Convert.ToString(sp.PortName) + 已开启~; }else{sp.Close();button1.Text = 打开串口;groupBox3.Enabled = false;//LED控制界面变灰色textBox1.Text = Convert.ToString(sp.PortName) + 已关闭~; } }catch (Exception er){MessageBox.Show(Error: + er.Message, Error);return;}5}private void Form1_Load(object sender, EventArgs e){//初始化textBox1.Text = 欢迎使用简易的串口助手~;groupBox3.Enabled = false;//LED控制界面变灰色groupBox6.Enabled = false;groupBox7.Enabled = false;groupBox8.Enabled = false;button3.Enabled = false;button6.Enabled = false;timer1.Start();try{foreach (string com in System.IO.Ports.SerialPort.GetPortNames()) 获取串行口名称boBox1.Items.Add(com);//默认设置comboBox1.SelectedIndex = 0;//选择第一个com口comboBox2.SelectedIndex = 4;//波特率4800comboBox3.SelectedIndex = 0;//校验位NONE6comboBox4.SelectedIndex = 0;//停止位为1comboBox5.SelectedIndex = 0;//数据位为8}catch{MessageBox.Show(找不到通讯端口~, 串口调试助手); }}private void timer1_Tick(object sender, EventArgs e){label6.Text = DateTime.Now.ToString();}private void button2_Click(object sender, EventArgs e){try {if (button2.Text == 开启){groupBox6.Enabled = true; radioButton1.Checked = false; radioButton2.Checked = false; radioButton3.Checked = false; radioButton4.Checked = false; checkBox1.Checked = false;7checkBox2.Checked = false; //自动checkBox3.Checked = false; checkBox4.Checked = false; checkBox5.Checked = false; checkBox6.Checked = false; checkBox7.Checked = false; checkBox8.Checked = false; button3.Enabled = true;textBox2.Text = String.Empty; button2.Text = 关闭;}else{groupBox6.Enabled = false; button3.Enabled = false;button2.Text = 开启;textBox2.Text = String.Empty;}}catch (Exception er){MessageBox.Show(Error: + er.Message, Error); return;8}}private void button3_Click(object sender, EventArgs e) {groupBox6.Enabled = true;label7.Text = 已发送;if (textBox2.Text == )MessageBox.Show(发送失败,请选择发送的数据~); else sp.WriteLine(textBox2.Text);//往串口写数据}private void checkBox1_CheckedChanged(object sender, EventArgs e){try {if (checkBox1.Checked){checkBox1.Checked = true;checkBox2.Checked = false;篇二:上位机与下位机之间的连接第一章上位机与下位机1.1 上位机与下位机的概念上位机和下位机,一般是指集中控制系统中的PC机和现场的工控机。
基于VC++的Modbus协议串口通信设计与实现

158串行通讯的距离从几米到几千米,传输线最少时只需一根即可实现通信,比较适合远距离通讯传输,在工业控制、测量设备以及远程监控中串行通讯广泛使用。
Microsoft Visual C++作为微软公司面向对象程序的开发平台,具有集成的开发环境,支持C、C++等编程语言。
ModBus协议在OSI七层参考模型中作为应用层协议,是全球最早应用于工业现场的总线协议。
目前,ModBus协议已经成为一种通用工业标准,不同设备通过ModBus协议可以组成工业网络,实现集中监控。
本设计针对V C ++开发平台设计并实现了基于ModBus协议的串口通讯软件。
1 串口通信原理1.1 串行通信的特点串口通信的特点是数据流在通讯传输线上逐位按顺序分时进行传输,每次通信双方传输一个数据位,也就是一个二进制数0或1,以最小单位二进制数0或1逐位进行传输。
串口通信分为三种传输模式,分别是全双工、半双工和单工,具体划分是按照数据流的方向划分,数据通常是在通信双方的二个站点之间点对点进行传输[1]。
1.2 串行通信的接口标准一个完整的的串行通信系统如图1所示,该系统包括数据终端设备(Data Terminal Equipment ,DTE)和数据通信设备(Data Communication Equipment,DCE)。
串行接口标准定义了DTE的串行接口电路与DCE之间的连接标准,包括连接电缆、接口几何尺寸、引脚功能和电平定义等,在计算机网络中,构成网络的物理层协议。
1.3 串行传输协议通讯协议是一种对通讯双方之间进行通讯交流规则的约定。
协议中规定了双方进行通讯的数据格式、传送速度、控制字符、同步方式、检错方式及传送步骤。
通讯协议属于OSI七层参考模型中的数据链路层[2]。
串口通讯按照同步方法的不同分为异步传输和同步传输。
1.4 Modbus通信协议按照OSI七层参考模型,Modbus通讯协议属于应用层协议,是一种全球通用的工业标准。
串口通信协议

串口通信协议协议名称:串口通信协议一、协议目的本协议旨在规范串口通信的数据传输格式和通信机制,确保串口设备之间的稳定和可靠的数据交换。
二、协议范围本协议适合于使用串口进行数据通信的设备,包括但不限于计算机、嵌入式系统、传感器、控制器等。
三、协议要求1. 数据帧格式:采用异步串行通信方式,数据传输采用字节为单位,每一个数据帧包括起始位、数据位、校验位和住手位。
2. 波特率:协议支持多种波特率,包括但不限于9600、19200、38400、57600、115200等。
3. 数据位:支持数据位的设置,包括但不限于5位、6位、7位、8位。
4. 奇偶校验位:支持奇偶校验位的设置,包括但不限于无校验、奇校验、偶校验。
5. 住手位:支持住手位的设置,包括但不限于1位、1.5位、2位。
6. 数据传输方式:支持全双工和半双工两种传输方式。
7. 数据流控制:协议支持硬件流控和软件流控两种方式,可根据实际需求选择。
8. 错误处理:协议要求设备在接收到错误数据时能够进行错误处理,包括但不限于丢弃错误数据、重新请求数据等。
四、协议内容1. 数据帧格式- 起始位:1个起始位,表示数据帧的开始。
- 数据位:根据实际需求设置数据位长度。
- 校验位:1个校验位,用于校验数据的正确性。
- 住手位:根据实际需求设置住手位长度。
2. 数据传输- 数据传输采用点对点的方式,每一个设备都有惟一的地址。
- 发送方将数据按照数据帧格式发送给接收方,接收方在接收到完整的数据帧后进行解析。
- 发送方和接收方在传输前需要进行波特率、数据位、奇偶校验位、住手位等参数的商议。
3. 错误处理- 发送方在发送数据时,如果发现数据错误,应即将住手发送,并进行错误处理。
- 接收方在接收到错误数据时,应即将通知发送方,并进行错误处理。
- 错误处理方式可以根据实际需求进行定义,例如重新请求数据、丢弃错误数据等。
五、协议实施1. 设备创造商应根据本协议的要求设计和创造串口设备,并确保设备符合本协议的规范。
串口通信协议的制定及配置流程

串口通信协议的制定及配置流程串口通信协议串口通信指串口按位(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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c串口通信协议设计篇一:RS-232-C串口通讯协议解析RS-232-C串口通讯协议解析串行通信接口标准经过使用和发展,目前已经有几种。
但都是在RS-232标准的基础上经过改进而形成的。
所以,以RS-232C为主来讨论。
在讨论RS-232C接口标准的内容之前,先说明两点.首先,RS-232-C标准最初是远程通信连接数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equipment)而制定的。
因此这个标准的制定,并未考虑计算机系统的应用要求。
但目前它又广泛地被借来用于计算机(更准确的说,是计算机接口)与终端或外设之间的近端连接标准。
显然,这个标准的有些规定及和计算机系统是不一致的,甚至是相矛盾的。
有了对这种背景的了解,我们对RS-232C标准与计算机不兼容的地方就不难理解了其次,RS-232C标准中所提到的“发送”和“接收”,都是站在DTE立场上,而不是站在DCE的立场来定义的。
由于在计算机系统中,往往是CPU和I/O设备之间传送信息,两者都是DTE,因此双方都能发送和接收。
RS- 323C标准是美国EIA(电子工业联合会)与BELL 等公司一起开发的1969年公布的通信协议。
它适合于数据传输速率在0~XX0b/s范围内的通信。
这个标准对串行通信接口的有关问题,如信号线功能、电器特性都作了明确规定。
由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。
一、RS-232-CRS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA(Electronic Industry Association)代表美国电子工业协会,RS(ecomme ed standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。
它规定连接电缆和机械、电气特性、信号功能及传送过程。
常用物理标准还有有EIA�RS-232-C、EIA�RS-422-A、 EIA�RS-423A、EIA�RS-485。
这里只介绍EIA�RS-232-C(简称232,RS232)。
例如,目前在IBM PC机上的COM1、COM2接口,就是RS-232C接口。
1.电气特性EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。
在TxD和RxD上:逻辑1(MARK)=-3V~-15V逻辑0(SPACE)=+3~+15V在RTS、CTS、DSR、DTR和DCD等控制线上:信号有效(接通,ON状态,正电压)=+3V~+15V信号无效(断开,OFF状态,负电压)=-3V~-15V图1以上规定说明了RS-323C标准对逻辑电平的定义。
对于数据(信息码):逻辑“1”(传号)的电平低于-3V,逻辑“0”(空号)的电平告语+3V;对于控制信号;接通状态(ON)即信号有效的电平高于+3V,断开状态(OFF)即信号无效的电平低于-3V,也就是当传输电平的绝对值大于3V时,电路可以有效地检查出来,介于-3~+3V之间的电压无意义,低于-15V或高于+15V的电压也认为无意义,因此,实际工作时,应保证电平在±(3~15) V之间。
EIA-RS-232C与TTL转换:EIA-RS-232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。
因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。
实现这种变换的方法可用分立元件,也可用集成电路芯片。
目前较为广泛地使用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、 SN75154可实现EIA电平到TTL电平的转换。
MAX232芯片可完成TTL←→EIA双向电平转换,图1显示了1488和1489的内部结构和引脚。
MC1488的引脚(2)、(4,5)、(9,10)和(12,13)接TTL输入。
引脚3、6、8、11输出端接EIA-RS-232C。
MC1498的14的1、4、10、13脚接EIA输入,而3、6、8、11脚接TTL输出。
具体连接方法如图2所示。
图中的左边是微机串行接口电路中的主芯片UART,它是TTL器件,右边是EIA-RS-232C连接器,要求EIA高电压。
因此,RS-232C所有的输出、输入信号都要分别经过 MC1488和MC1498转换器,进行电平转换后才能送到连接器上去或从连接器上送进来。
图22、连接器的机械特性:连接器:由于RS-232C并未定义连接器的物理特性,因此,出现了DB-25、DB-15和DB-9各种类型的连接器,其引脚的定义也各不相同。
下面分别介绍两种连接器。
(1)DB-25:PC和XT机采用DB-25型连接器。
DB-25连接器定义了25根信号线,分为4组:①异步通信的9个电压信号(含信号地SG)2,3,4,5,6,7,8,20,22②20mA电流环信号 9个(12,13,14,15,16,17,19,23,24)③空6个(9,10,11,18,21,25)④保护地(PE)1个,作为设备接地端(1脚)DB-25型连接器的外形及信号线分配如图3所示。
注意,20mA电流环信号仅IBM PC和IBM PC/XT机提供,至AT机及以后,已不支持。
图3(2)DB-9连接器在AT机及以后,不支持20mA电流环接口,使用DB-9连接器,作为提供多功能I/O卡或主板上COM1和COM2两个串行接口的连接器。
它只提供异步通信的9个信号。
DB-25型连接器的引脚分配与DB-25型引脚信号完全不同。
因此,若与配接DB-25型连接器的DCE设备连接,必须使用专门的电缆线。
电缆长度:在通信速率低于20kb/s时,RS-232C所直接连接的最大物理距离为15m(50英尺)。
最大直接传输距离说明:RS-232C标准规定,若不使用MODEM,在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50英尺)。
可见这个最大的距离是在码元畸变小于4%的前提下给出的。
为了保证码元畸变小于4%的要求,接口标准在电气特性中规定,驱动器的负载电容应小于 2500pF。
3、RS-232C的接口信号RS-232C规标准接口有25条线,4条数据线、11条控制线、3条定时线、7条备用和未定义线,常用的只有9根,它们是(1)联络控制信号线:数据装置准备好(Data set ready-DSR)——有效时(ON)状态,表明MODEM处于可以使用的状态。
数据终端准备好(Data set ready-DTR)——有效时(ON)状态,表明数据终端可以使用。
这两个信号有时连到电源上,一上电就立即有效。
这两个设备状态信号有效,只表示设备本身可用,并不说明通信链路可以开始进行通信了,能否开始进行通信要由下面的控制信号决定。
请求发送(Request to send-RTS)——用来表示DTE请求DCE发送数据,即当终端要发送数据时,使该信号有效(ON 状态),向MODEM请求发送。
它用来控制MODEM是否要进入发送状态。
允许发送(Clear to send-CTS)——用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。
当MODEM已准备好接收终端传来的数据,并向前发送时,使该信号有效,通知终端开始沿发送数据线TxD发送数据。
这对RTS/CTS请求应答联络信号是用于半双工MODEM 系统中发送方式和接收方式之间的切换。
在全双工系统中作发送方式和接收方式之间的切换。
在全双工系统中,因配置双向通道,故不需要RTS/CTS联络信号,使其变高。
接收线信号检出(Received Line detection-RLSD)——用来表示DCE已接通通信链路,告知DTE准备接收数据。
当本地的MODEM收到由通信链路另一端(远地)的 MODEM送来的载波信号时,使RLSD信号有效,通知终端准备接收,并且由MODEM将接收下来的载波信号解调成数字两数据后,沿接收数据线RxD送到终端。
此线也叫做数据载波检出(Data Carrierdectection-DCD)线。
振铃指示(Ringing-RI)——当MODEM收到交换台送来的振铃呼叫信号时,使该信号有效(ON状态),通知终端,已被呼叫。
(2)数据发送与接收线:发送数据(Transmitted data-TxD)——通过TxD终端将串行数据发送到MODEM,(DTE→DCE)。
接收数据(Received data-RxD)——通过RxD线终端接收从MODEM发来的串行数据,(DCE→DTE)。
(3)地线有两根线SG、PG——信号地和保护地信号线,无方向。
上述控制信号线何时有效,何时无效的顺序表示了接口信号的传送过程。
例如,只有当DSR和DTR都处于有效(ON)状态时,才能在DTE和DCE之间进行传送操作。
若DTE要发送数据,则预先将DTR线置成有效(ON)状态,等CTS线上收到有效(ON)状态的回答后,才能在TxD线上发送串行数据。
这种顺序的规定对半双工的通信线路特别有用,因为半双工的通信才能确定DCE已由接收方向改为发送方向,这时线路才能开始发送。
2个数据信号:发送TXD;接收RXD。
1个信号地线:SG。
6个控制信号:DSR 数传机(即modem)准备好,Data Set Ready。
DTR 数据终端(DTE,即微机接口电路,如Intel8250/8251,16550)准备好,DataTerminal Ready。
RTS DTE请求DCE发送(Request To Send)。
CTS DCE允许DTE发送(Clear To Send),该信号是对RTS信号的回答。
DCD 数据载波检出,Data Carrier Detection当本地DCE设备(Modem)收到对方的DCE设备送来的载波信号时,使DCD有效,通知DTE准备接收,并且由DCE将接收到的载波信号解调为数字信号,经RXD线送给DTE。
RI 振铃信号 Ringing当DCE收到交换机送来的振铃呼叫信号时,使该信号有效,通篇二:串口通信协议详解对单一设备的控制操作比较方便,但是要实现对多个设备的控制就不那么简单了。
它需要的时序、接口标准、通信协议等相互配合,才能够实现相互之间的通信。
最近开始了《智能化车位指示管理系统》的设计,才体会到设计者的艰辛。
设计既是体力劳动,又是脑力劳动。
说他是体力劳动是因为在这期间有很多重复性的工作,至于脑力劳动那是不言而喻。