久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

使用visual studio 制作上位機(jī)2021

 吳敬銳 2022-11-10 發(fā)布于廣東

使用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)目
新建項(xiàng)目
(2)選擇Visual C#下面的Windows 桌面 ? Windows窗體應(yīng)用(.NET Framework)? 輸入項(xiàng)目名稱 ? 設(shè)置保存路徑 ? 點(diǎn)擊確認(rèn)
確認(rèn)上位機(jī)樣式
(3)等待創(chuàng)建工程:
等待幾秒鐘之后,,項(xiàng)目工程會(huì)創(chuàng)建完畢,。我們會(huì)得到一個(gè)最基本的窗口。這其實(shí)就是我們的畫布,,接下來(lái)我們需要哪些組件,我們就可以自己手動(dòng)添加進(jìn)去,。
工程創(chuàng)建完畢

2.放置組件,,組件,按鈕等

接下來(lái)我會(huì)介紹幾個(gè)基本的組件,,這幾個(gè)組件基本能夠覆蓋我們平時(shí)調(diào)試需要的功能:

  1. 組件所在位置:視圖?工具箱
    工具箱

  2. 常用組件及如何放置控件
    我們最常用的組件在“公共控件”,,“容器”和“組件”,這三個(gè)分組里面,。
    常用控件
    放置控件有兩種方法:
    方法一:雙擊相應(yīng)的控件,,該控件就會(huì)出現(xiàn)在你的窗口當(dāng)中。
    方法二:點(diǎn)擊相應(yīng)的圖標(biāo),,拖拽到我們的窗口當(dāng)中,。
    放置控件方法

  3. Lable :標(biāo)簽。主要功能:用于注釋。
    我們添加的一些按鈕或者文本框,,往往需要一個(gè)文本注釋,,來(lái)說(shuō)明是做什么的。這個(gè)時(shí)候我們就需要用到Label這個(gè)控件,。
    添加完控件之后,,右擊控件,選擇屬性,。
    在這里插入圖片描述
    通過(guò)修改右下角窗口中的label1屬性中的Text內(nèi)容,,即可修改該標(biāo)簽的顯示。
    在這里插入圖片描述
    注意,!標(biāo)簽的名稱請(qǐng)不要修改,,標(biāo)簽的名稱唯一,標(biāo)簽名稱用于不同標(biāo)簽的區(qū)分,。
    在這里插入圖片描述
    有關(guān)字體大小,,以及背景顏色的修改方法,可自行百度,,此處不做贅述,。

  4. ComboBox :下拉列表框。主要功能,,數(shù)據(jù)的選擇和輸入,。
    在這里插入圖片描述
    同樣右擊屬性,在Text選項(xiàng)框中,,我們可以設(shè)置改下拉列表的初始化默認(rèn)值,。
    在這里插入圖片描述

3.放置串口,放置定時(shí)器,!

一般我們制作上位機(jī)的目的是與下位機(jī)進(jìn)行通訊,,所以我們必須啟用串口通訊功能。切記添加串口和定時(shí)器,。
1.放置串口:組件?SerialPort
2.放置定時(shí)器:組件?Timer
在這里插入圖片描述
定時(shí)器,,定時(shí)時(shí)間設(shè)置:
在這里插入圖片描述

4.串口相關(guān)設(shè)置

串口相關(guān)的設(shè)置主要包括以下5個(gè)組件:
(1)搜索串口(button)
(2)選擇串口(ComboBox)
(3)波特率設(shè)置(ComboBox)
(4)打開串口(button)
(5)關(guān)閉串口(button)
在這里插入圖片描述

布局好之后,我們需要對(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ù)按鈕:
我們?cè)趯?duì)相應(yīng)的buf數(shù)組進(jìn)行賦值之后,,需要進(jìn)行如下操作:
發(fā)送數(shù)據(jù)的函數(shù)為 serialPort2.Write(dataBuf, 0, 6)
參數(shù)為:發(fā)送的數(shù)組名稱,發(fā)送數(shù)據(jù)起始位,,發(fā)送數(shù)據(jù)長(zhǎng)度,。

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ǔ)代碼原理,有任何問題,,歡迎留言交流,。
本篇博文不定時(shí)更新完善。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多