using System; using System.Collections.Generic; using System.IO.Ports; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace RS485Test { internal class Program { static void Main(string[] args) { // 创建 SerialPort 对象 SerialPort serialPort = new SerialPort(); try { // 配置串口参数 serialPort.PortName = "COM2"; // 替换为实际使用的串口号 serialPort.BaudRate = 9600; // 波特率 serialPort.DataBits = 8; // 数据位 serialPort.StopBits = StopBits.One; // 停止位 serialPort.Parity = Parity.None; // 校验位 // 打开串口 serialPort.Open(); Console.WriteLine("串口已打开"); // 注册数据接收事件 serialPort.DataReceived += SerialPort_DataReceived; // 发送数据到RS-485设备 string messageToSend = "Hello RS-485 Device!"; byte[] dataToSend = System.Text.Encoding.ASCII.GetBytes(messageToSend); serialPort.Write(dataToSend, 0, dataToSend.Length); Console.WriteLine($"发送数据: {messageToSend}"); // 等待一段时间以接收响应 Thread.Sleep(20000); // 关闭串口 serialPort.Close(); Console.WriteLine("串口已关闭"); } catch (Exception ex) { Console.WriteLine($"发生错误: {ex.Message}"); } Console.WriteLine("按任意键退出..."); Console.ReadKey(); } // 数据接收事件处理函数 private static void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { SerialPort sp = (SerialPort)sender; string receivedData = sp.ReadExisting(); Console.WriteLine($"接收到数据: {receivedData}"); } } }