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即可獲得程序全部源碼。