您的位置: 旅游網 > 綜藝 >> 東方

    中用通訊控件開發串行通信程序牛

    發布時間:2021-10-28 05:39:02

    本文詳細介紹了Visual C++5.0版中有關通訊控件的使用方法,并給出了一個利用該控件編寫的簡單通用的通信示例程序。

    關鍵詞:串行通信 通訊控件

    隨著Win 95的逐步普及,程序員們越來越愿意在Win95下編程,而Visual C++正成為主要的開發工具。然而用VC在Win95下開發串行通訊程序是程序員們經常會遇到確又令人頭痛的一件事,不但要理解許多復雜的API函數,還要掌握多線程編程。令人高興的是Visual C++中提供的通訊控件幫助我們解決了這一難題,通過對這一控件的正確使用,我們可以輕松地編寫出所需的串行通信程序。

    下面,我們將結合一個具體的例子來說明。本程序的編程環境是Win95和Visual C++5.0。這個編程示例的功能比較強,它可以由用戶選定進行傳輸的通信端口,并設定這個端口的相關參數,包括波特率、數據位、停止位、奇偶校驗和流量控制等。還具有發送數據和接收數據的雙重功能。

    一. 在程序中嵌入通訊控件

    啟動Visual C++5.0,利用MFC AppWizard(exe)新建一個項目文件,并命名為CommTest,在AppWizard第一步選擇基于對話框的應用程序類型(Dialog based),在第二步將ActiveX Controls復選框選中,表示本程序支持ActiveX控件。其他均接收缺省設置,AppWizard將自動生成一個以對話框為主窗口的應用程序。下面我們將在該程序中加入通訊控件。在Resource View中打開對話框(IDD_COMMTEST_DIALOG),將其修改為如圖一所示的對話框。注意將對話框的語言屬性改為Chinese(P.R.C)。

    單擊Project菜單,從菜單中選擇Add to Project,再單擊Components and Controls,從彈出的對話框中單擊Registered ActiveX Controls,然后在列表框中選擇Microsoft Communications Control,version 5.0,單擊OK。這時會詢問你是否加入CMSComm類,單擊OK,返回后就會看到控件工具條上添加了一個通訊控件(形狀如機),將其拖放到對話框上,同時注意到Project中新增加了一個類。通過查看類MSComm的源文件p,我們可以了解這個控件的屬性和使用方法,其中的Get…函數可以用來訪問該屬性的當前值,而Set…函數則用來設置該屬性的新值。

    二. 設置通訊控件的屬性值

    激活通訊控件的屬性對話框,一些重要的屬性及其說明如表一所示:

    屬性

    設定值

    說明

    CommPort

    2

    串口號,一般串口為鼠標所用,故用串口2

    InBufferSize

    1024

    接收緩沖區大小

    InputLen

    0

    從接收緩沖區讀取的字節數,0表示全部讀取

    InputMode

    1

    接收數據的類型,0表示文本類型,1表示二進制類型

    OutBufferSize

    1024

    發送緩沖區大小

    RThreshold

    1

    設定當接收幾個字符時觸發OnComm事件,0表示不產生事件,1表示每接收一個字符就產生一個事件

    SThreshold

    張旭豪認為2014年導致外賣市場競爭慘烈的一大原因是高校市場過于集中 0

    設定在觸發OnComm事件前,發送緩沖區內所允許的最少的字符數,0表示發送數據時不產生事件,1表示當發送緩沖區空時產生OnComm事件

    Settings

    9600,n,8,1

    串口的參數設置,依次為波特率、奇偶校驗(n-無校驗,e-偶校驗,o-奇校驗)、數據位數、停止位數

    表1 串口屬性及說明

    上面表中的屬性設定值是本例程中所用的值,可根據需要靈活設定。至于其它的屬性可采用缺省值,其說明可參考聯機幫助文件。

    通訊控件的工作原理類似與中斷方式,當有通訊事件發生時(如發送數據、接收數據等),就會觸發OnComm事件,在該事件的處理函數中調用GetCommEvent()函數,通過返回值即可確定是那類事件,再做出相應的處理。

    三. 主程序的編制

    首先我們為對話框中的控件添加對應的變量和響應函數。具體做法如表二所示:

    控件名稱

    控件ID

    對應變量或函數

    發送數據框

    IDC_SENDDATA

    m_SendData

    接收數據框

    IDC_RECEIVEDATA

    m_ ReceiveData

    發送按鈕

    IDC_SEND

    OnSend()

    清除按鈕

    IDC_CLEAR

    OnClear()

    通訊控件

    IDC_MSCOMM

    m_Comm

    表2 添加控件表

    查看本文來源

    一品紅藥業
    昆明治療包皮包莖哪家好
    腎氣虛食療吃什么好
    猜你會喜歡的
    猜你會喜歡的
    主站蜘蛛池模板: 天堂在线观看视频| 欧洲97色综合成人网| 国产区精品视频| 91蜜桃在线观看| 无码一区二区三区免费| 国产精品久久久久久久久久免费 | 亚洲欧美在线播放| 美女精品永久福利在线| 国产欧美亚洲精品a第一页| 久久亚洲欧美综合激情一区| 欧美黑人xxxx性高清版| 又粗又硬又大又爽免费观看 | 亚洲sss综合天堂久久久| 狠狠躁夜夜躁人人爽天天天天97 | 亚洲av成人一区二区三区| 爱情岛论坛亚洲永久入口口 | 国产三级全黄在线观看| 思思99re热| 大香网伊人久久综合观看| 中文字幕35页| 日韩精品一区二区三区毛片| 亚洲综合激情九月婷婷 | 自拍偷自拍亚洲精品播放| 国产欧美在线观看| 91成人免费观看| 女朋友韩国电影免费完整版| 亚洲人成网男女大片在线播放| 真实乱l仑全部视频| 国产一卡二卡三卡| 成年美女黄网站色| 国产精品户外野外| 99久久亚洲综合精品成人网| 师尊要被cao坏了by谦野| 久久久久久久综合色一本| 极品videossex日本妇| 亚洲欧美久久精品一区| 百合多种道具坐到哭hh| 又黄又爽又猛大片录像| 菠萝蜜视频入口| 国产在线观看色| 日本福利视频导航|