SerialPort.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO.Ports;
  7. using System.Windows.Forms;
  8. namespace Tps_LQ_Transmitter.com
  9. {
  10. public class TransmitterSerialPort
  11. {
  12. SerialPort sp = new SerialPort(); //新建一个串口对象
  13. public void SerialOpen(string PORT)
  14. {
  15. sp.PortName = PORT; //端口号设置为com_port的值
  16. sp.BaudRate = 115200;
  17. sp.DataBits = 8;
  18. sp.StopBits = StopBits.One;//停止位设置为com_stop的值
  19. sp.Parity = Parity.Odd;//获取奇偶校验选项的值
  20. sp.ReadTimeout = 1000; //读取等待时间无限长
  21. sp.RtsEnable = true;
  22. try
  23. {
  24. if (!sp.IsOpen)
  25. {
  26. sp.Open(); //打开串口
  27. }
  28. }
  29. catch (Exception e2)
  30. {
  31. Console.WriteLine("open err:" + e2.Message);
  32. }
  33. }
  34. public void DUT_Transmitter_Ctrol1(byte ModeSelect, byte FreqSelect)
  35. {
  36. try
  37. {
  38. if (!sp.IsOpen)
  39. {
  40. sp.Open(); //打开串口
  41. }
  42. }
  43. catch (Exception e2)
  44. {
  45. Console.WriteLine("open err:" + e2.Message);
  46. }
  47. byte[] JGbuffer = new byte[4];
  48. int offset = 0;
  49. JGbuffer[offset++] = 0xEB;
  50. JGbuffer[offset++] = 0x90;
  51. JGbuffer[offset++] = ModeSelect;//切模式
  52. JGbuffer[offset++] = FreqSelect;//切频点
  53. try
  54. {
  55. sp.Write(JGbuffer, 0, JGbuffer.Length);
  56. }
  57. catch (Exception ex)
  58. {
  59. MessageBox.Show($"串口控制频点失败:{ex.Message}");
  60. throw new Exception($"write com error msg:{ex.Message}");
  61. }
  62. }
  63. public void DUT_Transmitter_Ctrol(byte ModeSelect,byte FreqSelect,byte FskSet)
  64. {
  65. try
  66. {
  67. if (!sp.IsOpen)
  68. {
  69. sp.Open(); //打开串口
  70. }
  71. }
  72. catch (Exception e2)
  73. {
  74. Console.WriteLine("open err:" + e2.Message);
  75. }
  76. byte[] JGbuffer = new byte[5];
  77. int offset = 0;
  78. JGbuffer[offset++] = 0xEB;
  79. JGbuffer[offset++] = 0x90;
  80. JGbuffer[offset++] = ModeSelect;//切模式
  81. JGbuffer[offset++] = FreqSelect;//切频点
  82. JGbuffer[offset++] = FskSet;//FSK调制模式
  83. try
  84. {
  85. sp.Write(JGbuffer, 0, JGbuffer.Length);
  86. }
  87. catch (Exception ex)
  88. {
  89. MessageBox.Show($"串口控制频点失败:{ex.Message}");
  90. throw new Exception($"write com error msg:{ex.Message}");
  91. }
  92. }
  93. public void SerialClose()
  94. {
  95. sp.Close();
  96. }
  97. }
  98. }