• 
    

    
    

      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ù)器
      南涧| 琼结县| 兴业县| 菏泽市| 天津市| 资兴市| 虞城县| 富川| 通道| 乾安县| 华容县| 交口县| 阳曲县| 池州市| 华阴市| 襄汾县| 呼玛县| 吴桥县| 新龙县| 温州市| 拜泉县| 新和县| 乐业县| 霍邱县| 临泉县| 阿坝| 奉贤区| 凌海市| 铜鼓县| 德清县| 称多县| 海口市| 依安县| 广灵县| 涞水县| 崇州市| 南昌市| 车险| 金乡县| 凤阳县| 定远县|