C#之windows桌面软件第十二课:电脑ADC值显示(上位机),记忆上次串口号,并用TrackBar控件显示ADC值
生活随笔
收集整理的這篇文章主要介紹了
C#之windows桌面软件第十二课:电脑ADC值显示(上位机),记忆上次串口号,并用TrackBar控件显示ADC值
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
C#之windows桌面軟件第十二課:電腦ADC值顯示(上位機),記憶上次串口號,并用TrackBar控件顯示ADC值
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.Runtime.InteropServices; namespace Adc_Display {public partial class Form1 : Form{[DllImport("kernel32")]private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);//系統(tǒng)dll導入ini寫函數(shù)[DllImport("kernel32")]private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);//系統(tǒng)dll導入ini讀函數(shù)//System.AppDomain.CurrentDomain.BaseDirectory用來得到exe文件的路徑string FileName = System.AppDomain.CurrentDomain.BaseDirectory + "data.ini";//ini文件名StringBuilder temp = new StringBuilder(255);//存儲讀出ini內(nèi)容變量string CurrentPortName;//當前串口號名字public Form1(){InitializeComponent();serialPort1.DataReceived += new SerialDataReceivedEventHandler(PortDataReceivedEvent); //串口數(shù)據(jù)接收事件 System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;//注冊一個窗口關(guān)閉的一個處理函數(shù),在關(guān)閉窗口的時候記憶串口號this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(Form1_FormClosing);}/*窗口關(guān)閉執(zhí)行此函數(shù)。窗口關(guān)閉時保存串口號,起到一個保存串口號的功能。*/private void Form1_FormClosing(object sender,EventArgs e){/*(1)在data.ini文件中保存的內(nèi)容如下:[PortData]PorName=COM3 (2)WritePrivateProfileString函數(shù)四個參數(shù)表示:第一個:串口總類。比如PortData第二個:自定義的串口名字。比如PortName第三個:要保存的串口號。第四個:data.ini文件的絕對路徑。*/WritePrivateProfileString("PortData", "PortName", CurrentPortName, FileName);}/*Form1_Load:窗口加載的時候會調(diào)用, Form1_Paint:需要繪制窗口時,都會調(diào)用 */private void Form1_Load(object sender, EventArgs e){this.Size = new Size(620, 107);//縮小/*GetPrivateProfileString讀函數(shù)參數(shù)說明如下:第一個:在PortData串口總類下面讀。第二個:在PortData串口總類下面讀名為PortName的值。第三個:如果PortName變量中的值沒有或讀失敗,就把COM1作為默認值。第四個:把從PortName變量中讀出的值保存在temp變量中。第五個:讀的字節(jié)數(shù)最大為256。第六個:在FileName變量保存的路徑下讀ini文件。*/GetPrivateProfileString("PortData", "PortName", "COM1", temp, 256, FileName);//讀取ini值,默認是COM1comboBox1.Text = temp.ToString();//temp是數(shù)組,把他變?yōu)樽址?#xff0c;顯示在 comboBox1中}TrackBar[] GetTrackBar(){return new TrackBar[] { trackBar1, trackBar2, trackBar3, trackBar4, trackBar5, trackBar6, trackBar7, trackBar8, trackBar9, trackBar10,};//返回一個對象數(shù)組}private void PortDataReceivedEvent(object sender, SerialDataReceivedEventArgs args) //串口數(shù)據(jù)接收{(diào)TrackBar[] MytrackBar = GetTrackBar();byte[] Data = new byte[serialPort1.BytesToRead];serialPort1.Read(Data, 0, Data.Length);//讀foreach (byte MyData in Data){for (int i = 1; i < 10; i++){MytrackBar[10 - i].Value = MytrackBar[10 - i - 1].Value;}trackBar1.Value = (int)MyData;string str = MyData.ToString("x");//textBox1.Text = "0x" + (str.Length == 1 ? "0" + str : str); }}private void button1_Click(object sender, EventArgs e){if (serialPort1.IsOpen)//判斷{groupBox2.Visible = false; //第二個框框不可見this.Size = new Size(620, 107); //縮小serialPort1.Close();//此處可不加try,catchTrackBar[] MyProgeressBar = GetTrackBar();foreach (TrackBar theBar in MyProgeressBar)//遍歷,每個trackBar歸零{theBar.Value = 0;}button1.Text = "打開串口";}else{try{serialPort1.PortName = comboBox1.Text;//串口號serialPort1.Open(); //打開CurrentPortName = comboBox1.Text;groupBox2.Visible = true; //第二個框框可見this.Size = new Size(620, 436); //放大button1.Text = "關(guān)閉串口";//按鍵標題}catch{MessageBox.Show("串口打開錯誤", "錯誤");}}}} }www.DoYoung.net(部分代碼來至杜洋工作室)
總結(jié)
以上是生活随笔為你收集整理的C#之windows桌面软件第十二课:电脑ADC值显示(上位机),记忆上次串口号,并用TrackBar控件显示ADC值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#之windows桌面软件第十一课:电
- 下一篇: C#之windows桌面软件第十三课:C