串口通訊實(shí)驗(yàn)報(bào)告_第1頁(yè)
串口通訊實(shí)驗(yàn)報(bào)告_第2頁(yè)
串口通訊實(shí)驗(yàn)報(bào)告_第3頁(yè)
串口通訊實(shí)驗(yàn)報(bào)告_第4頁(yè)
串口通訊實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選文檔網(wǎng)絡(luò)編程與實(shí)踐實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)內(nèi)容:串口通信編程學(xué)號(hào):S201502189姓名:職榮豪日期:2015-9-28一、 實(shí)驗(yàn)要求使用VS2010編寫(xiě)基于對(duì)話框的MFC應(yīng)用程序,兩個(gè)窗口分別使用兩個(gè)串口,使得這兩個(gè)窗口可以進(jìn)行通信,包括數(shù)據(jù)的發(fā)送與接收。二、 實(shí)驗(yàn)原理本實(shí)驗(yàn)使用Microsoft Communications Control控件,利用這個(gè)ActiveX控件,只需要編寫(xiě)少量代碼即可輕松進(jìn)行通信。該控件相關(guān)的函數(shù)如下:put_CommPort:設(shè)置串口號(hào)put_Settings:以字符串的形式設(shè)置波特率、奇偶校驗(yàn)位(n-無(wú)校驗(yàn),e-偶校驗(yàn),o-奇校驗(yàn))、數(shù)據(jù)位數(shù)、停止位數(shù)put_In

2、putMode:設(shè)置接收數(shù)據(jù)的類(lèi)型(0-文本類(lèi)型,1-二進(jìn)制類(lèi)型)put_InputLen:設(shè)置從接收緩沖區(qū)讀取的字節(jié)數(shù),0表示全部讀取put_InBufferSize:設(shè)置接收緩沖區(qū)大小put_OutBufferSize:設(shè)置發(fā)送緩沖區(qū)大小put_RThreshold:設(shè)定當(dāng)接收幾個(gè)字符時(shí)觸發(fā)OnComm事件,0表示不產(chǎn)生事件,1表示每接收一個(gè)字符就產(chǎn)生一個(gè)事件put_SThreshold:設(shè)定在觸發(fā)OnComm事件前,發(fā)送緩沖區(qū)內(nèi)所允許的最少的字符數(shù),0表示發(fā)送數(shù)據(jù)時(shí)不產(chǎn)生事件,1表示當(dāng)發(fā)送緩沖區(qū)空時(shí)產(chǎn)生OnComm事件put_PortOpen:打開(kāi)或關(guān)閉串口,傳入?yún)?shù)為true時(shí)打開(kāi)串口

3、,傳入?yún)?shù)為false時(shí)關(guān)閉串口get_CommEvent:獲得串口上剛發(fā)生的事件,事件值為2表示接收到數(shù)據(jù)get_InBufferCount:獲得緩沖區(qū)中的數(shù)據(jù)位數(shù)get_Input:獲取緩沖區(qū)數(shù)據(jù),返回類(lèi)型為VARIANTput_Output:發(fā)送數(shù)據(jù)三、 設(shè)計(jì)思路需要添加一個(gè)Microsoft Communications Control控件,用于進(jìn)行串口通信。由于要求同一程序可運(yùn)行兩個(gè)窗口進(jìn)行相互通信,需要兩個(gè)窗口開(kāi)啟兩個(gè)不同串口,故需要添加一個(gè)Edit Control控件用于輸入串口號(hào),并添加打開(kāi)串口按鈕,在點(diǎn)擊該按鈕時(shí)對(duì)串口控件的參數(shù)進(jìn)行設(shè)置并開(kāi)啟串口。同時(shí)添加關(guān)閉串口按鈕,點(diǎn)擊后

4、關(guān)閉串口并可以對(duì)串口號(hào)進(jìn)行修改。需要添加兩個(gè)Edit Control 分別用于顯示接收到的數(shù)據(jù)以及輸入要發(fā)送的數(shù)據(jù)。需要添加一個(gè)發(fā)送按鈕,點(diǎn)擊后發(fā)送輸入的數(shù)據(jù)。四、 實(shí)驗(yàn)步驟1. 建立基于對(duì)話框的MFC應(yīng)用程序2. 添加界面控件并設(shè)置ID與Caption添加Microsoft Communications Control控件,用于進(jìn)行串口通信添加一個(gè)Edit Control控件,用于輸入串口號(hào),ID設(shè)置為IDC_PORT添加一個(gè)Static Text控件,用于標(biāo)注端口號(hào),將Caption設(shè)置為“串口號(hào):”添加兩個(gè)按鈕,分別用于打開(kāi)串口、關(guān)閉串口。IDC分別設(shè)置為IDC_BTN_OPEN、IDC

