• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于C#的ADC數(shù)據(jù)采集上位機(jī)

    2014-04-29 00:00:00甘亞鵬方磊

    摘 要:數(shù)據(jù)采集系統(tǒng)應(yīng)用于工業(yè)控制各個(gè)領(lǐng)域,如何提高采集軟件的穩(wěn)定性和數(shù)據(jù)采集效率成為一個(gè)技術(shù)難點(diǎn)。利用C#語(yǔ)言程序設(shè)計(jì)的ADC數(shù)據(jù)采集上位機(jī),可以通過(guò)RS232接口讀取、轉(zhuǎn)換、存儲(chǔ)并實(shí)時(shí)顯示外圍數(shù)據(jù)源中的數(shù)據(jù)。另外,使用VS2013.NET編程環(huán)境類庫(kù)中Serial Port類和Timer類,可以提高數(shù)據(jù)采集效率、優(yōu)化容錯(cuò)機(jī)制和系統(tǒng)界面。

    關(guān)鍵詞:C#;ADC;數(shù)據(jù)采集;串口通信;RS232

    中圖分類號(hào):TP311.11

    在計(jì)算機(jī)廣泛應(yīng)用的今天,數(shù)據(jù)采集系統(tǒng)在計(jì)算機(jī)各個(gè)領(lǐng)域都具有重要的作用和影響,而串行口是計(jì)算機(jī)和外圍數(shù)據(jù)設(shè)備之間進(jìn)行數(shù)據(jù)交換的重要介質(zhì)。串口通信正是由以PC作為上位機(jī)而以單片機(jī)作為下位機(jī)組成的數(shù)據(jù)采集系統(tǒng)最可靠,最簡(jiǎn)單、靈活的通信方式[1-2]。本系統(tǒng)的上位機(jī)設(shè)計(jì)主要是把特定的數(shù)據(jù)有單片機(jī)組成的數(shù)據(jù)存儲(chǔ)裝置中讀取出來(lái),而作適當(dāng)處理后存儲(chǔ)到文本文件中。由于使用Windows API編程非常繁瑣,本系統(tǒng)上位機(jī)采用了C#語(yǔ)言在Visual Studio 2013.NET環(huán)境下完成[3]。.NET集成了大量的實(shí)用類庫(kù),本系統(tǒng)上位機(jī)部分主要使用了Serial Port類和Timer類進(jìn)行串口同信與多線編程,使得上位機(jī)軟件編程部分大為輕松[4]。

    1 系統(tǒng)的整體設(shè)計(jì)

    系統(tǒng)整體是由外圍電路和飛思卡爾K60芯片組成的ADC數(shù)據(jù)采集系統(tǒng),通過(guò)串口RS232將數(shù)據(jù)送到PC機(jī),由上位機(jī)將數(shù)存儲(chǔ)到文本庫(kù)里面。

    圖1 整體系統(tǒng)設(shè)計(jì)

    2 上位機(jī)的設(shè)計(jì)與實(shí)現(xiàn)

    上位機(jī)軟件通過(guò)RS232串行口與外圍數(shù)據(jù)模塊通信,完成數(shù)據(jù)的采集工作,然后做適當(dāng)數(shù)據(jù)處理后,進(jìn)行數(shù)據(jù)存儲(chǔ)與顯示。本設(shè)計(jì)中采用的上位機(jī)軟件是在Windows 7操作系統(tǒng)下Visual Studio 2013.NET編程環(huán)境中,利用C#語(yǔ)言編程完成,通過(guò)Serial Port類來(lái)實(shí)現(xiàn)串口通信功能,通過(guò)Timer類來(lái)完成定時(shí)采集功能,最后使用TXT文本文件來(lái)存儲(chǔ)數(shù)據(jù)。其中,Serial Port類為應(yīng)用程序提供了通過(guò)串口收發(fā)數(shù)據(jù)的簡(jiǎn)便方法,具有功能強(qiáng)大,通信快速,實(shí)時(shí)性好的特點(diǎn)[4]。

    上位機(jī)設(shè)計(jì)的重難點(diǎn)在于如何通過(guò)串口從下位機(jī)接收到數(shù)據(jù)將采集的數(shù)據(jù)實(shí)時(shí)存儲(chǔ)、顯示出來(lái)。上位機(jī)總體設(shè)計(jì)流程圖如圖2所示。

    圖2 上位機(jī)程序流程圖

    從串口接收的數(shù)據(jù)主要采用Serial Port控件,在Visual Studio 2013中添加該控件,需要設(shè)置COM口(可修改),波特率(9600),數(shù)據(jù)位(8)、停止位(1)、校驗(yàn)位(0),通過(guò)事件驅(qū)動(dòng)方式接收數(shù)據(jù)。

    2.1 主要涉及步驟

    (1)先在VS開(kāi)發(fā)環(huán)境下新建一個(gè)window工程,然后在窗體上安放一些必須的控件,如按鍵(button)、文本框(Textbox)等;

    (2)添加timer控件和Serial Port控件分別實(shí)現(xiàn)數(shù)據(jù)采集的定時(shí)和數(shù)據(jù)采集的鏈接。

    2.2 上位機(jī)程序設(shè)計(jì)(程序段)

    2.2.1 串口處理程序

    if (serialPort1.IsOpen)//判斷

    {serialPort1.Close();//此處可不加try catch

    TrackBar[] MyProgeressBar=GetTrackBar();

    foreach(TrackBar theBar in MyProgeressBar)//遍歷,每個(gè)progressbar歸零

    theBar.Value=0;

    button1.Text=\"打開(kāi)串口\";}

    else

    {try{

    serialPort1.PortName=comboBox1.Text;//串口號(hào)

    serialPort1.Open();//打開(kāi)

    groupBox2.Visible=true;//第二個(gè)框框可見(jiàn)

    button1.Text=\"關(guān)閉串口\";}//按鍵標(biāo)題

    此處的難點(diǎn)在于要將串口接收到的數(shù)據(jù)依次通過(guò)TrackBar將數(shù)據(jù)動(dòng)態(tài)顯示。

    2.2.2 獲取系統(tǒng)時(shí)間程序

    textBox2.Text=DateTime.Now.ToString();

    通過(guò)DataTime.Now獲取當(dāng)前電腦系統(tǒng)的時(shí)間,采用ToString方法會(huì)返回一個(gè)“以文本方式表示”此對(duì)象的字符串。

    2.2.3 存儲(chǔ)數(shù)據(jù)程序

    System.IO.StreamWriter swobj=System.IO.File.AppendText(\"E:\\1.txt\");

    swobj.WriteLine(this.textBox1.Text);

    swobj.Flush();

    swobj.Close();

    通過(guò)System.IO獲取軟件與系統(tǒng)的通道,再通過(guò)WriteLine函數(shù),將數(shù)據(jù)一行一行寫(xiě)入(\"E:\\1.txt\")這個(gè)文件中。最后通過(guò)swobj.Flush(),swobj.Close()兩個(gè)函數(shù)將數(shù)據(jù)不斷的存和儲(chǔ)。

    3 運(yùn)行效果及主要界面

    本軟件經(jīng)過(guò)長(zhǎng)期運(yùn)行,數(shù)據(jù)采集正常,能夠?qū)⑼鈬臄?shù)據(jù)源中的數(shù)據(jù)正確讀取并按規(guī)定格式處理,取得了較好的數(shù)據(jù)此采集效率,達(dá)到了設(shè)計(jì)預(yù)期效果,其中主要運(yùn)行界面及效果圖如下:

    圖3 初始界面圖

    圖4 運(yùn)行效果屆面圖

    由圖4可知,該上位機(jī)具有良好的系統(tǒng)界面,TrackBar實(shí)時(shí)顯示當(dāng)前采集動(dòng)態(tài)數(shù)據(jù),同時(shí)通道1實(shí)時(shí)顯示當(dāng)前所采集的數(shù)據(jù),同時(shí)顯示系統(tǒng)當(dāng)前運(yùn)行時(shí)間。

    圖5 存儲(chǔ)數(shù)據(jù)界面

    由圖5可知,TXT文本中顯示當(dāng)前的數(shù)據(jù)和采集的時(shí)間,每隔1/6s采集的數(shù)據(jù),避免了數(shù)據(jù)丟失,提高了采集效率。

    由表1,我們可知道,上位機(jī)通過(guò)長(zhǎng)時(shí)間的運(yùn)作,發(fā)現(xiàn)數(shù)據(jù)采集一直維持在萬(wàn)分之幾,都在誤差允許范圍內(nèi),說(shuō)明該軟件具有良好的容錯(cuò)機(jī)制。

    4 結(jié)束語(yǔ)

    利用C#語(yǔ)言程序設(shè)計(jì)的ADC數(shù)據(jù)采集上位機(jī),可以通過(guò)RS232接口讀取、轉(zhuǎn)換、存儲(chǔ)并實(shí)時(shí)顯示外圍數(shù)據(jù)源中的數(shù)據(jù)。另外,使用VS2013.NET編程環(huán)境類庫(kù)中Serial Port類和Timer類,可以提高數(shù)據(jù)采集效率、優(yōu)化容錯(cuò)機(jī)制和系統(tǒng)界面。

    經(jīng)過(guò)長(zhǎng)時(shí)間測(cè)試,本文所設(shè)計(jì)的上位機(jī)軟件運(yùn)行良好、性能穩(wěn)定,操作簡(jiǎn)便,較好的滿足了數(shù)據(jù)采集系統(tǒng)對(duì)上位機(jī)的要求。

    參考文獻(xiàn):

    [1]李強(qiáng).基于API函數(shù)的Windows多線程串口通信[J].科技信息,2008(17):404-405.

    [2]吳興中,歐青立.一種PC與單片機(jī)RS232串口通信設(shè)計(jì)[J].應(yīng)用天地,2009(01):74-75.

    [3]韓中華,趙貞麗,丁志文.基于C#串行類的PC機(jī)與IC卡讀寫(xiě)器串行通信的實(shí)現(xiàn)[J].科技廣場(chǎng),2007(03):79-81.

    [4]張立.C#程序設(shè)計(jì)編程經(jīng)典[M].北京:清華大學(xué)出版社,2008.

    作者簡(jiǎn)介:甘亞鵬(1990-),男,湖北崇陽(yáng)人,本科,電子與信息科學(xué)與技術(shù)專業(yè),研究方向:非線性理論控制(PID,混沌控制)、智能機(jī)器人控制算法研究、C#、C++、VB上位機(jī)的編程與應(yīng)用;方磊(1992-),男,湖北鄂州人,本科,電子與信息科學(xué)與技術(shù)專業(yè),研究方向:C#、C++、VB上位機(jī)的編程與應(yīng)用。

    作者單位:湖北科技學(xué)院 電子與信息工程學(xué)院,湖北咸寧 437100

    谢通门县| 织金县| 新兴县| 宜宾县| 治多县| 兴化市| 太谷县| 和平区| 略阳县| 迁安市| 儋州市| 沁阳市| 双柏县| 新密市| 韶关市| 连平县| 大姚县| 健康| 密山市| 策勒县| 巢湖市| 密山市| 深水埗区| 广丰县| 华池县| 柳江县| 衡南县| 平潭县| 屏山县| 汶上县| 灌阳县| 额敏县| 苍南县| 富川| 清徐县| 新河县| 灯塔市| 犍为县| 个旧市| 务川| 隆昌县|