最詳細的vc串口上位機編程

最詳細的vc串口上位機編程

ID:8829537

大?。?13.50 KB

頁數(shù):14頁

時間:2018-04-08

最詳細的vc串口上位機編程_第1頁
最詳細的vc串口上位機編程_第2頁
最詳細的vc串口上位機編程_第3頁
最詳細的vc串口上位機編程_第4頁
最詳細的vc串口上位機編程_第5頁
資源描述:

《最詳細的vc串口上位機編程》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

1、VC++串口上位機編程串口通信,MCU跟PC通信經(jīng)常用到的一種通信方式,做界面、寫上位機程序的編程語言、編譯環(huán)境等不少,VB、C#、LABVIEW等等,我會的語言很少,C語言用得比較多,但是還沒有找到如何用C語言來寫串口通信上位機程序的資料,在圖書管理找到了用VC++編寫串口上位機的資料,參考書籍,用自己相當蹩腳的C++寫出了一個簡單的串口上位機程序,分享一下,體驗一下單片機和PC通信的樂趣。編譯環(huán)境:VC++6.0操作系統(tǒng):VMWare虛擬出來的WindowsXP程序?qū)崿F(xiàn)功能:1、PC初始化C

2、OM1口,使用n81方式,波特率57600與單片機通信。PC的COM口編號可以通過如下方式修改:當然也可以通過上位機軟件編寫,通過按鈕來選擇COM端口號,但是此次僅僅是簡單的例程,就沒有弄那么復(fù)雜了。COM1口可用的話,會提示串口初始化完畢。否則會提示串口已經(jīng)打開Portalreadyopen,表示串口已經(jīng)打開,被占用了。2、點擊開始轉(zhuǎn)換,串口會向單片機發(fā)送0xaa,單片機串口中斷接收到0xaa后啟動ADC轉(zhuǎn)換一次,并把轉(zhuǎn)換結(jié)果ADCL、ADCH共兩個字節(jié)的結(jié)果發(fā)送至PC,PC進行數(shù)值轉(zhuǎn)換后在窗

3、口里顯示。(見文章末尾圖)3、為防止串口被一只占用,點擊關(guān)閉串口可以關(guān)閉COM1,供其它程序使用,點擊后按鈕變?yōu)榇蜷_串口,點擊可重新打開COM1。程序的編寫:1、打開VC++6.0建立基于對話框的MFC應(yīng)用程序Test,2、在項目中插入MSComm控件:工程->增加到工程->ComponentsandControls->雙擊RegisteredActiveXControls->選擇MicrosoftCommunicationsControl,version6.0->Insert,按默認值添加,你

4、會發(fā)現(xiàn)多了個電話圖標,這是增加后串口通信控件。3、刪除確認、取消和提示框,添加“電話”、進程、靜態(tài)文本、按鈕、編輯框,拖動添加的控件,根據(jù)喜好布局。4、右擊編輯框Edit選擇屬性,在樣式里設(shè)置,勾選多行、垂直滾動,其它可按默認值。右擊靜態(tài)文本Text選擇屬性,在常規(guī)設(shè)置里,修改標題。右擊按鈕PushButton選擇屬性,在在常規(guī)設(shè)置里,修改標題。修改后界面如下,程序?qū)懗鰜磉\行時“電話”標志會自動消失。5、查看->建立類向?qū)FCClassWizard->MemberViariable,選擇Cla

5、ssName為CTestDlg的類,ControlID為MSCOMM1,雙擊它,為它添加控制變量m_comm1。類似的,選擇IDC_BUTTON2添加控制變量m_serial。(建立類向?qū)б部梢杂覔羧缓笤趶棾龅目旖莶藛卫镞x擇建立類向?qū)В┲链耍究蚣芤呀?jīng)出來了,編譯后運行可以看到如下所示的界面。(組建->全部組件,然后組建->執(zhí)行)6、點擊左側(cè)的視圖窗口,可以在三種模式下切換,第三個是打開我們的源代碼窗口,第一個是類,第二個是窗體的資源視圖。選擇FileView,展開testfiles->Hea

6、derFiles,打開testDlg.h,在全局變量下添加如下代碼,然后保存:intgllen;//定義整型標量gllen,用于記錄接收數(shù)據(jù)的個數(shù)CProgressCtrl*pbar;//指向進度條的指針,用于操作進度條CStringstrRXDdata;//編輯框顯示的文本,記錄歷次轉(zhuǎn)換值7、點擊RecourseView,展開testrecourses->Dialog,雙擊IDD_TEST_DIALOG,編輯我們的主界面對話框。雙擊擊“電話”,彈出如下對話框,按確認鍵:VC會進入源碼編輯窗口,

7、這個函數(shù)是用來處理串口事件的,當PC串口接收到數(shù)據(jù)時,會產(chǎn)生一個數(shù)據(jù)緩沖區(qū)有數(shù)據(jù)的消息事件,然后調(diào)用執(zhí)行這個函數(shù)。添加如下代碼,進行數(shù)據(jù)處理,窗口更新等操作:VARIANTvariant1;//定義VARIANT型變量,用于存放接收到的數(shù)據(jù)COleSafeArraysafearray;//定義safearray型變量LONGlen,k;//定義長整型變量len,kBYTErxdata[2048];//定義BYTE型數(shù)組CStringstremp1,stremp2;//定義兩個字符串if(m_co

8、mm1.GetCommEvent()==2)//判斷引起OnComm時間的原因{//如果是接收到特定個字節(jié)數(shù),則讀取接收到的數(shù)據(jù)variant1=m_comm1.GetInput();//把接收到的數(shù)據(jù)存放到VARIANT型變量里safearray=variant1;//VARIANT型變量轉(zhuǎn)換為ColeSafeArray型變量len=safearray.GetOneDimSize();for(k=0;k

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。