




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、免費(fèi)的圖析VC+6.0中使用mscomm串口控件東南大學(xué)計(jì)算機(jī)學(xué)院 楊全勝按下列圖所示建立一個(gè)基于對(duì)話(huà)框的MFC程序這樣就得到了下圖所示的界面:右鍵點(diǎn)擊sport的對(duì)話(huà)框界面,在彈出的菜單中選擇屬性,打開(kāi)下面的屬性對(duì)話(huà)框:建立下圖所示的對(duì)話(huà)框控件:各控件屬性如下:下面再做第二個(gè)對(duì)話(huà)框配置對(duì)話(huà)框右鍵點(diǎn)擊下圖左邊的Dialog,在彈出的菜單中選擇Insert Dialog這樣就得到下圖鼠標(biāo)右鍵點(diǎn)擊上圖右邊的對(duì)話(huà)框,在彈出的菜單中選擇屬性,并建立下列屬性:建立下圖的各種控件:其中“串口號(hào)“、”波特率“、“數(shù)據(jù)位”、“停止位”、“奇偶位”字樣都是static Text控件,如“串口號(hào):”文字的控件屬性
2、為:這些文字的下拉框都是Combo Box控件,他們的屬性為:下面右鍵點(diǎn)擊工具欄的空白處,在打開(kāi)的菜單中選擇“定制窗口”,在下面的定制對(duì)話(huà)框中查看分類(lèi)里將下面的兩個(gè)按鈕移動(dòng)到某個(gè)菜難欄中,其中左上的那個(gè)按鈕是”類(lèi)生成“按鈕。設(shè)置好后,左鍵點(diǎn)擊剛才的“串口配置”對(duì)話(huà)框,然后再點(diǎn)擊“類(lèi)生成”按鈕。出現(xiàn)下面的對(duì)話(huà)框點(diǎn)擊OK后出現(xiàn)下面對(duì)話(huà)框,按下面圖填好點(diǎn)擊Change按鈕,按下圖來(lái)設(shè)置Change Files對(duì)話(huà)框按OK后得到下面的對(duì)話(huà)框這樣得到新的類(lèi)如下圖:雙擊下圖IDC_COMN控件,按下圖設(shè)置其成員變量:得到下圖的結(jié)果使用上述方法建立下列控件的成員函數(shù)下面我們來(lái)將mscomm控件加進(jìn)項(xiàng)目:在s
3、portDlg.h中加入MSComm控件:#include "mscomm.h"protected: CMSComm m_ComPort;public:CSportDlg(CWnd* pParent = NULL);/ standard constructorintm_baund;intm_comn;intm_databit;intm_jiaoyan;intm_stopbit;在CSportDlg:OnInitDialog()中:DWORD style=WS_VISIBLE|WS_CHILD; if (!m_ComPort.Create( NULL,style,CRect(
4、0,0,0,0),this,ID_COMMCTRL) )TRACE0("Failed to create OLE Communications Controln");return -1; / fail to create m_baund = 2; / 配置窗口參數(shù)初始化m_comn = 0;m_databit = 3;m_jiaoyan = 0; m_stopbit = 0;/ 缺省的串口初始化m_ComPort.SetCommPort(1); / 選擇串口號(hào)m_ComPort.SetInBufferSize(1024); /接收緩沖區(qū) m_ComPort.SetOutBu
5、fferSize(1024);/發(fā)送緩沖區(qū) m_ComPort.SetInputLen(0);/設(shè)置當(dāng)前接收區(qū)數(shù)據(jù)長(zhǎng)度為0,表示全部讀取 m_ComPort.SetInputMode(1);/以二進(jìn)制方式讀寫(xiě)數(shù)據(jù) m_ComPort.SetRThreshold(1);/接收緩沖區(qū)有大于等于1個(gè)字符時(shí),將引發(fā)接收數(shù)據(jù)的OnCommMscomm事件m_ComPort.SetSettings("9600,n,8,1"); /設(shè)置波特率等參數(shù)if(!m_ComPort.GetPortOpen() /打開(kāi)串口m_ComPort.SetPortOpen(TRUE);else m_Com
6、Port.SetOutBufferCount(0);按照下列圖為“配置”按鈕添加功能函數(shù):雙擊BN_CLICKED得到功能函數(shù)void CSportDlg:Onconfig() / TODO: Add your control notification handler code here添上下面的代碼,就可以得到該函數(shù)的功能void CSportDlg:Onconfig() / 配置按鈕被按下/ TODO: Add your control notification handler code hereCSconfig con;/將端口配置初始化數(shù)據(jù)傳遞的配置對(duì)話(huà)框中con.m_baund =
7、m_baund; con.m_comn = m_comn;con.m_databit = m_databit;con.m_jiaoyan = m_jiaoyan;con.m_stopbit = m_stopbit;if(con.DoModal()=IDOK) / 配置對(duì)話(huà)框是“確定”按鈕按下,需要重新配置端口m_ComPort.SetPortOpen(FALSE);m_ComPort.SetCommPort(m_comn+1); /設(shè)置串口號(hào)m_ComPort.SetInBufferSize(1024); /接收緩沖區(qū) m_ComPort.SetOutBufferSize(1024);/發(fā)送緩
8、沖區(qū) m_ComPort.SetInputLen(0);/設(shè)置當(dāng)前接收區(qū)數(shù)據(jù)長(zhǎng)度為0,表示全部讀取 m_ComPort.SetInputMode(1);/以二進(jìn)制方式讀寫(xiě)數(shù)據(jù) m_ComPort.SetRThreshold(1);/接收緩沖區(qū)有1個(gè)及1個(gè)以上字符時(shí),將引發(fā)接收數(shù)據(jù)的OnCommMscomm事件CString conf;switch(m_baund) / 設(shè)置波特率case 0:conf = "2400,"break;case 1:conf = "4800,"break;case 2:conf = "9600,"brea
9、k;default:conf = "9600,"switch(m_jiaoyan) / 設(shè)置校驗(yàn)方法case 0:conf = conf + "n,"break;case 1:conf = conf + "o,"break;case 2:conf = conf + "e,"break;default:conf = conf+"n,"break;switch(m_databit) / 設(shè)置數(shù)據(jù)位case 0:conf = conf + "5,"break;case 1:conf
10、 = conf + "6,"break;case 2:conf = conf + "7,"break;case 3:conf = conf + "8,"break;default:conf = conf+"8,"break;switch(m_stopbit) / 設(shè)置停止位 case 0:conf = conf + "1"break;case 1:conf = conf + "1.5"break;case 2:conf = conf + "2"break;
11、default:conf = conf+"1"break;m_ComPort.SetSettings(conf); /設(shè)置波特率等參數(shù)if(!m_ComPort.GetPortOpen() /打開(kāi)串口m_ComPort.SetPortOpen(TRUE);用上述方法添加發(fā)送按鈕的功能函數(shù)void CSportDlg:Onsendbtn() / TODO: Add your control notification handler code hereUpdateData(TRUE);int len; CByteArray array;len=m_send.GetLength(
12、);array.RemoveAll();array.SetSize(len);for(int i=0;i<len;i+)array.SetAt(i, m_sendi);m_ComPort.SetOutput(COleVariant(array); / 發(fā)送數(shù)據(jù)下面我們經(jīng)過(guò)增加事務(wù)截獲功能來(lái)增加串口接收功能:在sportDlg.h中增加:protected:afx_msg void OnCommMscomm();DECLARE_EVENTSINK_MAP()在sportDlg.cpp中增加:BEGIN_EVENTSINK_MAP(CMainFrame,CFrameWnd )ON_EVENT
13、(CMainFrame,ID_COMMCTRL,1,OnCommMscomm,VTS_NONE) /映射/ActiveX控件事件END_EVENTSINK_MAP() void CSportDlg:OnCommMscomm() / 串口事件到來(lái)VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata2048; /設(shè)置BYTE數(shù)組 An 8-bit integerthat is not signed. CString strtemp; switch(m_ComPort.GetCommEvent() case
14、 1: / comEvSend發(fā)送數(shù)據(jù) break; case 2: / comEvReceive讀取數(shù)據(jù) 串口接收事件到來(lái)/ MessageBox(_T("讀取數(shù)據(jù)事件"), _T("TRACE"), MB_OK); variant_inp=m_ComPort.GetInput(); /讀緩沖區(qū) safearray_inp=variant_inp; /VARIANT型變量轉(zhuǎn)換為ColeSafeArray型變量 len=safearray_inp.GetOneDimSize(); /得到有效數(shù)據(jù)長(zhǎng)度 / 接受數(shù)據(jù) for(k=0; k<len; k+) safearray_inp.GetElement(&k,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)藥銷(xiāo)售代理合同全文
- 化工原料進(jìn)口代理合同(范本)
- 夫妻和諧共處合同書(shū)
- 員工合同樣本集錦
- 國(guó)內(nèi)快遞運(yùn)輸服務(wù)合同細(xì)則
- 單位公益捐贈(zèng)合同協(xié)議
- 合資公司成立的投資合同范本
- 合成氣生產(chǎn)中的催化劑考核試卷
- 寵物友好公共設(shè)施清潔保養(yǎng)質(zhì)量監(jiān)管考核試卷
- 康復(fù)輔具適配與物理治療結(jié)合考核試卷
- 微信小程序培訓(xùn)課件
- ACUSONX150西門(mén)子彩色多普勒超聲系統(tǒng)
- berg平衡評(píng)定量表
- EPC總承包項(xiàng)目財(cái)務(wù)管理要點(diǎn)
- 一年級(jí)下學(xué)期開(kāi)學(xué)家長(zhǎng)會(huì)
- 發(fā)動(dòng)機(jī)飛輪殼加工工藝及其夾具設(shè)計(jì)
- 中國(guó)控制會(huì)議論文模板英文
- 前廳羅盤(pán)系統(tǒng)操作細(xì)則
- 迅達(dá)扶梯9300AE故障代碼
- 二年級(jí)下冊(cè)數(shù)學(xué)課件-第三單元 對(duì)稱(chēng)圖形 ppt(29張) 北京版(2021秋)
- 《各種各樣的橋》ppt課件
評(píng)論
0/150
提交評(píng)論