https://www.cnblogs.com/yangfengwu/p/11087558.html
咱用這個編寫 ,版本都無所謂哈,只要自己有就可以,不同版本怎么打開
https://www.cnblogs.com/aliflycoris/p/8005955.html
C#API https://docs.microsoft.com/zh-cn/dotnet/api/?view=netframework-4.0
放幾個文本顯示
放個下拉框,用來選擇串口號
各復制出來
把串口拖上來
做一個功能,軟件啟動的時候把電腦上所有的串口號顯示到
string[] ports = System.IO.Ports.SerialPort.GetPortNames();//獲取電腦上可用串口號
看一下控件的ID
comboBox1.Items.AddRange(ports);//給comboBox1添加數據 comboBox1.SelectedIndex = comboBox1.Items.Count > 0 ? 0 : -1;//如果里面有數據,顯示第0個
如果電腦上有可用串口,會顯示
現在控制串口打開和關閉,,,,,,,改改按鈕顯示的哈,,,
讓它默認顯示打開
忘了...先設置下有可選擇的波特率
寫上常用的
1382400 921600 460800 256000 230400 128000 115200 76800 57600 43000 38400 19200 14400 9600
4800
1200
設置下默認顯示的
if (button1.Text == "打開")//如果按鈕顯示的是打開 { try//防止意外錯誤 { serialPort1.PortName = comboBox1.Text;//得到comboBox1顯示的串口內容 serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);//得到comboBox2顯示的波特率內容 serialPort1.Open();//打開串口 button1.Text = "關閉";//按鈕顯示關閉 } catch (Exception) { MessageBox.Show("打開失敗", "提示!");//對話框顯示打開失敗 } } else//要關閉串口 { try//預防串口有問題了,實際上已經關了 { serialPort1.Close();//關閉串口 } catch (Exception) { } button1.Text = "打開";//按鈕顯示打開 }
現在優化一個地方
就是串口本來連接着電腦,然后拔下來了,或者重新來了個串口,咱檢測下串口熱插拔,然后重新更新下顯示
https://blog.csdn.net/woshidaniu/article/details/44044093
開始上菜了哈,,
protected override void WndProc(ref Message m) { if (m.Msg == 0x0219)//設備改變 { if (m.WParam.ToInt32() == 0x8004)//usb串口拔出 { string[] ports = System.IO.Ports.SerialPort.GetPortNames();//重新獲取串口 comboBox1.Items.Clear(); comboBox1.Items.AddRange(ports); if (button1.Text == "關閉")//咱打開過一個串口 { if (!serialPort1.IsOpen)//咱打開的那個關閉了,說明拔插的是咱打開的 { button1.Text = "打開"; serialPort1.Dispose();//釋放掉原先的串口資源 comboBox1.SelectedIndex = comboBox1.Items.Count > 0 ? 0 : -1;//顯示獲取的第一個串口號 } else//熱插拔不是咱打開的那個 { comboBox1.Text = PortNameCopy;//默認顯示的是咱打開的那個串口號 } } else//沒有打開過 { comboBox1.SelectedIndex = comboBox1.Items.Count > 0 ? 0 : -1;//顯示獲取的第一個串口號 } } else if (m.WParam.ToInt32() == 0x8000)//usb串口連接上 { string[] ports = System.IO.Ports.SerialPort.GetPortNames();//重新獲取串口 comboBox1.Items.Clear(); comboBox1.Items.AddRange(ports); if (button1.Text == "關閉")//咱打開過一個串口 { comboBox1.Text = PortNameCopy;//默認顯示的是咱打開的那個串口號 } else { comboBox1.SelectedIndex = comboBox1.Items.Count > 0 ? 0 : -1;//顯示獲取的第一個串口號 } } } base.WndProc(ref m); }
這個是系統自帶的函數
關於那些值,,,我是自己監控的....
現在大家自己測試熱插拔哈
寫的夠多的了...放到下一節接着寫
https://www.cnblogs.com/yangfengwu/p/11087618.html