当前位置:   article > 正文

C#-Winform上位机快速开发_c#开发上位机

c#开发上位机

C#开发上位机网上资料五花八门,为了方便自己开发需要,自己动手记录认为比较重要的关键点。

1.界面设计:

首先,粗略规定当前界面的大小,利用TableLayoutPanel控件,Dock属性Fill-填充整个布局界面,这样保证边框拉伸最大化保持界面。其次,通过设计需求,放置不同的容器、文本、图像控件,并设置控件的ColumnSpan、RowSpan属性,调整控件的列行跨度。并在对应的区域放置Button、label、TextBox等控件即可。完成整个上位机的界面设计。

2.串口通信实现:

串口扫描:通过C#提供的计时器类进行定时-2s扫描串口,将可用串口实时显示到当前comboBox控件。
 

  1. #region 串口扫描 显示可用串口 通过TimerScan的Enabed属性进行启动OR停止
  2. System.Windows.Forms.Timer TimerScan = new System.Windows.Forms.Timer();
  3. private void TimerScanInit()
  4. {
  5. TimerScan.Interval = 2000;
  6. TimerScan.Tick += new EventHandler(TimerScan_Tick);
  7. TimerScan.Enabled = true;
  8. }
  9. private void TimerScan_Tick(object sender, EventArgs e)
  10. {
  11. comboBox1.Items.Clear(); //先清理
  12. string[] ports = SerialPort.GetPortNames();
  13. comboBox1.Items.AddRange(ports);
  14. if (ports.Length > 0)
  15. {
  16. comboBox1.SelectedItem = ports[0];
  17. }
  18. }
  19. #endregion

打开串口与接收函数:

  1. #region 打开串口
  2. private static SerialPort sPort=new SerialPort(); //实例化串口类
  3. public static void Port_OpenOrClose()
  4. {
  5. try
  6. {
  7. if (!sPort.IsOpen)
  8. {
  9. sPort.PortName = PortName;
  10. sPort.BaudRate = BaudRate;
  11. sPort.DataBits = 8;
  12. sPort.StopBits = StopBits.One;
  13. sPort.Parity = Parity.None;
  14. sPort.Handshake = Handshake.None;
  15. sPort.DataReceived += Port_DataReceived;
  16. sPort.Open();
  17. }
  18. else
  19. {
  20. sPort.Close();
  21. }
  22. }
  23. catch (Exception e)
  24. {
  25. Console.WriteLine(ex.Message);
  26. }
  27. }
  28. #endregion
  1. #region 串口接收、发送函数
  2. private static void Port_DataReceived(object sender, SerialDataReceivedEventArgs e)
  3. {
  4. byte[] _revData = new byte[1024];
  5. int _len= sPort.BytesToRead;
  6. sPort.Read(_revData , 0, _revData.Length);
  7. //处理代码、干活 可以利用多线程、队列进行处理大量数据
  8. //委托刷新主界面图像
  9. this.Invoke(new Action(() =>
  10. {
  11. }));
  12. }
  13. public static void Port_Send(byte[] _sendData)
  14. {
  15. sPort.Write(_sendData,0,_sendData.Length);
  16. }
  17. #endregion

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/398473
推荐阅读
相关标签
  

闽ICP备14008679号