C#做的串口通信助手可發可收簡單(免費開源)

C#做的串口通信助手可發可收簡單(免費開源)

最近在做物聯網相關的項目,要用到串口,所以今天做一個C#的串口上位機,供大家參考,程序如果有不對希望大家指正,謝謝!
首先看一下效果
在這裏插入圖片描述
現在開始製作我們的串口小DEMO
首先打開VS(我這裏是VS2013)
在這裏插入圖片描述點擊文件
在這裏插入圖片描述
然後點擊項目
在這裏插入圖片描述
然後新建一個C#的窗口程序,下面的路徑自己修改
在這裏插入圖片描述
然後就建好工程了,下面是佈局,在左邊的工具箱裏拖自己想要的控件即可。
在這裏插入圖片描述
這個根據自己的喜好來擺放
我這裏添加了4個GroupBox控件,還有5個Lable控件以及幾個按鈕。這都是比較簡單。
至於控件的name自己定,根據代碼修改就好。
在這裏插入圖片描述
然後添加一個串口的組件SerialPort.
下面是代碼部分。
首先是初始化

 private void Form1_Load(object sender, EventArgs e)//加載時初始化
        {

            for(int i=0;i<20;i++)
            {
                cbxPort.Items.Add("COM" + (i + 1));
            }
            cbxPort.SelectedIndex=4;


            //加載常用的波特率
            cbxBaud.Items.Add("1200");
            cbxBaud.Items.Add("2400");
            cbxBaud.Items.Add("4800");
            cbxBaud.Items.Add("9600");
            cbxBaud.Items.Add("19200");
            cbxBaud.Items.Add("38400");
            cbxBaud.Items.Add("115200");
            cbxBaud.SelectedIndex = 6;

            //加載停止位
            cbxStopBits.Items.Add("0");
            cbxStopBits.Items.Add("1");
            cbxStopBits.Items.Add("1.5");
            cbxStopBits.Items.Add("2");
            cbxStopBits.SelectedIndex = 1;

            //加載數據位
            cbxData.Items.Add("8");
            cbxData.Items.Add("7");
            cbxData.Items.Add("6");
            cbxData.Items.Add("5");
            cbxData.SelectedIndex = 0;

            //加載奇偶校驗位
            cbxParity.Items.Add("無");
            cbxParity.Items.Add("奇校驗");
            cbxParity.Items.Add("偶校驗");
            cbxParity.SelectedIndex = 0;
        }

這一部分是初始化佈局。

 private void but_check_Click(object sender, EventArgs e)
        {

            cbxPort.Items.Clear();    //掃描前清除當前串口號中的所有串口名稱
            for (int i = 0; i < 20; i++)
            {
                try
                {
                    serialPort1.PortName = "COM" + (i + 1).ToString();
                    serialPort1.Open();
                    serialPort1.Close();
                    cbxPort.Items.Add("COM" + (i + 1).ToString());
                    cbxPort.SelectedIndex = 0;
                    return ;
               
                }
                catch (Exception)
                {
                    continue;
                }
            }
               
            MessageBox.Show("沒有找到可用的串口!", "錯誤");
        }

這一部分是掃描串口

 private void but_open_Click(object sender, EventArgs e)
        {
            
            if(but_open.Text=="關閉串口")
            {

                serialPort1.Close();
                but_open.Text = "打開串口";
                cbxPort.Enabled = true;
                cbxBaud.Enabled = true;
                cbxData.Enabled = true;
                cbxStopBits.Enabled = true;
                cbxParity.Enabled = true;
                //re_rbnchar.Enabled = true;
                //re_rbnHex.Enabled = true;

                return;
            }

            serialPort1.PortName = cbxPort.Text;//設置端口號

            serialPort1.BaudRate = int.Parse(cbxBaud.Text);
           
            if (cbxStopBits.Text.Trim() == "0")    //設置停止位
            {
                serialPort1.StopBits = StopBits.None;
            }
            else if (cbxStopBits.Text.Trim() == "1.5")
            {
                serialPort1.StopBits = StopBits.OnePointFive;
            }
            else if (cbxStopBits.Text.Trim() == "2")
            {
                serialPort1.StopBits = StopBits.Two;
            }
            else
            {
                serialPort1.StopBits = StopBits.One;
            }

            serialPort1.DataBits = Convert.ToInt16(cbxData.Text.Trim());    //設置數據位

            if (cbxParity.Text.Trim() == "奇校驗")    //設置校驗
            {
                serialPort1.Parity = Parity.Odd;
            }
            else if (cbxParity.Text.Trim() == "偶校驗")
            {
                serialPort1.Parity = Parity.Even;
            }
            else
            {
                serialPort1.Parity = Parity.None;
            }

            try
            {

                serialPort1.Open();
                but_open.Text = "關閉串口";
                cbxPort.Enabled = false;
                cbxBaud.Enabled = false;
                cbxData.Enabled = false;
                cbxStopBits.Enabled = false;
                cbxParity.Enabled = false;
               
            }
            catch (Exception)
            {
            
                MessageBox.Show("串口被佔用或無效", "錯誤");
            }
        }

這裏是打開或關閉串口。

還有部分代碼比較長沒有貼上來,大家可以自行下載。

在這裏插入圖片描述
關注微信公衆號“智慧小巷”回覆002即可獲得程序全部源碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章