使用visual studio 制作上位機(jī)在嵌入式開發(fā)的后期,,客戶往往需要調(diào)試一些參數(shù),為減少與工程師的反復(fù)對(duì)接,,反復(fù)更新程序,,此時(shí)開發(fā)一款相應(yīng)的上位機(jī),通過(guò)數(shù)據(jù)的傳輸來(lái)進(jìn)行相關(guān)參數(shù)的修改,,顯的尤為重要,,今天我們就利用visual studio來(lái)開發(fā)一款通過(guò)電腦串口進(jìn)行通訊的上位機(jī)軟件。 1.新建工程(1)新建:文件?新建?項(xiàng)目 2.放置組件,,組件,按鈕等接下來(lái)我會(huì)介紹幾個(gè)基本的組件,,這幾個(gè)組件基本能夠覆蓋我們平時(shí)調(diào)試需要的功能:
3.放置串口,放置定時(shí)器,!一般我們制作上位機(jī)的目的是與下位機(jī)進(jìn)行通訊,,所以我們必須啟用串口通訊功能。切記添加串口和定時(shí)器,。 4.串口相關(guān)設(shè)置串口相關(guān)的設(shè)置主要包括以下5個(gè)組件: 布局好之后,我們需要對(duì)相應(yīng)的組件添加功能代碼,,已實(shí)現(xiàn)相應(yīng)的組件功能,。 搜索串口雙擊搜索串口button組件添加如下代碼: //掃描串口private void button1_Click(object sender, EventArgs e){SearchAndAddSerialToComboBox(serialPort2,comboBox2); //掃描并講課用串口添加至下拉列表}private void SearchAndAddSerialToComboBox(SerialPort MyPort, ComboBox MyBox){ //將可用端口號(hào)添加到ComboBoxstring[] MyString = new string[20]; //最多容納20個(gè),太多會(huì)影響調(diào)試效率string Buffer; //緩存MyBox.Items.Clear(); //清空ComboBox內(nèi)容for (int i = 1; i < 20; i++) //循環(huán){try //核心原理是依靠try和catch完成遍歷{Buffer = 'COM' + i.ToString();MyPort.PortName = Buffer;MyPort.Open(); //如果失敗,,后面的代碼不會(huì)執(zhí)行MyString[i - 1] = Buffer;MyBox.Items.Add(Buffer); //打開成功,,添加至下倆列表MyPort.Close(); //關(guān)閉}catch{}}// MyBox.Text = MyString[0]; //初始化} 選擇串口選擇串口的ComboBox組件無(wú)需添加代碼 選擇波特率選擇波特率的ComboBox組件無(wú)需添加代碼 打開串口雙擊打開串口組件,添加如下代碼:注意你所添加的串口組件名稱 private void button2_Click(object sender, EventArgs e){try{serialPort2.PortName = comboBox2.Text;//開啟的串口名稱為選擇串口的ComboBox組件中的內(nèi)容//serialPort1.BaudRate = 9600;serialPort2.BaudRate = Convert.ToInt32(comboBox1.Text);//將選擇波特率ComboBox組件中的數(shù)據(jù)轉(zhuǎn)為Int型,,并且進(jìn)行波特率的設(shè)置serialPort2.Open();//打開串口button2.Enabled = false;//打開串口按鈕不可用button3.Enabled = true;//關(guān)閉串口可用 // timer1.Start();}catch//如果打開串口失敗 需要做如下警示{MessageBox.Show('打開串口失敗,,請(qǐng)檢查相關(guān)設(shè)置,。', '錯(cuò)誤');}} 關(guān)閉串口雙擊關(guān)閉串口組件,添加如下代碼: private void button3_Click(object sender, EventArgs e){try{serialPort2.Close();//關(guān)閉串口button2.Enabled = true;//打開串口按鈕可用button3.Enabled = false;//關(guān)閉串口按鈕不可用}catch (Exception err)//一般情況下關(guān)閉串口不會(huì)出錯(cuò),,所以不需要加處理程序{}} 5.發(fā)送數(shù)據(jù)假設(shè):button5按鍵為發(fā)送數(shù)據(jù)按鈕: serialPort2.Write(dataBuf, 0, 6); 如下代碼邏輯可供參考,注意打開串口,,以及相關(guān)警示的設(shè)置: ```c private void button5_Click(object sender, EventArgs e){f_run_pass_fail = 1;f_send_data = true;timer1Count = 0;if (button2.Enabled)//如果還沒有打開串口{MessageBox.Show('請(qǐng)打開串口', '提示');}else if (checkBox1.Checked == false){MessageBox.Show('請(qǐng)選定頭碼,!', '提示');}else{NormalData();serialPort2.Write(dataBuf, 0, 6);// timer1.Start();}} 6.小結(jié)上述內(nèi)容為創(chuàng)建上位機(jī)軟件的最基礎(chǔ)代碼原理,有任何問題,,歡迎留言交流,。 |
|