Com"/>

亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VC串口通信的實(shí)現(xiàn)

        2007-07-05 01:40:06王立萍
        關(guān)鍵詞:接收數(shù)據(jù)控件對(duì)話框

        王立萍

        摘要:介紹在VC++6.0開(kāi)發(fā)平臺(tái)上。運(yùn)用MSComm控件實(shí)現(xiàn)串口通信.通過(guò)實(shí)例進(jìn)行具體詳細(xì)說(shuō)明。

        關(guān)鍵詞:串口通信MSComm

        中圖分類號(hào)TP368.1文獻(xiàn)標(biāo)識(shí)碼B文章編號(hào):1002-2422(2007)03-0046-02

        1建立應(yīng)用工程

        打開(kāi)Visual C++,建立一個(gè)基于對(duì)話框的MFC應(yīng)用程序,在對(duì)話框中添加控件,用ClassWizard為相應(yīng)控件設(shè)置屬性及添加變量如表l所示,其中MSComm的添加見(jiàn)第二步。

        2在當(dāng)前工程中添加MSComm控件

        單擊菜單Add To Project->Components and Controls,在打開(kāi)的對(duì)話框中選擇“Begistered AetiveX Controls”,再雙擊此項(xiàng)出現(xiàn)控件選擇對(duì)話框“Component and Controls Gallerf”,在該框中選擇“Microsoft Communications Control,version 6.O”控件,再單擊“Insert”按鈕,提示“Insert this com-ponent?”,確認(rèn)后,可以看到加入CMSComm類的Confirm Class對(duì)話框,提示加入到當(dāng)前工程中的CMSComm類頭文件為MSComm.h,實(shí)現(xiàn)文件為MSComm.epp。單擊“OK”按鈕關(guān)閉Confirm Class對(duì)話框,再單擊“Close”關(guān)閉Component and Controls Gallery對(duì)話框,則在VC集成環(huán)境中,當(dāng)前工程的Class View中就出現(xiàn)了CMSComm類,同時(shí)在對(duì)話框資源控件中出現(xiàn)了一個(gè)電話機(jī)形狀的控件,就是MSComm控件。

        利用這種添加控件的方法,對(duì)之后的串口消息事件處理會(huì)提供很大的方便,ClassWizard會(huì)自動(dòng)在當(dāng)前程序工程中進(jìn)行消息類的映射。

        3初始化串口

        通過(guò)以上操作,ClassWizard自動(dòng)在SCommTestDlg.h中加入了#include“mscomm.h”語(yǔ)句。

        //{AFX_INCLUDES()

        #include“mscomm.h”

        //}lAFX_INCLUDES

        下面,在CSCommTestDlg::OnlnitDialog()函數(shù)中寫(xiě)入對(duì)串口的初始化語(yǔ)句,串口初始化語(yǔ)句由IDC_MSCOMMI的CMSComm控制變量m_etrlComm來(lái)設(shè)置串口控件屬性。代碼如下:

        m_ctdlComm.SetCommPort(1)

        m_ctdlComm.SetInputMode(1)

        m_ctdlComm.SetlnBufferSize(1024)

        m_ctdlComm.SetOutBufferSize(512)

        m_ctrlComm.SetSettings(“9000,n,8,1”)

        if(lm_ctrlComm.GetPortOpen())

        m_culComm.SetPortOpen(TRUE)

        m_ctdlComm.SetRThreshold(1)

        m_ctrlComm.SetInputLen(0)

        m_ctrlComm.Getlnput()

        4從串口接收數(shù)據(jù)

        MSComm控件一般用事件驅(qū)動(dòng)方式從串口接收數(shù)據(jù),也就是消息處理,當(dāng)串口有事件發(fā)生時(shí),程序調(diào)用消息函數(shù)來(lái)處理數(shù)據(jù)。打開(kāi)ClassWizard→Message Maps,在ClassName中選擇類CcomDlg,再在Object IDs中選擇IDC_MSCOMMl,然后在Message中雙擊消息OnComm(或單擊“Add Function”),在彈出的對(duì)話框中將函數(shù)名改為OnComm,單擊“OK”。就加入了串口事件的消息處理函數(shù)。在coreDlg.cpp文件中編寫(xiě)OnComm()中的代碼,主要任務(wù)是從串口接收數(shù)據(jù)并顯示在接收編輯框中。

        void CComDlg:OnComm()

        {VARIANT varlant_inp;

        ColeSafeArray safearray_inp;

        LONG len,k;

        BYTE rxdata[2048]:

        CStrlng strtemp;

        if(m_ctrlComm.GetCommEvent()==2)

        {

        varlant_inp=m ctrlComm.GetInput():

        safearray_in=variant_inp;

        len=safeary_inp.GetOneDimSize():

        for(k=0;k<len;k++)

        safearray_inp.GetElement(&k,rxdata+k):

        for(k=O;k<len;k++)

        {

        BYTE bl=*(char*)(rxdata+k):

        strtemp.Format(“%c”,bt);

        m_strEditR.XData+=strtemp;

        }

        }

        UpdateData(FALSE);

        }

        5

        發(fā)送數(shù)據(jù)

        先為發(fā)送按鈕添加一個(gè)單擊消息,即BN_CLICKED處理函數(shù),打開(kāi)ClassWizard→Message Maps,選擇類CComDlg,選中IDC_BUTrON_MANUALSEND,雙擊BN_CLICKED添加OnButtonManualsend函數(shù),在函數(shù)中添加如下代碼:

        void CComDlg::OnButtonManualsend()

        { updateData(TRUE);

        m_ctrlComm.SetOutput(COleVariant(m_strEditTXData));

        }

        6程序測(cè)試及結(jié)果

        需要兩個(gè)串口來(lái)測(cè)試程序,這兩個(gè)串口可以在一臺(tái)計(jì)算機(jī)上,也可以分別在兩臺(tái)計(jì)算機(jī)上,可自制一個(gè)三線串口線(發(fā)送、接收、地)將其連接??赏ㄟ^(guò)串口調(diào)試助手。

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

        通過(guò)實(shí)例介紹了基于VC控件MSComm的串口通信方法,MSComm控件比較簡(jiǎn)單,一般只是用于較簡(jiǎn)單的系統(tǒng),串口通信還可以使用Windows API函數(shù)和CSerial類,可以根據(jù)實(shí)際情況選擇合適的方法。

        猜你喜歡
        接收數(shù)據(jù)控件對(duì)話框
        沖激噪聲背景下基于幅度預(yù)處理的測(cè)向新方法*
        正常恢復(fù)虛擬機(jī)
        低復(fù)雜度多輸入多輸出雷達(dá)目標(biāo)角度估計(jì)方法
        Bootlace Worms’Secret etc.
        關(guān)于.net控件數(shù)組的探討
        軟件(2018年7期)2018-08-13 09:44:42
        單片機(jī)模擬串口數(shù)據(jù)接收程序的實(shí)現(xiàn)及優(yōu)化
        快速抓取對(duì)話框中的完整信息
        電腦迷(2012年22期)2012-04-29 20:30:54
        就這樣玩會(huì)VBA中常見(jiàn)的自定義控件
        電腦迷(2012年24期)2012-04-29 00:44:03
        基于PCMCIA的ARINC429通信卡設(shè)計(jì)
        在PowerBuUder中利用WinSock控件制作簡(jiǎn)單的Web服務(wù)器
        成 人 网 站 在线 看 免费| 国产高清在线精品一区app| 51看片免费视频在观看| 日本一区二区免费看片| 亚洲av免费手机在线观看| 成人网站免费看黄a站视频| 最新国产三级| 亚洲av有码精品天堂| 国产女同舌吻1区2区| 色哟哟精品视频在线观看| 久久久噜噜噜久久中文字幕色伊伊| 中文无码免费在线| 亚洲乱码中文字幕一线区| 久久久久久久久毛片精品| 亚洲av无码一区二区乱子伦as| 91情侣在线精品国产免费| 各类熟女熟妇激情自拍| 久久久久亚洲av片无码| 免费av片在线观看网站| 国产成人AV乱码免费观看| 国产精品亚洲精品一区二区 | 懂色av一区二区三区网久久| 粉嫩av国产一区二区三区| 无码国产一区二区三区四区| 亚洲欧美另类日本久久影院| 成熟的女人毛茸茸色视频| 美女高潮黄又色高清视频免费| 无码人妻精品一区二区三区66| 国产精品一区二区三区不卡| 一区二区视频中文字幕| 激性欧美激情在线| 亚洲自拍愉拍| 青青草在线免费观看在线| 人成午夜免费视频无码| 最近高清中文在线字幕观看| 亚洲av精品一区二区三| 久久伊人最新网址视频| 精品国产sm捆绑最大网免费站| 亚洲免费视频网站在线| 日本韩国亚洲三级在线| 久久久久亚洲av成人无码|