




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、串口通信程序編寫基于Visual C+ Windows 7 Microsoft Visual Studio 2012 CSerialPort類(定義了串口變量和通信方法)鏈接地址:https:/ #includeSerialPort.h編程步驟編程步驟編程步驟編程步驟在對(duì)話框c文件中聲明串口類對(duì)象 CSerialPort m_SerialPort定義一個(gè)布爾變量 BOOL m_bPortOpen /用來表示標(biāo)志串口是否打開編程步驟編程步驟給控件添加變量在控件上右鍵單擊-添加變量編程步驟編程步驟給控件添加變量:編輯框編輯框只需關(guān)聯(lián)Value型變量變量名用于程序中賦值時(shí)調(diào)用編程步驟編程步驟給控件添
2、加變量:組合框ComboBox需要添加控制變量變量名用于獲取索引值編程步驟編程步驟將各個(gè)控件的變量關(guān)聯(lián)如下:m_ctrlComPortm_ctrlBaudRatem_ctrlDataBits m_ctrlPairtym_strTxMsgm_strRxMsgm_ctrlStopBitsm_strBaudRatem_strPairtyControl型變量Value型變量Value型變量編程步驟編程步驟對(duì)寫好的對(duì)話框進(jìn)行一個(gè)初始化在初始化函數(shù)OnInitDialog()中添加如下語句:BOOL C串口通信程序Dlg:OnInitDialog()CDialogEx:OnInitDialog();m_c
3、trlComPort.SetCurSel(0);/設(shè)置默認(rèn)的索引值m_ctrlBaudRate.SetCurSel(0);m_ctrlPairty.SetCurSel(0);m_ctrlDataBits.SetCurSel(3);m_ctrlStopBits.SetCurSel(0);GetDlgItem(IDC_BUTTON1)-EnableWindow(TRUE);/把窗口中的“打開串口”置為活動(dòng)的可操作狀態(tài)GetDlgItem(IDC_BUTTON2)-EnableWindow(FALSE);/把窗口中的“關(guān)閉串口”置為灰色的不可操作狀態(tài)編程步驟編程步驟向?qū)υ捒蝾^文件中添加串口接收字符函
4、數(shù)的消息響應(yīng)聲明響應(yīng)Cserialport類中的消息響應(yīng)函數(shù)-OnComm接收數(shù)據(jù)編程步驟編程步驟然后再向?qū)υ捒駽PP文件中添加OnComm函數(shù)的消息映射響應(yīng)Cserialport類中的消息響應(yīng)函數(shù)-OnComm接收數(shù)據(jù)編程步驟編程步驟接著,在對(duì)話框CPP文件中加入函數(shù)OnComm()的實(shí)現(xiàn)至此,每當(dāng)串口接收緩沖區(qū)中有一個(gè)字符時(shí),就會(huì)產(chǎn)生一個(gè)WM_ONCOMM_RXCHAR消息,觸發(fā)OnComm()函數(shù),這時(shí)就可以在函數(shù)中進(jìn)行數(shù)據(jù)處理響應(yīng)Cserialport類中的消息響應(yīng)函數(shù)-OnComm接收數(shù)據(jù)編程步驟編程步驟編寫按鈕控件消息響應(yīng)處理函數(shù)-打開串口編程步驟編程步驟編寫按鈕控件消息響應(yīng)處理函
5、數(shù)-打開串口void C串口通信程序Dlg:OnBnClickedButton1()int SelPort,SelBaudRate,SelDataBits,SelStopBits;char SelParity; /定義字符型變量SelPort=m_ctrlComPort.GetCurSel()+1; /得到串口號(hào);GetCurSel()得到的是索引值(0-Max)SelStopBits=m_ctrlStopBits.GetCurSel()+1; /得到停止位SelDataBits=m_ctrlDataBits.GetCurSel()+5; /得到數(shù)據(jù)位UpdateData(TRUE); /把選
6、定值寫入變量SelBaudRate=atoi(m_strBaudRate); /得到波特率值;atoi是將字符型轉(zhuǎn)整型函數(shù)(9600-9600)SelParity=m_strPairty.GetAt(0); /獲得數(shù)據(jù)位;GetAt返回的是字符串的第一個(gè)字符值if(m_SerialPort.InitPort(this-GetSafeHwnd(),SelPort,SelBaudRate,SelParity,SelDataBits,SelStopBits,EV_RXFLAG | EV_RXCHAR,512)m_SerialPort.StartMonitoring(); /啟動(dòng)串口通信檢測(cè)線程函數(shù)m
7、_bPortOpen=TRUE; /指示串口已打開UpdateData(FALSE);elseAfxMessageBox(沒有發(fā)現(xiàn)此串口或者被占用); /返回一個(gè)提示窗口m_bPortOpen=FALSE; /指示串口已關(guān)閉GetDlgItem(IDC_BUTTON1)-EnableWindow(!m_bPortOpen);/根據(jù)串口開閉的情況,禁用或使能按鈕GetDlgItem(IDC_BUTTON2)-EnableWindow(m_bPortOpen); /根據(jù)串口開閉的情況,禁用或使能按鈕編程步驟編程步驟編寫按鈕控件消息響應(yīng)處理函數(shù)-關(guān)閉串口void C串口通信程序Dlg:OnBnCli
8、ckedButton2()m_bPortOpen=FALSE; /指示串口已關(guān)閉GetDlgItem(IDC_BUTTON1)-EnableWindow(!m_bPortOpen);/使能“打開串口”按鈕GetDlgItem(IDC_BUTTON2)-EnableWindow(m_bPortOpen); /禁用“關(guān)閉串口”按鈕以同樣的方法打開“關(guān)閉串口”按鈕的消息函數(shù),插入下面語句編程步驟編程步驟編寫按鈕控件消息響應(yīng)處理函數(shù)-發(fā)送以同樣的方法打開“發(fā)送”按鈕的消息函數(shù),插入下面語句void C串口通信程序Dlg:OnBnClickedButton3() if(!m_bPortOpen) /檢測(cè)串口是否打開 return ; /如果關(guān)閉,則結(jié)束函數(shù) else /如果打開,則執(zhí)行下面語句 UpdateData(TRUE); /讀入編輯框的數(shù)據(jù)(把編輯框中的字符寫入變量) m_SerialPort.WriteToPort(LPCTSTR)m_strTxMsg); /調(diào)用函數(shù)發(fā)送數(shù)據(jù)編程步驟編程步驟編寫按鈕控件消息響應(yīng)處理函數(shù)-清空以同樣的方法打開“清空”按鈕的消息函數(shù),插入下面語句void C串口通信程序Dlg:OnBnClickedButt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年臥式離子風(fēng)機(jī)項(xiàng)目資金申請(qǐng)報(bào)告代可行性研究報(bào)告
- 2025年廣西安全工程職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫帶答案
- 2025屆河北省廊坊市高三上學(xué)期期末英語試題及答案
- 2025年度建筑改造項(xiàng)目承重墻拆除安全責(zé)任免責(zé)協(xié)議
- 2025年度拆除施工與建筑垃圾回收合同
- 2025年度電力設(shè)施安全保證金合同
- 2025年度廢輪胎回收與橡膠顆粒生產(chǎn)合同
- 2025年度房地產(chǎn)銷售代理與服務(wù)合同
- 2025年度醫(yī)療機(jī)構(gòu)與保險(xiǎn)公司合作康復(fù)服務(wù)協(xié)議
- 2025年度工業(yè)廠房轉(zhuǎn)租租賃合同
- 機(jī)動(dòng)車牌證申請(qǐng)表格模板(完整版)
- 部編版小學(xué)語文三年級(jí)(下冊(cè))學(xué)期課程綱要
- 道路交通事故責(zé)任認(rèn)定行政復(fù)議申請(qǐng)書范例
- 高效液相含量測(cè)定計(jì)算公式
- 六宮格數(shù)獨(dú)解題技巧
- 公安機(jī)關(guān)通用告知書模板
- 工程款支付審批流程圖
- 人教版七年級(jí)歷史下冊(cè)第一單元填空題
- 封頭重量和容積計(jì)算
- 《小學(xué)數(shù)學(xué)課程與教學(xué)》教學(xué)大綱
- 《手機(jī)攝影》全套課件(完整版)
評(píng)論
0/150
提交評(píng)論