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

    基于VC++6.0的數(shù)據(jù)可視化串口通信

    2012-01-15 03:51:40葉艷艷陳西曲
    關(guān)鍵詞:PC機(jī)流程圖控件

    葉艷艷,樊 峰,陳西曲

    (武漢工業(yè)學(xué)院電氣與電子工程學(xué)院,湖北武漢430023

    隨著計(jì)算機(jī)網(wǎng)絡(luò)及應(yīng)用的發(fā)展,通信功能即計(jì)算機(jī)與外界設(shè)備或計(jì)算機(jī)和計(jì)算機(jī)之間的數(shù)據(jù)傳輸顯得越來越重要。串口通信技術(shù)因其實(shí)現(xiàn)簡單、使用靈活方便及傳輸數(shù)據(jù)穩(wěn)定可靠等優(yōu)點(diǎn),作為一種重要的數(shù)據(jù)傳送手段得到越來越廣泛的應(yīng)用[1-5]。因此,針對串口通信在計(jì)算機(jī)等上位機(jī)中的開發(fā),在項(xiàng)目開發(fā)過程中有著重要地位。本文講解了在Windows平臺(tái)下的串口通信,在VC++6.0開發(fā)環(huán)境下,單片機(jī)與PC機(jī)之間的數(shù)據(jù)通信及實(shí)時(shí)描點(diǎn)的實(shí)現(xiàn)過程。

    1 串行通信基本原理及波形顯示實(shí)現(xiàn)

    1.1 串行通信的基本原理

    作為CPU和串行設(shè)備間的編碼轉(zhuǎn)換器,串口將從CPU發(fā)送出去的字節(jié)數(shù)據(jù)轉(zhuǎn)換為串行的位,在接收數(shù)據(jù)時(shí),又將串行的位轉(zhuǎn)換為字節(jié)數(shù)據(jù)[2]。

    在Windows環(huán)境下,串口是系統(tǒng)資源的一部分。串口在Win32中是作為文件來進(jìn)行處理的,并不直接對端口進(jìn)行操作。Win32提供了相應(yīng)的文件I/O函數(shù)與通信函數(shù),通過了解這些函數(shù)的使用,就可以編制出符合不同需要的通信程序[3]。應(yīng)用程序要使用串口進(jìn)行通信,必須在使用之前向操作系統(tǒng)提出資源申請要求即打開串口,通信完成后必須釋放資源即關(guān)閉串口[1-3]。

    在VC++6.0開發(fā)環(huán)境下,實(shí)現(xiàn)串口通信的方法有多種,但是通過添加串行通信控件MSComm(Microsoft Communication Control)控件來實(shí)現(xiàn)串行通信是比較常用的一種方法。因?yàn)镸SComm控件是微軟公司開發(fā)的新技術(shù),封裝了串口通信的全部API函數(shù),這樣使用者就不必花費(fèi)大量時(shí)間去了解復(fù)雜的API函數(shù)及硬件電路原理,只需添加少量的代碼就能實(shí)現(xiàn)想要的功能,編程容易實(shí)現(xiàn)。

    另外,還可通過使用Windows系統(tǒng)提供的應(yīng)用程序接口API(Application Programming Interface)函數(shù)和多線程編程來實(shí)現(xiàn)串口編程[4]。

    本文通過對MSComm控件和NTGraph控件的操作來實(shí)現(xiàn)PC機(jī)與單片機(jī)之間的數(shù)據(jù)傳送和波形顯示。

    1.2 利用MSComm控件和NTGraph控件實(shí)現(xiàn)串口通信及波形顯示

    1.2.1 在VC++開發(fā)環(huán)境下用MSComm控件實(shí)現(xiàn)串口通信

    因MSComm控件內(nèi)部封裝了串口通信的全部API函數(shù),采用MSComm控件實(shí)現(xiàn)串行通信具有不可替代的優(yōu)勢,故本文通過使用MSComm控件來實(shí)現(xiàn)串行通信。

    應(yīng)用MSComm控件實(shí)現(xiàn)串口通信工作流程圖如圖1所示。

    圖1 MSComm控件工作流程圖

    (1)MSComm控件的加載。菜單欄Project→Add to project→Components and Controls Gallery→打開Registered ActiveX Controls文件夾→選擇Microsoft Communications Control,version 6.0,單擊 Insert。完成MSComm類及相應(yīng)文件的添加,生成mscomm.h和mscomm.cpp的文件。

    (2)在基于對話框的程序中使用控件創(chuàng)建數(shù)據(jù)收發(fā)窗口界面。插入MSComm控件完成后,工具箱中會(huì)出現(xiàn)一個(gè)MSComm控件的圖標(biāo),將圖標(biāo)拖到對話框中→編輯屬性修改ID→點(diǎn)擊右鍵,建立控件的類向?qū)А砑涌丶囊粋€(gè)對象m_Comm→建立控件響應(yīng)代碼框架→雙擊控件進(jìn)入代碼框架添加代碼程序,一個(gè)控件即添加完成,對需要的各控件按照同樣方法逐一添加并設(shè)置。設(shè)置完參數(shù)的控件即可實(shí)現(xiàn)其相應(yīng)的功能,比如發(fā)送窗口就能實(shí)現(xiàn)數(shù)據(jù)發(fā)送、接收窗口能實(shí)現(xiàn)數(shù)據(jù)接收等。設(shè)置完成后其對話框界面如圖2所示。

    圖2 MSComm控件添加及參數(shù)設(shè)置后界面

    (3)部分關(guān)鍵代碼實(shí)現(xiàn)步驟與分析。分析如下。

    第一步,打開串口。

    在OpenCOM()函數(shù)中設(shè)置打開串口,并以二進(jìn)制方式讀取數(shù)據(jù)及清除緩沖區(qū)殘留數(shù)據(jù)。

    第二步,將變量和串口分別進(jìn)行初始化。

    首先,我們在_Dlg::_Dlg(CWnd*pParent/*=NULL*/)

    :CDialog(_Dlg::IDD,pParent)函數(shù)中將變量初始化。本例中約定使用PC機(jī)的COM3,波特率為2400b/s,數(shù)據(jù)格式為8個(gè)數(shù)據(jù)位,1個(gè)停止位,無奇偶校驗(yàn)位。

    其次,在OnInitDialog()中添加初始化語句,用于設(shè)置串口通信的屬性和打開串口。

    ((CComboBox*)GetDlgItem(IDC_COMBO_COM))->SetCurSel(m_nCom);//設(shè)置默認(rèn)打開串口

    UpdateData(FALSE);

    第三步:串口讀寫。

    雙擊MSComm控件,創(chuàng)建OnComm()函數(shù),實(shí)現(xiàn)數(shù)據(jù)讀寫。使用VARIANT數(shù)據(jù)結(jié)構(gòu)即VARIANT GetInput() 和 void SetOutput(const Variant&new Value)函數(shù)原型來完成串口的讀寫,其中GetInput()讀取接收緩沖區(qū)的字符,SetOutput()向發(fā)送緩沖區(qū)寫數(shù)據(jù)流。

    第四步,雙擊發(fā)送按鈕,創(chuàng)建發(fā)送函數(shù)OnButtonSend(),設(shè)置字符數(shù)據(jù)發(fā)送方式及位數(shù)。

    利用MSComm控件順利實(shí)現(xiàn)了PC機(jī)與單片機(jī)之間的串口通信,實(shí)現(xiàn)了數(shù)據(jù)穩(wěn)定可靠的傳輸。

    1.2.2 利用NTGraph控件實(shí)現(xiàn)波形顯示及實(shí)時(shí)描點(diǎn)

    NTGraph控件因其接口函數(shù)簡單,只需要調(diào)用少數(shù)函數(shù)就能實(shí)現(xiàn)我們想要的功能,故是用來繪圖的很好的控件。本文就是利用NTGraph控件來實(shí)現(xiàn)波形顯示及實(shí)時(shí)描點(diǎn)的。應(yīng)用NTGraph控件顯示波形的工作流程圖如圖3所示。

    圖3 NTGraph控件工作流程圖

    (1)NTGraph控件的插入。因?yàn)镹TGraph控件不是Windows自帶的控件,故需注冊以后才可使用。點(diǎn)擊開始→運(yùn)行→輸入regsvr32/X NTGraph.ocx(/X是控件路徑)→確定,完成注冊。然后在之前添加的MSComm控件RS232對話框上點(diǎn)擊右鍵→選擇Insert ActiveX Control→選擇 NTGraph Control,點(diǎn)擊OK,NTGraph控件即添加完成。右鍵點(diǎn)擊NTgraphCtrl1選擇屬性,即可根據(jù)需要選擇修改一些屬性,或者在程序里修改也行。修改完屬性的完整界面如圖4所示。

    圖4 NTGraph控件添加完成后對話框界面

    控件添加完成后,再給控件添加一個(gè)對象,這樣對象就可以訪問NTGraph類中的成員函數(shù)了。點(diǎn)擊菜單欄上的View→Classwizard→Member Variables→選擇IDC_NTGRAPHCTRL→點(diǎn)擊Add Variable添加變量m_Graph→點(diǎn)擊OK,即完成了對象的添加,添加完對象后,寫程序控制NTGraph控件,使其實(shí)現(xiàn)實(shí)時(shí)描點(diǎn)和顯示波形。

    (2)部分關(guān)鍵代碼實(shí)現(xiàn)步驟與分析。首先,在OnInitDialog()的末尾添加NTGraph控件的初始化設(shè)置語句m_Graph.Set,用于設(shè)置X軸、Y軸及線條顯示的屬性等。然后,在OnComm()函數(shù)中加入自定義str_change_int(Cstring)函數(shù),用來數(shù)據(jù)類型的轉(zhuǎn)換,并利用一個(gè)for循環(huán)來實(shí)現(xiàn)實(shí)時(shí)描點(diǎn)及顯示波形。

    1.3 使用51單片機(jī)的RS232串口收發(fā)程序,用以實(shí)現(xiàn)與PC機(jī)之間的通訊

    8051單片機(jī)上有UART(通用異步發(fā)送接收器)用于串口通信,由TXD端發(fā)送數(shù)據(jù),RXD端接收數(shù)據(jù),并有2個(gè)緩沖器,一個(gè)用作發(fā)送緩沖器,一個(gè)用作接收緩沖器。8051采用C語言進(jìn)行的程序設(shè)計(jì)。51單片機(jī)的RS232串口數(shù)據(jù)收發(fā)流程圖如圖5所示。

    圖5 51單片機(jī)的工作流程圖

    2 結(jié)果與分析

    本文講解了在基于VC++6.0的開發(fā)環(huán)境下,通過利用MSComm控件及NTGraph控件,成功完成了十六進(jìn)制數(shù)據(jù)的收發(fā)及波形顯示:從PC機(jī)輸入十六進(jìn)制數(shù),PC機(jī)通過串口將數(shù)據(jù)發(fā)送到單片機(jī)上,單片機(jī)RXD端接收完成并產(chǎn)生響應(yīng)后,再將數(shù)據(jù)從TXD端發(fā)送到PC機(jī),PC機(jī)接收數(shù)據(jù)并以方波的形式顯示,成功實(shí)現(xiàn)了51單片機(jī)與PC機(jī)之間的串口通信與方波的產(chǎn)生。圖6是從PC機(jī)輸入兩位十六進(jìn)制數(shù),其接收情況及波形顯示情況(延時(shí)100 ms)。由此可見用MSComm控件實(shí)現(xiàn)串口通信軟件的開發(fā)是穩(wěn)定、可靠的。系統(tǒng)整體工作流程圖如圖7所示。

    圖6 結(jié)果展示圖

    圖7 系統(tǒng)整體工作流程圖

    3 總結(jié)

    本文利用ActiveX控件MSComm實(shí)現(xiàn)對串口的訪問及對數(shù)據(jù)的采集,編程簡單,可移植性強(qiáng),穩(wěn)定性好,可靠性高。和NTGraph控件聯(lián)合使用,順利實(shí)現(xiàn)了對串口數(shù)據(jù)的實(shí)時(shí)描點(diǎn)及波形顯示。

    [1] 劉書智.VC++實(shí)踐與提高—串口通信與工程應(yīng)用篇(第二版)[M].北京:中國鐵道出版社,2009.

    [2] 陳細(xì)軍,譚民.VC編程中的串口通信技術(shù)[J].計(jì)算機(jī)應(yīng)用,2001(9):94-95.

    [3] 趙軍.利用VC++下MSComm開發(fā)的串口通信軟件[J].中國測試技術(shù),2006(6):97-99.

    [4] 岳志高.MSComm控件在VC++6.0串口通信中的應(yīng)用[J].長春工程學(xué)院學(xué)報(bào),2009(1):72-73.

    [5] 韓中合.用ActiveX控件實(shí)現(xiàn)串口通信編程[J].山東電力技術(shù),2003(2):15-17.

    [6] 邱建華,彭志豪.串口通信技術(shù)在Visual C++中的實(shí)現(xiàn)[J].技術(shù),2005(5):94-95.

    猜你喜歡
    PC機(jī)流程圖控件
    關(guān)于.net控件數(shù)組的探討
    軟件(2018年7期)2018-08-13 09:44:42
    基于PC機(jī)與單片機(jī)的多機(jī)通信技術(shù)及抗干擾方法
    基于三菱FXPLC的感應(yīng)淬火機(jī)床與PC機(jī)的串行通信實(shí)現(xiàn)
    VC.NET下實(shí)現(xiàn)dsPIC單片機(jī)與PC機(jī)的通信
    電子制作(2017年23期)2017-02-02 07:16:47
    專利申請審批流程圖
    河南科技(2016年8期)2016-09-03 08:08:22
    專利申請審批流程圖
    河南科技(2016年6期)2016-08-13 08:18:29
    寧??h村級權(quán)力清單36條
    《天津醫(yī)藥》稿件處理流程圖
    就這樣玩會(huì)VBA中常見的自定義控件
    電腦迷(2012年24期)2012-04-29 00:44:03
    在PowerBuUder中利用WinSock控件制作簡單的Web服務(wù)器
    大宁县| 白沙| 新平| 建瓯市| 日照市| 高密市| 乌拉特前旗| 兰西县| 西畴县| 霍州市| 客服| 庆阳市| 乌兰浩特市| 平顺县| 临沭县| 太仆寺旗| 伊川县| 民乐县| 琼海市| 象州县| 驻马店市| 花莲县| 西昌市| 新野县| 广灵县| 竹溪县| 尼勒克县| 信阳市| 龙南县| 包头市| 合江县| 冷水江市| 兴化市| 开阳县| 柘荣县| 子长县| 明光市| 九龙县| 册亨县| 贵溪市| 长子县|