基本概念
R232
-
通讯方式:RS232是一种单端通信标准,即信号传输通过一对数据线(TXD和RXD)完成,数据传输距离较短(一般不超过15米)。
-
数据传输方向:RS232通常是点对点通信,一个上位机与一个设备通信。
-
电平信号:RS232使用较大的电压变化(+12V到-12V)来表示数据的不同状态,电平较为脆弱,容易受到干扰。
R485
串口通讯实现
C#为串口通信提供了System.IO.Ports.SerialPort类,这个类可以帮助我们通过RS232或RS485接口与外部设备进行数据交换。
基本操作
在C#中,串口通信的基本操作包括:设置串口、打开串口、读取数据、写入数据、关闭串口
- using System;
- using System.IO.Ports;
- public class SerialPortExample
- {
- private SerialPort _serialPort;
- public SerialPortExample()
- {
- _serialPort = new SerialPort();
- }
- public void ConfigurePort(string portName, int baudRate, Parity parity, int dataBits, StopBits stopBits)
- {
- _serialPort.PortName = portName; // 设置串口名称,如COM1、COM2等
- _serialPort.BaudRate = baudRate; // 设置波特率,常见的如9600、115200
- _serialPort.Parity = parity; // 设置奇偶校验,None、Odd、Even等
- _serialPort.DataBits = dataBits; // 设置数据位数,常见的是8位
- _serialPort.StopBits = stopBits; // 设置停止位,常见的是1位或2位
- _serialPort.Handshake = Handshake.None; // 设置流控,None为不使用流控
- _serialPort.ReadTimeout = 500; // 设置读取超时时间(毫秒)
- _serialPort.WriteTimeout = 500; // 设置写入超时时间(毫秒)
- }
- public void OpenPort()
- {
- if (!_serialPort.IsOpen)
- {
- _serialPort.Open();
- Console.WriteLine("串口已打开");
- }
- }
- public void ClosePort()
- {
- if (_serialPort.IsOpen)
- {
- _serialPort.Close();
- Console.WriteLine("串口已关闭");
- }
- }
- public void WriteData(string data)
- {
- if (_serialPort.IsOpen)
- {
- _serialPort.WriteLine(data);
- Console.WriteLine("数据已写入: " + data);
- }
- }
- public string ReadData()
- {
- if (_serialPort.IsOpen)
- {
- return _serialPort.ReadLine();
- }
- return string.Empty;
- }
- }
复制代码
参数说明
-
PortName:指定要使用的串口名称(例如COM1、COM2等)。
-
BaudRate:设置通信的波特率,它决定了数据传输的速度,常见的波特率包括9600、115200等。
-
Parity:设置奇偶校验方式,通常有None、Odd、Even等。
-
DataBits:设置数据位,常见的是8位。
-
StopBits:设置停止位,常见的是1位或2位。
-
Handshake:设置流控方式,None表示不使用流控,其他如XOnXOff、RequestToSend等表示不同的流控模式。
-
ReadTimeout 和 WriteTimeout:控制读取和写入超时,单位为毫秒。
数据读取与写入
数据处理
在实际应用中,数据读取和写入通常是异步的,因此可以使用事件处理来应对设备发来的数据。
R232和R485的区别
|
你好 社媒如推特烦人少独能不能攻击干掉号啊 如满蒙朝彝 了解关注一下
使用道具 举报