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

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

2007-07-05 01:40:06王立萍
關(guān)鍵詞:按鈕工程

王立萍

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

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

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

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

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

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

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

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

3初始化串口

通過以上操作,ClassWizard自動在SCommTestDlg.h中加入了#include“mscomm.h”語句。

//{AFX_INCLUDES()

#include“mscomm.h”

//}lAFX_INCLUDES

下面,在CSCommTestDlg::OnlnitDialog()函數(shù)中寫入對串口的初始化語句,串口初始化語句由IDC_MSCOMMI的CMSComm控制變量m_etrlComm來設(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ū)動方式從串口接收數(shù)據(jù),也就是消息處理,當(dāng)串口有事件發(fā)生時,程序調(diào)用消息函數(shù)來處理數(shù)據(jù)。打開ClassWizard→Message Maps,在ClassName中選擇類CcomDlg,再在Object IDs中選擇IDC_MSCOMMl,然后在Message中雙擊消息OnComm(或單擊“Add Function”),在彈出的對話框中將函數(shù)名改為OnComm,單擊“OK”。就加入了串口事件的消息處理函數(shù)。在coreDlg.cpp文件中編寫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ā)送按鈕添加一個單擊消息,即BN_CLICKED處理函數(shù),打開ClassWizard→Message Maps,選擇類CComDlg,選中IDC_BUTrON_MANUALSEND,雙擊BN_CLICKED添加OnButtonManualsend函數(shù),在函數(shù)中添加如下代碼:

void CComDlg::OnButtonManualsend()

{ updateData(TRUE);

m_ctrlComm.SetOutput(COleVariant(m_strEditTXData));

}

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

需要兩個串口來測試程序,這兩個串口可以在一臺計(jì)算機(jī)上,也可以分別在兩臺計(jì)算機(jī)上,可自制一個三線串口線(發(fā)送、接收、地)將其連接。可通過串口調(diào)試助手。

7結(jié)束語

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

猜你喜歡
按鈕工程
這些按鈕能隨便按嗎?
哪個是門鈴真正的按鈕
當(dāng)你面前有個按鈕
死循環(huán)
子午工程
太空探索(2016年6期)2016-07-10 12:09:06
工程
內(nèi)心不能碰的按鈕
工程
工程
工程
主站蜘蛛池模板: 色婷婷电影网| 日韩精品久久无码中文字幕色欲| 欧美一级高清免费a| 国产精品微拍| 国产一二三区在线| 一级不卡毛片| 无码不卡的中文字幕视频| 国产成人永久免费视频| 精品丝袜美腿国产一区| 国产无码制服丝袜| 思思99热精品在线| 亚洲成人免费在线| 久久伊人久久亚洲综合| 国产精品视频999| 依依成人精品无v国产| 日韩福利视频导航| 成年看免费观看视频拍拍| 国产精品自在在线午夜 | 91 九色视频丝袜| 国产一二视频| 无码内射在线| 成人噜噜噜视频在线观看| 色综合成人| 亚洲综合激情另类专区| 福利姬国产精品一区在线| 伊人精品成人久久综合| 中国国产高清免费AV片| 欧美黄色网站在线看| 免费毛片视频| 国产精品熟女亚洲AV麻豆| 久久精品亚洲热综合一区二区| 久久精品女人天堂aaa| 国产人免费人成免费视频| 欧美日韩在线成人| 四虎亚洲精品| 狂欢视频在线观看不卡| 嫩草国产在线| 综合色在线| 免费人成黄页在线观看国产| 99re免费视频| 人妻一本久道久久综合久久鬼色 | 国产在线观看91精品| 欧美日韩激情在线| 国产精品久久久久鬼色| 免费A∨中文乱码专区| 国产高清不卡| 91破解版在线亚洲| 青青草国产一区二区三区| 伊人无码视屏| 国产乱人伦偷精品视频AAA| 在线精品自拍| 99视频在线免费| 精品夜恋影院亚洲欧洲| 国产特级毛片| 99激情网| 亚洲精品国产首次亮相| 麻豆国产精品视频| 麻豆精品在线视频| 国产久草视频| 日本爱爱精品一区二区| h视频在线播放| 青草免费在线观看| 亚洲天堂成人| 少妇精品网站| a毛片在线播放| 亚洲欧美日韩色图| 性欧美久久| 91日本在线观看亚洲精品| 中文字幕精品一区二区三区视频 | 日韩视频福利| Jizz国产色系免费| 91高清在线视频| 毛片视频网址| 97青青青国产在线播放| 制服丝袜一区| 国产凹凸视频在线观看| 国产乱人伦偷精品视频AAA| 色妞www精品视频一级下载| 三级视频中文字幕| 国产91特黄特色A级毛片| 国产成人综合在线视频| 91精选国产大片|