![串口調(diào)試助手代碼分析3_第1頁](http://file4.renrendoc.com/view/7929da5ea240a37b9943466a60f64a9d/7929da5ea240a37b9943466a60f64a9d1.gif)
![串口調(diào)試助手代碼分析3_第2頁](http://file4.renrendoc.com/view/7929da5ea240a37b9943466a60f64a9d/7929da5ea240a37b9943466a60f64a9d2.gif)
![串口調(diào)試助手代碼分析3_第3頁](http://file4.renrendoc.com/view/7929da5ea240a37b9943466a60f64a9d/7929da5ea240a37b9943466a60f64a9d3.gif)
![串口調(diào)試助手代碼分析3_第4頁](http://file4.renrendoc.com/view/7929da5ea240a37b9943466a60f64a9d/7929da5ea240a37b9943466a60f64a9d4.gif)
![串口調(diào)試助手代碼分析3_第5頁](http://file4.renrendoc.com/view/7929da5ea240a37b9943466a60f64a9d/7929da5ea240a37b9943466a60f64a9d5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——串口調(diào)試助手代碼分析3第5章串口調(diào)試助手代碼分析1、建立基于對話框的工程SCOMM2、繪制界面,如下圖:
接收區(qū)
串口組合框:IDC_COMBO_COMSELECT,m_Com波特率組合框:IDC_COMBO_SPEED,m_Speed
中止位組合框:IDC_COMBO_STOPBITS,m_StopBits數(shù)據(jù)位組合框:IDC_COMBO_DATABITS,m_DataBits校驗(yàn)位組合框:IDC_COMBO_PARITY,m_Parity十六進(jìn)制顯示(接收):IDC_CHECK_HEXRECIEVE,m_ctrlHexReceieve接收編輯框:IDC_EDIT_RECIVE,m_ReceiveDatam_ctrlReceiveDataStyle:VerticalScrollMultiLine
開啟串口IDC_BUTTON_OPENPORT,m_ctrlOpenPort
串口開關(guān)標(biāo)志圖標(biāo)IDC_STATIC_OPENOFF,m_ctrlIconOpenoff數(shù)據(jù)文件保存路徑IDC_EDIT_SAVEPATH,m_strCurPath
保存顯示數(shù)據(jù)文件路徑IDC_EDIT_SAVEPATH,m_ctrlSavePath接收計(jì)數(shù)IDC_STATIC_RXCOUNT,m_ctrlRXCOUNT
發(fā)送區(qū)
…。。。。。。。。。。。。。。
3、添加CSeraiPort類文件
將類文件SerialPort.hSerialPort.cpp復(fù)制到工程所在文件夾中(選擇改進(jìn)
后的類),然后單擊VC6.0菜單Projrct->AddtoProjrct->Files…,再在開啟的文件選擇對話框中選擇SerialPort.h和SerialPort.cpp,點(diǎn)擊OK,就把類文件參與當(dāng)前工程,并在SCOMMDlg.h中參與頭文件,#include\,通過上述步驟就在當(dāng)前工程中參與了CSeraiPort類。4、完成串口消息處理函數(shù)OnCommunicatiom
在CserailPort類中有多個(gè)串口事件可以響應(yīng)。在一般串口編程中,只需要處理WM_COMM_RXCHAR消息就可以了,該類所有的消息均需要人工添加消息處理函數(shù)。我們將處理函數(shù)名定義為OnComm()。首先在SCOMMDlg.h中添加串口字符接收消息WM_COMM_RXCHAR(串口接收緩沖區(qū)內(nèi)有一個(gè)字符)響應(yīng)函數(shù)的聲明:如下圖
然后,在SCOMMDlg.cpp文件中進(jìn)行WM_COMM_RXCHAR消息映射:如下圖;
接著,在SCOMMDlg.cpp文件中參與函數(shù)OnCommunication(WPARAMch,LPARAMport)的實(shí)現(xiàn),暫不添加代碼。
LONGCSCOMMDlg::OnCommunication(WPARAMch,LPARAMport){
return0;}
以上步驟需要手工完成。
至此完成了程序的對話框模板,在工程中插入了串口操作類CserailPort類。
5、添加串口初始化及關(guān)閉
程序中有兩種方法大開串口,一是程序啟動(dòng),調(diào)用OnInitDialog()函數(shù),就可以開啟串口,缺少的串口號為COM1,假使COM1不存在或占用,就會(huì)給出提醒;另外,單擊“開啟串口〞按鈕也可以開啟串口。//在初始化中開啟串口
BOOLCSCOMMDlg::OnInitDialog(){
m_nBaud=9600;//波特率m_nCom=1;//串口號m_cParity='N';//奇偶校驗(yàn)
m_nDatabits=8;//數(shù)據(jù)位m_nStopbits=1;//中止位
m_dwCommEvents=EV_RXFLAG|EV_RXCHAR;//串口事件//if(m_Port.InitPort(this,1,9600,'N',8,1,dwCommEvents,512))CStringstrStatus;
if(m_Port.InitPort(this,m_nCom,
m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512))//假使啟動(dòng)串口成功{m_Port.StartMonitoring();//啟動(dòng)監(jiān)測輔助線程strStatus.Format(\:COM%dOPENED,%d,%c,%d,%d\m_nBaud,m_cParity,m_nDatabits,m_nStopbits);//打印串口狀態(tài)及參數(shù)m_ctrlIconOpenoff.SetIcon(m_hIconRed);//m_ctrlIconOpenoff.SetIcon(m_hIconOff);//\當(dāng)前狀態(tài):串口開啟,無奇偶校驗(yàn),8數(shù)據(jù)位,1中止位\}
else//假使啟動(dòng)失敗{AfxMessageBox(\沒有發(fā)現(xiàn)此串口\m_ctrlIconOpenoff.SetIcon(m_hIconOff);}
m_ctrlPortStatus.SetWindowText(strStatus);//顯示串口的狀態(tài)及參數(shù)returnb;}
6、在ClassWizard中為按鈕“開啟串口〞控制IDC_BUTTON_OPENPORT添加單擊響應(yīng)函數(shù)。//開啟,關(guān)閉串口
voidCSCOMMDlg::OnButtonOpenport(){
//TODO:Addyourcontrolnotificationhandlercodeherem_bOpenPort=!m_bOpenPort;//取反if(m_bOpenPort)//關(guān)閉串口{if(m_ctrlAutoSend.GetCheck()){m_bOpenPort=!m_bOpenPort;AfxMessageBox(\請先關(guān)掉自動(dòng)發(fā)送\return;}m_ctrlOpenPort.SetWindowText(\開啟串口\m_Port.ClosePort();//關(guān)閉串口m_ctrlPortStatus.SetWindowText(\:COMPortClosed\
m_ctrlIconOpenoff.SetIcon(m_hIconOff);}
else//開啟串口{m_ctrlOpenPort.SetWindowText(\關(guān)閉串口\CStringstrStatus;if(m_Port.InitPort(this,m_nCom,
m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512)){m_Port.StartMonitoring();m_ctrlIconOpenoff.SetIcon(m_hIconRed);//m_hIconRed;串口開啟時(shí)的紅燈圖標(biāo)句柄
strStatus.Format(\:COM%dOPENED,%d,%c,%d,%d\m_nBaud,m_cParity,m_nDatabits,m_nStopbits);//\當(dāng)前狀態(tài):串口開啟,無奇偶校驗(yàn),8數(shù)據(jù)位,1中止位\}else//假使沒有開啟串口成功{AfxMessageBox(\沒有發(fā)現(xiàn)此串口或被占用\m_ctrlIconOpenoff.SetIcon(m_hIconOff);//m_hIconOff串口關(guān)閉時(shí)的紅燈指示圖標(biāo)句柄}m_ctrlPortStatus.SetWindowText(strStatus);}}
7、為了在程序關(guān)閉時(shí)通過關(guān)閉串口并釋放占用資源,在ClassWizard中為CSCOMMDlg添加了WM_DISTROY的消息響應(yīng)函數(shù)OnDestroy(),函數(shù)在主窗口即將銷毀時(shí)調(diào)用。
//為主窗口關(guān)閉時(shí)添加關(guān)閉響應(yīng)函數(shù)voidCSCOMMDlg::OnDestroy(){
CDialog::OnDestroy();
m_ctrlAutoSend.SetCheck(0);//強(qiáng)行關(guān)閉自動(dòng)發(fā)送KillTimer(1);//關(guān)閉定時(shí)器KillTimer(4);
m_Port.ClosePort();//關(guān)閉串口
m_ReceiveData.Empty();//清空接收數(shù)據(jù)字符串}
8、十六進(jìn)制數(shù)據(jù)發(fā)送處理
首先為CSCOMMDlg類添加兩個(gè)成員函數(shù)Str2Hex()和HexChar,前者對后者進(jìn)行了調(diào)用,Str2Hex()的作用是將一個(gè)字符串作為十六進(jìn)制轉(zhuǎn)化為一個(gè)字符組,其中,data即為返回的數(shù)組,函數(shù)的返回值為data數(shù)組的長度。
//將一個(gè)字符串作為十六進(jìn)制轉(zhuǎn)化為一個(gè)字符數(shù)組,字節(jié)間可用空格分隔,//返回轉(zhuǎn)換后的字節(jié)數(shù)組長度,同時(shí)字節(jié)數(shù)組長度自動(dòng)設(shè)置intCSCOMMDlg::Str2Hex(CStringstr,char*data){
intt,t1;
intrlen=0,len=str.GetLength();//data.SetSize(len/2);for(inti=0;i=len)break;l=str[i];t=HexChar(h);t1=HexChar(l);if((t==16)||(t1==16))
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人借款合同簡化版模板
- 個(gè)人經(jīng)營性貸款合同范例
- 二級經(jīng)銷商代理合作合同范本
- 個(gè)人獨(dú)資企業(yè)股權(quán)轉(zhuǎn)讓合同書
- 下水道施工合同
- 醫(yī)療藥品采購合同
- 二零二五年度解除房屋租賃合同后的違約責(zé)任認(rèn)定及處理
- 二零二五年度江蘇省人事勞動(dòng)合同(新能源產(chǎn)業(yè)人才合作)
- 2025年度網(wǎng)絡(luò)劇配套演出節(jié)目編排許可合同
- 2025年度體育俱樂部綜合運(yùn)動(dòng)教練聘用合同
- 醫(yī)院投訴糾紛及處理記錄表
- YY/T 0698.5-2023最終滅菌醫(yī)療器械包裝材料第5部分:透氣材料與塑料膜組成的可密封組合袋和卷材要求和試驗(yàn)方法
- 【深度教學(xué)研究國內(nèi)外文獻(xiàn)綜述2100字】
- 牽引管道孔壁與管道外壁之間注漿技術(shù)方案
- 新人教版四年級下冊數(shù)學(xué)教材解讀課件
- 竣工資料封面
- 膿毒血癥指南
- 中國航天知識
- 安徽華納化學(xué)工業(yè)有限公司年產(chǎn)1000噸均苯四甲酸二酐、300噸潤滑油助劑項(xiàng)目環(huán)境影響報(bào)告書
- YY 9706.230-2023醫(yī)用電氣設(shè)備第2-30部分:自動(dòng)無創(chuàng)血壓計(jì)的基本安全和基本性能專用要求
- 第8課紅樓春趣同步練習(xí)(含答案)
評論
0/150
提交評論