C#-Winform上位机快速开发

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

1.界面设计:

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

2.串口通信实现:

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

#region 串口扫描 显示可用串口 通过TimerScan的Enabed属性进行启动OR停止

System.Windows.Forms.Timer TimerScan = new System.Windows.Forms.Timer();

private void TimerScanInit()
{
      TimerScan.Interval = 2000;
      TimerScan.Tick += new EventHandler(TimerScan_Tick);
      TimerScan.Enabled = true;
}

private void TimerScan_Tick(object sender, EventArgs e)
 {
      comboBox1.Items.Clear(); //先清理
      string[] ports = SerialPort.GetPortNames();
      comboBox1.Items.AddRange(ports);
      if (ports.Length > 0)
      {
          comboBox1.SelectedItem = ports[0];
      }
}

#endregion

打开串口与接收函数:

#region 打开串口
private static SerialPort sPort=new SerialPort();  //实例化串口类

public static void Port_OpenOrClose()
        {
            try
            {
                if (!sPort.IsOpen)
                {
                    sPort.PortName = PortName;
                    sPort.BaudRate = BaudRate;
                    sPort.DataBits = 8;
                    sPort.StopBits = StopBits.One;
                    sPort.Parity = Parity.None;
                    sPort.Handshake = Handshake.None;
                    sPort.DataReceived += Port_DataReceived;
                    sPort.Open();
                }
                else
                {
                    sPort.Close();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(ex.Message);
            }
        }
#endregion
#region 串口接收、发送函数

private static void Port_DataReceived(object sender, SerialDataReceivedEventArgs e)
        { 
            byte[] _revData = new byte[1024];
            int _len= sPort.BytesToRead;
            sPort.Read(_revData , 0, _revData.Length);

            //处理代码、干活  可以利用多线程、队列进行处理大量数据
            //委托刷新主界面图像
            this.Invoke(new Action(() =>
            {
                
            })); 

        }
 public static void Port_Send(byte[] _sendData)
        {
            sPort.Write(_sendData,0,_sendData.Length);
        }
#endregion

 

  • 4
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#开发中,有很多快速开发框架可以帮助开发快速构建WinForm上位机。其中一个常见的开发框架是TableLayoutPanel控件。首先,可以通过规定当前界面的大小,并利用TableLayoutPanel控件的Dock属性设置为Fill,实现边框拉伸最大化保持界面。接着,根据设计需求,可以放置不同的容器、文本、图像控件,并设置控件的ColumnSpan、RowSpan属性,以调整控件的列行跨度。最后,可以在对应的区域放置Button、label、TextBox等控件,完成整个上位机界面设计。这样,开发者可以利用这个快速开发框架,快速搭建出功能强大、学习成本低、上手快的WinForm上位机。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [C#-Winform上位机快速开发](https://blog.csdn.net/qq_37212703/article/details/90403280)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Winform 快速开发框架,上位机开发,工控机程序开发,CS程序开发](https://blog.csdn.net/weixin_33835690/article/details/93623654)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值