Program.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO.Ports;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading;
  7. using System.Threading.Tasks;
  8. namespace RS485Test
  9. {
  10. internal class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. // 创建 SerialPort 对象
  15. SerialPort serialPort = new SerialPort();
  16. try
  17. {
  18. // 配置串口参数
  19. serialPort.PortName = "COM2"; // 替换为实际使用的串口号
  20. serialPort.BaudRate = 9600; // 波特率
  21. serialPort.DataBits = 8; // 数据位
  22. serialPort.StopBits = StopBits.One; // 停止位
  23. serialPort.Parity = Parity.None; // 校验位
  24. // 打开串口
  25. serialPort.Open();
  26. Console.WriteLine("串口已打开");
  27. // 注册数据接收事件
  28. serialPort.DataReceived += SerialPort_DataReceived;
  29. // 发送数据到RS-485设备
  30. string messageToSend = "Hello RS-485 Device!";
  31. byte[] dataToSend = System.Text.Encoding.ASCII.GetBytes(messageToSend);
  32. serialPort.Write(dataToSend, 0, dataToSend.Length);
  33. Console.WriteLine($"发送数据: {messageToSend}");
  34. // 等待一段时间以接收响应
  35. Thread.Sleep(20000);
  36. // 关闭串口
  37. serialPort.Close();
  38. Console.WriteLine("串口已关闭");
  39. }
  40. catch (Exception ex)
  41. {
  42. Console.WriteLine($"发生错误: {ex.Message}");
  43. }
  44. Console.WriteLine("按任意键退出...");
  45. Console.ReadKey();
  46. }
  47. // 数据接收事件处理函数
  48. private static void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
  49. {
  50. SerialPort sp = (SerialPort)sender;
  51. string receivedData = sp.ReadExisting();
  52. Console.WriteLine($"接收到数据: {receivedData}");
  53. }
  54. }
  55. }