5、_BTN_CLOSE,Caption分別設(shè)置為“打開(kāi)”、“關(guān)閉”添加兩個(gè)Edit Control,分別用于顯示接收到的數(shù)據(jù)以及輸入要發(fā)送的數(shù)據(jù),ID分別設(shè)置為IDC_RECEIVE、IDC_SEND添加兩個(gè)Static Text控件,用于標(biāo)注接收區(qū)與發(fā)送區(qū),Caption分別設(shè)置為“接收區(qū)”、“發(fā)送區(qū)”添加一個(gè)按鈕用于發(fā)送數(shù)據(jù),ID設(shè)置為IDC_BTN_SEND,Caption設(shè)置為“發(fā)送”調(diào)整控件的大小與位置。完成后如圖: 3. 給控件綁定變量右鍵單擊Microsoft Communications Control控件,選擇“添加變量”,變量名為m_com打開(kāi)類(lèi)向?qū)Ыo控件添加變量:給IDC_

6、PORT綁定變量,用于存放輸入的端口號(hào),數(shù)據(jù)類(lèi)型為int,變量名為m_port給IDC_RECEIVE綁定變量,用于存放接收到的數(shù)據(jù),數(shù)據(jù)類(lèi)型為CString,變量名為m_strReceive給IDC_SEND綁定變量,用于存放輸入的待發(fā)送的數(shù)據(jù),數(shù)據(jù)類(lèi)型為CString,變量名為m_strSend4. 給控件添加事件響應(yīng)函數(shù)右鍵單擊Microsoft Communications Control控件,選擇“添加事件處理程序”,點(diǎn)擊“添加編輯”,生成響應(yīng)函數(shù),此函數(shù)用于接收數(shù)據(jù)。在函數(shù)中添加以下代碼:UpdateData(TRUE);/更新m_strReceive的值int nEvent =

7、m_com.get_CommEvent();/獲取事件值if(nEvent = 2) /時(shí)間值為2,此時(shí)為收到數(shù)據(jù)int k = m_com.get_InBufferCount();/獲取緩沖區(qū)位數(shù)if(k pvData;/獲取接收到數(shù)據(jù)的字符數(shù)組的首地址*(str + k) = 0;/字符數(shù)組最后一位的下一位設(shè)置為0,為字符串的結(jié)尾標(biāo)志m_strReceive += (const char *) str;/在用于顯示的字符串末尾添加剛接收到的字符串UpdateData(FALSE);/將m_strReceive的值顯示到控件中雙擊IDC_BTN_OPEN控件,即“打開(kāi)”按鈕,生成響應(yīng)函數(shù),此

8、函數(shù)用于設(shè)置串口參數(shù)并打開(kāi)串口。在函數(shù)中添加以下代碼:UpdateData(TRUE);/更新m_port的值if(m_port EnableWindow(FALSE);/打開(kāi)按鈕設(shè)為不可用GetDlgItem(IDC_BTN_CLOSE)-EnableWindow(TRUE);/關(guān)閉按鈕設(shè)為可用GetDlgItem(IDC_BTN_SEND)-EnableWindow(TRUE);/發(fā)送按鈕設(shè)為可用雙擊IDC_BTN_CLOSE控件,即“關(guān)閉”按鈕,生成響應(yīng)函數(shù),該函數(shù)用于關(guān)閉串口。在函數(shù)中添加以下代碼:m_com.put_PortOpen(false);/關(guān)閉串口GetDlgItem(ID

9、C_BTN_OPEN)-EnableWindow(TRUE);/打開(kāi)按鈕設(shè)為可用GetDlgItem(IDC_BTN_CLOSE)-EnableWindow(FALSE);/關(guān)閉按鈕設(shè)為不可用GetDlgItem(IDC_BTN_SEND)-EnableWindow(FALSE);/發(fā)送按鈕設(shè)為不可用雙擊IDC_BTN_SEND控件,即“發(fā)送”按鈕,生成響應(yīng)函數(shù),該函數(shù)用于發(fā)送數(shù)據(jù)。在函數(shù)中添加以下代碼:UpdateData(TRUE); /更新m_strSend的值,讀取編輯框內(nèi)容m_com.put_Output(COleVariant(m_strSend);/發(fā)送數(shù)據(jù)5. 在對(duì)話框初始化函數(shù)中添加額外初始化代碼在對(duì)話框剛打開(kāi)時(shí),此時(shí)串口沒(méi)有開(kāi)啟,故“關(guān)閉”按鈕與“發(fā)送”按鈕需設(shè)為不可用。在OnInitDialog函數(shù)中添加以下代碼:GetDlgItem(IDC_BTN_CLOSE)-EnableWindow(FALSE);/關(guān)閉按鈕設(shè)為不可用GetDlgItem(IDC_BTN_SEND)-EnableWindow(FALSE);/發(fā)送按鈕設(shè)為不可用五、 實(shí)驗(yàn)結(jié)果對(duì)話框1 運(yùn)行結(jié)果如下:對(duì)話框2 運(yùn)行

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論