8-ESP8266 SDK開發基礎入門篇--編寫串口上位機軟件


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM