在VC++6.0中利用串行通信控件

在VC++6.0中利用串行通信控件

ID:40639860

大小:76.50 KB

頁數(shù):4頁

時間:2019-08-05

在VC++6.0中利用串行通信控件_第1頁
在VC++6.0中利用串行通信控件_第2頁
在VC++6.0中利用串行通信控件_第3頁
在VC++6.0中利用串行通信控件_第4頁
資源描述:

《在VC++6.0中利用串行通信控件》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、在VC++6.0中利用串行通信控件崔杰梁計春王國軍目前,在用計算機(jī)進(jìn)行數(shù)據(jù)傳輸時,常用的是串行通信方式。在VisualC++的編程中,既可以用WindowsAPI函數(shù)進(jìn)行串行通信編程,也可以利用環(huán)境自帶的控件進(jìn)行編程。利用API函數(shù)編寫實際應(yīng)用程序時,往往要考慮多線程的問題,這樣編出來的程序不但十分龐大,而且結(jié)構(gòu)比較復(fù)雜,繼承性差,維護(hù)困難。但是使用串行通信控件就相對簡單一些,而且功能強(qiáng)大,性能安全可靠。本文以MicrosoftCommunicationsControl(version6.0)為例,介紹串行通信控件在VC++中的使用方法。嵌入通信控件使用串行通

2、信控件前,首先要進(jìn)行系統(tǒng)注冊。1、在建立新工程時,將ActiveXControls復(fù)選框選中,表示本程序支持ActiveX控件。2、單擊Project菜單,從中選擇AddtoProject,在彈出的對話框中單擊ComponentsandControls選項,然后在彈出的對話框中再單擊RegisteredActiveXControls選項。3、在列表中選擇MicrosoftCommunicationsControl(version6.0),形狀為帶有紅色底座的黃色電話機(jī)。單擊Insert按鈕,確認(rèn)后,會出現(xiàn)一個ConfirmClasses對話框,其中列出了該控件

3、的類名(CMSComm)、頭文件名(MSComm.h)、執(zhí)行文件名(MSComm.cpp)。關(guān)閉此對話框,在程序主界面的控件列表中,可以看到該通信控件已被加入,拖動該控件就可以將其放入程序中。編寫通信程序通信控件的工作原理類似于中斷方式,當(dāng)有通信事件發(fā)生時,如發(fā)送、接收數(shù)據(jù),就會觸發(fā)OnComm事件。在OnComm事件的處理函數(shù)中調(diào)用GetCommEvent()函數(shù),由該函數(shù)的返回值即可確定是什么類型的事件,并由此做出相應(yīng)的處理。下面以接收處理串口的GPS信號為例,說明該控件在編程中的具體應(yīng)用。利用MFC生成一個基于對話框的應(yīng)用程序,對話框中的控件及其相應(yīng)的消

4、息與響應(yīng)函數(shù)如下表所示??丶Q控件ID對應(yīng)變量通信控件IDC_MSCOMMm_Comm接收按鈕IDC_BUTTON_RECEIVEGPSDATAOnbuttonStartreceivegps()GPS信號顯示IDC_EDIT_COMDATAm_comdata停止接收按鈕IDC_BUTTON_ENDRECEIVEGPSDATAOnbuttonEndreceivegps()設(shè)置控件各部分屬性:CommPort:1;DTREnable:1;InBufferSize:4096;EOFEnable:TRUE;Handshaking:nohandshaking;Inpu

5、tMode:1-Binary;NullDiscard:False;Rthreshold:250;RTSEnable:False;Settings:9600,n,8,1;Sthreshold:0。部分程序如下://開始接收GPS信號voidCGpsDlg::OnButtonStartreceivegps(){//判斷串口的狀態(tài),如果是關(guān)閉狀態(tài),則打開if(!m_Comm.GetPortOpen())//打開串口m_Comm.SetPortOpen(TRUE);UpdateData(TRUE);}//停止接收GPS的信號voidCGpsDlg::OnButtonE

6、ndreceivegps();{//判斷串口的狀態(tài),如果是打開狀態(tài),則關(guān)閉if(m_Comm.GetPortOpen())m_Comm.SetPortOpen(FALSE);UpdateData(FALSE);}//相應(yīng)的OnComm事件處理voidCGpsDlg::OnComm(){m_comdata.Empty();VARIANTm_input1;COleSafeArraym_input2;LONGlength,i;BYTEdata[1024];CStringstr;//接收緩沖區(qū)內(nèi)字符if(m_Comm.GetCommEvent()==2){m_comd

7、ata.Empty();//讀取緩沖區(qū)內(nèi)的數(shù)據(jù)m_input1=m_Comm.GetInput();//將VARIANT型變量轉(zhuǎn)換為ColeSafeArray型變量m_input2=m_input1;//確定數(shù)據(jù)長度length=m_input2.GetOneDimSize();//將數(shù)據(jù)轉(zhuǎn)換為BYTE型數(shù)組for(i=0;i

8、c",a);m_comdata+=st

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

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

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