| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- 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}");
- }
- }
- }
|