[C.C++] C#上位机通讯-串口通讯(R232/R485)

984 2
Honkers 2026-1-21 08:46:50 | 显示全部楼层 |阅读模式

基本概念

R232

  • 通讯方式:RS232是一种单端通信标准,即信号传输通过一对数据线(TXD和RXD)完成,数据传输距离较短(一般不超过15米)。

  • 数据传输方向:RS232通常是点对点通信,一个上位机与一个设备通信。

  • 电平信号:RS232使用较大的电压变化(+12V到-12V)来表示数据的不同状态,电平较为脆弱,容易受到干扰。

R485

  • 通讯方式:RS485采用差分信号传输,即通过两根线传输信号,使用较低的电压(如+5V和-5V)。它的优势在于抗干扰能力强,传输距离长(可达1200米),支持多点通信(即一台主机与多台设备之间进行通信)。

  • 数据传输方向:RS485支持多设备(点对多点)通信,常用在需要多个设备与主机交互的场景。

串口通讯实现 

C#为串口通信提供了System.IO.Ports.SerialPort类,这个类可以帮助我们通过RS232或RS485接口与外部设备进行数据交换。

基本操作

在C#中,串口通信的基本操作包括:设置串口、打开串口、读取数据、写入数据、关闭串口

  1. using System;
  2. using System.IO.Ports;
  3. public class SerialPortExample
  4. {
  5. private SerialPort _serialPort;
  6. public SerialPortExample()
  7. {
  8. _serialPort = new SerialPort();
  9. }
  10. public void ConfigurePort(string portName, int baudRate, Parity parity, int dataBits, StopBits stopBits)
  11. {
  12. _serialPort.PortName = portName; // 设置串口名称,如COM1、COM2等
  13. _serialPort.BaudRate = baudRate; // 设置波特率,常见的如9600、115200
  14. _serialPort.Parity = parity; // 设置奇偶校验,None、Odd、Even等
  15. _serialPort.DataBits = dataBits; // 设置数据位数,常见的是8位
  16. _serialPort.StopBits = stopBits; // 设置停止位,常见的是1位或2位
  17. _serialPort.Handshake = Handshake.None; // 设置流控,None为不使用流控
  18. _serialPort.ReadTimeout = 500; // 设置读取超时时间(毫秒)
  19. _serialPort.WriteTimeout = 500; // 设置写入超时时间(毫秒)
  20. }
  21. public void OpenPort()
  22. {
  23. if (!_serialPort.IsOpen)
  24. {
  25. _serialPort.Open();
  26. Console.WriteLine("串口已打开");
  27. }
  28. }
  29. public void ClosePort()
  30. {
  31. if (_serialPort.IsOpen)
  32. {
  33. _serialPort.Close();
  34. Console.WriteLine("串口已关闭");
  35. }
  36. }
  37. public void WriteData(string data)
  38. {
  39. if (_serialPort.IsOpen)
  40. {
  41. _serialPort.WriteLine(data);
  42. Console.WriteLine("数据已写入: " + data);
  43. }
  44. }
  45. public string ReadData()
  46. {
  47. if (_serialPort.IsOpen)
  48. {
  49. return _serialPort.ReadLine();
  50. }
  51. return string.Empty;
  52. }
  53. }
复制代码

参数说明

  • PortName:指定要使用的串口名称(例如COM1、COM2等)。

  • BaudRate:设置通信的波特率,它决定了数据传输的速度,常见的波特率包括9600、115200等。

  • Parity:设置奇偶校验方式,通常有None、Odd、Even等。

  • DataBits:设置数据位,常见的是8位。

  • StopBits:设置停止位,常见的是1位或2位。

  • Handshake:设置流控方式,None表示不使用流控,其他如XOnXOff、RequestToSend等表示不同的流控模式。

  • ReadTimeoutWriteTimeout:控制读取和写入超时,单位为毫秒。

数据读取与写入 

  • WriteData:将字符串数据通过串口发送给硬件设备。

  • ReadData:从串口接收数据,通常会使用ReadLine()方法读取一行数据。

数据处理 

在实际应用中,数据读取和写入通常是异步的,因此可以使用事件处理来应对设备发来的数据。

 R232和R485的区别

  • RS232的连接通常较为简单,采用标准的DB9或DB25接口,线缆较短。

  • RS485的通信需要特殊的硬件支持,如使用RS485转换器或接口卡,通信线路较长,且设备的终端必须有适当的终端电阻。

 

杂事杂论1995 2026-2-10 03:14:32 | 显示全部楼层

你好 社媒如推特烦人少独能不能攻击干掉号啊 如满蒙朝彝 了解关注一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行