串口通信(Serial Communication)是一种数据传输方式,其中信息以一位接一位的方式在一条通信线路上顺序传送。与并行通信相比,串行通信使用较少的线路和连接器,因此它更适用于长距离的数据传输,并且成本较低。
串口通信的基本概念
-
位(Bit):这是最小的信息单位,在串行通信中,数据被分割成单个位来发送。
-
波特率(Baud Rate):指的是每秒钟传输的符号数或信号变化的最大次数。在二进制系统中,波特率通常等于比特率(Bits Per Second, bps),即每秒传输的位数。
-
起始位和停止位(Start and Stop Bits):用于界定每个字符的开始和结束,确保接收方能正确地识别出独立的数据块。
-
校验位(Parity Bit):可选的错误检测机制,用来检查传输过程中是否有误码发生。常见的有奇校验、偶校验等。
-
数据位(Data Bits):实际要传输的数据量,一般为5到9位不等,取决于协议设置。
-
流控制(Flow Control):用于管理数据流的速度匹配,防止快的发送设备溢出慢的接收设备。硬流控使用额外的信号线(如RTS/CTS),软流控则通过特定字符实现。
通信协议
-
握手和流控制:确保发送方不会以超过接收方处理能力的速度发送数据。硬流控使用额外的信号线(如RTS/CTS),而软流控则通过特定字符或序列实现。
-
错误检测与纠正:通过校验位、循环冗余检查(CRC)等机制来保证数据完整性。
-
同步与异步传输:同步通信依赖于时钟信号来协调收发双方;异步通信则不需要共享时钟,而是依靠起始位和停止位来界定数据包。
串口通信的标准接口
RS-232
-
特点:单端信号,点对点连接,适用于短距离(约15米)。
-
引脚定义:典型的DB9接头有9个针脚,其中包含了发送(TX)、接收(RX)、地(GND)及流控制信号等。
-
电压电平:逻辑“0”为+3V至+15V,逻辑“1”为-3V至-15V。
RS-422 和 RS-485
-
特点:差分信号,抗干扰能力强,支持多点网络配置。
-
RS-422:全双工操作,每对导线只能有一个驱动器但可有多个接收器。
-
RS-485:半双工或多主站系统,允许在同一总线上有多达32个驱动器和接收器(使用中继器可以扩展)。
-
引脚定义:一般需要两根线进行差分信号传输(A/B或D+/D-),有时还需要第三根线作为共用地线。
-
电压电平:差分电压范围从-7V到+12V不等,具体取决于应用环境。
基于C#的串口通信对象:SerialPort
字段属性
| 名称 | 说明 |
|---|---|
| PortName | 获取或设置通信端口 |
| BaudRate | 获取或设置串行波特率 |
| DataBits | 获取或设置每个字节的标准数据位长度 |
| Parity | 获取或设置奇偶校验检查协仪 |
| StopBits | 获取或设置每个字节的标准停止位数 |
| BytesToRead | 得到接收到数据的字节数 |
| BytesToWrites | 得到送往串口的字节数 |
| IsOpen | 获取一个值,判断串口是否打开 |
| ReadBufferSize | 获取或设置读取数据的缓存大小 |
| ReadTimeout | 读取超时时间 |
| WriteBufferSize | 与ReadBufferSize相对 |
| WriteTimeout | 与ReadTimeout相对 |
常用方法
| 名称 | 说明 |
|---|---|
| GetPortNames | 获取当前计算机的串行端口名称数组【静态】 |
| Open | 打开一个新的串行端口连接 |
| Read | 从SerialPort输入缓冲区中读取 |
| ReadByte | 读取一个字节的数据 |
| ReadChar | 读取一个字符的数据 |
| Write | 将数据写入串行端口输出缓冲区 |
| Close | 关闭端口连接,将IsOpen属性设置为False,并释放内部Stream对象 |
常用事件
| 名称 | 说明 |
|---|---|
| DataReceived | 表示将处理SerialPort对象的数据接收事件的方法。接收到数据时的委托回调 |

被折叠的 条评论
为什么被折叠?



