999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2012-01-15 03:51:40葉艷艷陳西曲
關(guān)鍵詞:單片機(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]。因此,針對(duì)串口通信在計(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)行處理的,并不直接對(duì)端口進(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]。

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

圖4 NTGraph控件添加完成后對(duì)話框界面

控件添加完成后,再給控件添加一個(gè)對(duì)象,這樣對(duì)象就可以訪問NTGraph類中的成員函數(shù)了。點(diǎn)擊菜單欄上的View→Classwizard→Member Variables→選擇IDC_NTGRAPHCTRL→點(diǎn)擊Add Variable添加變量m_Graph→點(diǎn)擊OK,即完成了對(duì)象的添加,添加完對(duì)象后,寫程序控制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)對(duì)串口的訪問及對(duì)數(shù)據(jù)的采集,編程簡單,可移植性強(qiáng),穩(wěn)定性好,可靠性高。和NTGraph控件聯(lián)合使用,順利實(shí)現(xiàn)了對(duì)串口數(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.

猜你喜歡
單片機(jī)
基于單片機(jī)的SPWM控制逆變器的設(shè)計(jì)與實(shí)現(xiàn)
電子制作(2019年13期)2020-01-14 03:15:28
基于單片機(jī)的層次漸變暖燈的研究
電子制作(2019年15期)2019-08-27 01:12:10
基于單片機(jī)的多功能智能插排
電子制作(2019年11期)2019-07-04 00:34:48
基于單片機(jī)的便捷式LCF測量儀
電子制作(2019年9期)2019-05-30 09:42:02
小議PLC與單片機(jī)之間的串行通信及應(yīng)用
電子制作(2018年12期)2018-08-01 00:48:04
MSP430單片機(jī)在仿真中要注意的幾點(diǎn)問題
電子制作(2017年9期)2017-04-17 03:00:53
基于單片機(jī)的平衡控制系統(tǒng)設(shè)計(jì)
電子制作(2017年19期)2017-02-02 07:08:27
基于單片機(jī)的三維LED點(diǎn)陣設(shè)計(jì)
電子制作(2016年21期)2016-05-17 03:52:51
Microchip推出兩個(gè)全新PIC單片機(jī)系列
基于Proteus的單片機(jī)控制系統(tǒng)的仿真設(shè)計(jì)
主站蜘蛛池模板: 国产va免费精品观看| 99成人在线观看| 精品无码国产一区二区三区AV| 国产乱人视频免费观看| 亚洲AV色香蕉一区二区| 色婷婷在线影院| 亚洲日韩久久综合中文字幕| 久久精品国产亚洲麻豆| 国产亚洲精品自在久久不卡 | 国产成人一级| 无码AV日韩一二三区| 国产剧情无码视频在线观看| 国产精品开放后亚洲| 毛片免费试看| 综合人妻久久一区二区精品| 亚洲欧洲日韩综合| 91热爆在线| 亚洲成人精品| 亚洲三级片在线看| 精品视频在线观看你懂的一区| 亚洲男人的天堂在线| hezyo加勒比一区二区三区| www.91中文字幕| 亚洲精品无码在线播放网站| 在线a视频免费观看| 蝴蝶伊人久久中文娱乐网| 精品小视频在线观看| 91久久夜色精品国产网站| 欧美国产在线看| 国产一区二区视频在线| 丝袜无码一区二区三区| 亚洲成人手机在线| 97se亚洲综合在线韩国专区福利| 亚洲日韩第九十九页| 亚洲制服丝袜第一页| 在线观看国产精美视频| 综合天天色| 91美女视频在线| 国产丝袜精品| 91在线播放免费不卡无毒| 久久这里只有精品23| 欧美日本在线观看| 亚洲欧美综合精品久久成人网| 毛片最新网址| 欧美国产在线精品17p| 亚洲看片网| 国产精品综合色区在线观看| 在线国产91| 亚洲高清在线播放| 亚洲第一色网站| 少妇高潮惨叫久久久久久| 国产人免费人成免费视频| 曰AV在线无码| 91尤物国产尤物福利在线| 国产正在播放| 欧美午夜视频在线| 中国美女**毛片录像在线 | 男人天堂伊人网| 亚洲人精品亚洲人成在线| 在线精品亚洲一区二区古装| 国产一级裸网站| 韩日免费小视频| 欧美日韩国产高清一区二区三区| 亚洲综合色吧| 97精品久久久大香线焦| 玖玖精品视频在线观看| 无套av在线| 国产女人喷水视频| 欧美日韩激情| 97精品国产高清久久久久蜜芽| 日韩精品高清自在线| 一本视频精品中文字幕| 国产va视频| 国产精品亚洲欧美日韩久久| 亚洲日产2021三区在线| 亚洲成AV人手机在线观看网站| 在线观看精品国产入口| 91麻豆精品国产91久久久久| 老色鬼欧美精品| 欧美一道本| 国产高清色视频免费看的网址| 久久国产乱子伦视频无卡顿|