版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 磯r訂評範容咬 弋空纟/J I ANW IHORM Ai. UfrJl VKHSHT V 2011級通信工程 基于ARM9嵌入式Linux系統(tǒng)開發(fā) 原理與實踐課程設計報告 設計題目: 基于Linux的網(wǎng)絡通信程序設計 王強20110343025 姓名學號:鄧祖坤 20110343026 學 院: 專 業(yè): 班 級: 指導教師: 陶曉明 20110343027 工程技術學院 通信工程 2011級3班 方飛 2014年6月30日 題目:基于Linux的網(wǎng)絡通信程序設計 一、設計題目及要求 1、設計題目 基于Linux的網(wǎng)絡通信程序設計 2、設計要求 (1)基本要求 1)使用linux網(wǎng)絡編程技術
2、設計網(wǎng)絡通信程序; 2)熟練使用編譯工具 GCC和調試工具GDB ; 3)實現(xiàn)主機與開發(fā)板之間的通信; 指導教師簽名: 2014年 月 日 、指導教師評語 指導教師簽名: 2014年 月 日 二、成績 理論(60% ):分,作品(40% ):分,總分: 分 驗收蓋章 2014年 月 日 1程序設計的基本原理與思路 2 1.1 MFC 簡介3 1.2 MSComm控件簡介 3 1.2.1事件驅動方式3 122查詢方式4 1.3設計的基本思路 4 2程序設計與代碼分析 6 2.1建立工程6 2.2在工程中插入 MSComm控件 7 2.3利用ClassWizard定義CMSComm類控制對象 8
3、2.4向對話框中添加發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的編輯框 9 2.5添加串口事件消息處理函數(shù) OnComm()10 2.6 “開始” 打開串口和設置串口參數(shù) 12 2.7 發(fā)送”按鈕一一發(fā)送數(shù)據(jù) 14 2.8相關控件的屬性 16 2.9相關響應函數(shù)的建立 16 3總結17 參考文獻18 附錄19 AAAAAA 摘要 Linux系統(tǒng)是一種自由的Unix類多用戶、多任務的操作系統(tǒng),可以運行在 目前已知的PC機、ARMSMIPS和PowerPC等多種計算機平臺,已成為應用廣泛、 可靠性高、功能強大的計算機操作系統(tǒng)。Linux具有內核小、效率高、源代碼開 放等優(yōu)點,還內含了 TCP/IP網(wǎng)絡協(xié)議,很適合在服務器
4、領域使用,而服務器主 要用途之一就是進行網(wǎng)絡通信。隨著計算機辦公自動化處理技術的應用與推廣、 網(wǎng)絡的不斷普及,人們期待一種便捷、高效、環(huán)保、安全的網(wǎng)絡通信方式。 本設計就是考慮到這一現(xiàn)狀,基于Linux操作系統(tǒng)下的TCP/IP網(wǎng)絡通信 原理、多線程編程技術,使用linux編譯工具GCC和調試工具GDE設計了一個網(wǎng) 絡通信程序,實現(xiàn)計算機與開發(fā)板之間的網(wǎng)絡通信。 關鍵詞:Linux系統(tǒng); 編譯工具GCC;調試工具GDB 精品文檔你我共享 1程序設計的基本原理與思路 本設計的基本原理是利用MFC應用程序以及 Microsoft Communications Control控件的基本知識而設計的。M
5、icrosoft Communications Control控件是 Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,它為應用 程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡便方法。 1.1 MFC簡介 MFC是Visual C+是核心。MFC類庫將所有圖形用戶界面的元素如窗口、 菜單、按鈕等都以類的形式進行了封裝,MFC AppWizard向導根據(jù)繼承性利用 MFC派生出自己的類,并對 Windows應用程序進行了分解,利用 MFC派生類 對應用程序重新進行組裝,同時還規(guī)定了應用程序中各個MFC派生類對象之間 的相互聯(lián)系,實現(xiàn)了標準Windows應用程序的功能,這就是向
6、導生成的所謂 MFC 應用程序框架。每個MFC類都包括了一些函數(shù),函數(shù)放到類中,符合C+編程 方法,這些函數(shù)必須通過類定義對象才能使用。因為MFC是對API的封裝,微 軟做了大量的工作,隱藏了好多程序開發(fā)人員在Windows下用C+ I SComiinTcst A.ddl Ck理” Add Variable. pelete Variable IDC_BUTTO N_HAN UALS END I DC_6UTT0 N_MAN UALS EN02 IDC EDIT FEKDATA IDCJMSC0MM1 Descriplion: U|jdate Columns CSlringim_slrRXDat
7、a m sliTXDsin Bind All CMSCom ms m_ctrlCom m CSlring willi Icnglli viili dluliun Maximum Charoctere: CsincEl o 園KnRfeH団 E 陰 |=一 Edit tfew insert Erojert fluild Layout look Jffiirdow H*lp | | Bui 1 dX Firtd in Files 1 Fihd in Files 2 Rtsulls SQL Debug/!彳J Resacly ill o, 0320 x200 AEM1 圖2.4.2定義兩編輯框變量類
8、型 2.5添加串口事件消息處理函數(shù)OnComm() 打 開 ClassWizard 選擇 Message Maps,選擇類 CSCommTestDIg,選擇 IDC_MSCOMM1,雙擊消息On Comm,將彈出的對話框中將函數(shù)名改為 OnOnCommMscomm1。這個函數(shù)是用來處理串口消息事件的,如每當串口接收 到數(shù)據(jù),就會產(chǎn)生一個串口接收數(shù)據(jù)緩沖區(qū)中有字符的消息事件,我們剛才添加 的函數(shù)就會執(zhí)行,我們在 OnOnCommMscomm1 ()函數(shù)加入相應的處理代碼就 能實現(xiàn)自已想要的功能了。 添加串口事件消息處理函數(shù)如圖2.5.1所示。 ifl SCoenmlMt - Microsoft
9、WiujaI C*t - (iCommTit.rc - lDD_SCOMh4TEiT_DIALDG :Dialog; 曲 View |nfrfrl Projiiclarygijt Toglf Wrindow Hlp =i二k CSCqI Message Maps Erojed: SCommTcst Member Variabllt-sAutc m atlunActiveX Evcnls Class n-ame: F jcSCommTe-slDIg GztSComrnTcsIilSCcmmTcslDlg.hr GISCommTesfLSCo m mTeslDIg.cpp Object D-g:
10、Add CIem亠-I Add Functian Delete Fundieiiii CSComniTcstDIg I DC_BUTT ON_MANUALS tNID hdcIbuttonIstart BDC_EljlT_RXDATA IDC EDIT 1DATA IDC Me-gsagce: EdH Code WFC ChssWizai Me mbeir function b: V DuDstaExcliange W OnB utlonManualse ON_IDC_OUTTON_MlAN UALSE ND:ONi_CUCKED OnCammON_iDC Jvl 甌 W OnButlonSt
11、rt ON_iDC_BUTTOiN_STAnT:BH_CLICKED W DnlriiiilDiHliuyDN_WMHlTDlALQ占- 1CI. Descripllon:Occurs whenever iht vluc at the CommEvEnl property changes. OK. | Gance) 51 )CvmhTfsI:.fx? - B e-rror(s)B 0 丨丨 J jJ*-., Build / Fiftd m Filts 1 X Find 詢 Fils 2 SQL lb翌富訕e / Ready |tl 心 u 也 320 x200 Ihead J 圖2.5.1 添
12、加串口事件消息處理函數(shù) 相關代碼如下: void CSCommTestDlg:O nOn CommMscomm1() / TODO: Add your con trol no tificatio n han dler code here VARIANT varia nt_in p; COIeSafeArray safearray_i np; LONG le n,k; BYTE rxdata2048; / 設置 BYTE 數(shù)組 An 8-bit integerthat is not signed. CStri ng strtemp; if(m_ctrlComm.GetCommEvent()=2)
13、 /事件值為2表示接收緩沖區(qū)內有字符 以下你可以根據(jù)自己的通信協(xié)議加入處理代碼 variant_inp=m_ctrlComm.Getlnput(); / 讀緩沖區(qū) safearraynp=variant_inp /VARIANT 型變量轉換為 ColeSafeArray型變量 len=safearray_inp.GetOneDimSize(); 得到有效數(shù)據(jù)長度 for(k=0;kle n;k+) safearray_inp.GetElement(klen;k+) /將數(shù)組轉換為Cstring型變量 BYTE bt=*(char*)(rxdata+k); / 字符型 strtemp.Forma
14、t(%c,bt); /將字符送入臨時變量strtemp存放 m_strRXData+=strtemp; /加入接收編輯框對應字符串 UpdateData(FALSE); /更新編輯框內容 2.6“開始”一一打開串口和設置串口參數(shù) 可以在需要的時候打開串口,在程序中做一個“開始”按鈕,在該按鈕的處 理函數(shù)中打開串口和設置串口參數(shù)。在主對話框的CSCommTestDIg: On Butt on Start ()打開串口。 添加“開始”按鈕如圖 2.6.1所示。 S SCommTest - MicrcMoft Visual C* * - ISCommTcst.rc TDD_SCOMMTEST_D1A
15、LOG :Didlog: 豈 Filt Message Maps , 選擇類 CSCommTestDlg , 選 擇 IDC_BUTTON_MANUALSEND ,雙擊 BN_CLICKED 添力卩 On Butt onManu alse nd() 函數(shù)。 添加“發(fā)送”按鈕如圖2.7.1所示。 czj l)| ES 血 E 電f a- U2閏言沿 jJ CSCammTrslDlg | |Al 1 class iTiEmhErs | CSCammTLoadlco n(IDR_MAINFRAM E); void CSCommTestDlg:DoDataExcha nge(CDataEx cha n
16、ge* pDX) CDialog:DoDataExcha nge(pDX); AFX_DATA_MAP(CSCommTestDlg ) DDX_C on trol(pDX,IDC_MSCOMM1, m_ctrlComm); DDX_Text(pDX, IDC_EDIT_RXDATA, m_strRXData); DDX_Text(pDX, IDC_EDIT_TXDA TA, m_strTXData); AFX_DATA_MAP BEGIN_MESSAGE_MAP(CSCommTestDlg, CDialog) AFX_MSG_MAP(CSCommTestDlg) ON_WM_SYSCOMMAN
17、D() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON2, On Butto n2) ON_BN_CLICKED(IDC_BUTTON_M ANUALSEND, On Butt onMan ualse nd) AFX_MSG_MAP END_MESSAGE_MAP() / / / CSCommTestDlg message han dlers BOOL CSCommTestDlg:。nlni tDialog() CDialog:O nlni tDialog(); / Add About. menu item to sys
18、tem menu. / IDM_ABOUTBOX must be in the system comma nd ran ge. ASSERT(IDM_ABOUTBOX ASSERT(IDM_ABOUTBOX Appe ndMe nu(MF_SEPARA TOR); pSysMe nu-Appe ndMe nu(MF_STRING, IDM_ABOUTBOX, strAboutMe nu); / Set the icon for this dialog. The framework does this automatically / when the applications main wind
19、ow is not a dialog SetIco n(m_hlco n, TRUE);/ Set big icon SetIco n(m_hlco n, FALSE);/ Set small icon / TODO: Add extra in itializatio n here return TRUE; / return TRUE unless you set the focus to a con trol void CSCommTestDlg:O nSysComma nd(UINT nID, LPARAM lParam) if (nID dlgAbout.DoModal(); else
20、CDialog:O nSysComma nd(nlD, lParam); / If you add a mini mize butt on to your dialog, you will n eed the code below / to draw the icon. For MFC applications using the docume nt/view model, / this is automatically done for you by the framework. void CSCommTestDlg:O nPai nt() if (IsIco ni c() CPai ntD
21、C dc(this); / device con text for pain ti ng Sen dMessage(WMCONERASEBKGN D, (WPARAM) dc.GetSafeHdc(), 0); / Cen ter icon in clie nt recta ngle intcxIc on= GetSystemMetrics(SM_CXICON); intcyIc on= GetSystemMetrics(SM_CYICON); CRect rect; GetClie ntRect( int x = (rect.Width() - cxIcon + 1) / 2; int y
22、= (rect.Height() - cyIco n + 1) / 2; / Draw the icon dc.DrawIc on(x, y, m_hIc on); else CDialog:O nPa in t(); / The system calls this to obta in the cursor to display while the user drags / the mi ni mized win dow. HCURSOR CSCommTestDlg:O nQueryDraglco n() return (HCURSOR) m_hIco n; BEGIN_EVENTSINK_
23、MAP(CSCommTestD lg, CDialog) AFX_EVENTSINK_MAP(CSCommTest Dlg) ON_EVENT(CSCommTestDlg, IDC_MSCOMM1, 1/* On Comm */, On Comm, VTS_NONE) AFX_EVENTSINK_MAP END_EVENTSINK_MAP() void CSCommTestDlg:O nComm() / TODO: Add your control notification han dler code here VARIANT varia nt_inp; COIeSafeArray safea
24、rray_ inp; LONG le n,k; BYTE rxdata2048; 設置 BYTE 數(shù)組 An 8-bit in tegerthat is not sig ned. CStri ng strtemp; if(m_ctrlComm.GetCommEve nt()=2)/ 事件值為2表示接收緩沖區(qū)內有字符 協(xié)議加入處理代碼 varia nt_i np=m_ctrlComm.Getl nput();/ 讀緩沖區(qū) safearray_i np=varia nt_i np; /VARIANT 型變量轉換為 ColeSafeArray 型 變量 len=safearray_i np.GetO
25、n eDimSize(); 得到有效數(shù)據(jù)長度 for(k=0;kle n;k+) safearray_i np.GetEleme nt( 轉換為BYTE型數(shù)組 for(k=0;klen;k+) / 將數(shù)組轉換為 Cstring型變量 BYTE bt=*(char*)(rxdata+k); /字符型 strtemp.Format(%c,bt); / 將 字符送入臨時變量strtemp存放 m_strRXData+=strtemp; / 加 入接收編輯框對應字符串 UpdateData(FALSE); 更新編 輯框內容 void CSCommTestDlg:O nButto n2() / TODO
26、: Add your control notification han dler code here if(m_ctrlComm.GetPortOpe n() m_ctrlComm.SetPortOpe n(FALSE); m_ctrlComm.SetCommPort(1); / 選擇 if( !m_ctrlComm.GetPortOpe n() m_ctrlComm.SetPortOpe n(TRUE);/打 開串口 else AfxMessageBox(ca nnotope nserial port); m_ctrlComm.SetSetti ngs(9600, n,8,1); /波特率9
27、600,無校驗,8個數(shù)據(jù)位,1個 停止位 m_ctrlComm.Setl nputMode(1); 以二 進制方式檢取數(shù)據(jù) m_ctrlComm.SetRThreshold(1); / 參數(shù) 1 表示每當串口接收緩沖區(qū)中有多于或等于1 個字符時將引發(fā)一個接收數(shù)據(jù)的On Comm 事件 m_ctrlComm.Set In putLe n(0);/ 設置當 前接收區(qū)數(shù)據(jù)長度為 0 m_ctrlComm.Getlnput(); 先預讀緩沖區(qū) 以清除殘留數(shù)據(jù) void CSCommTestDlg:O nButto nMan ualse nd() / TODO: Add your control notification han dler code here UpdateData(TRUE); /讀取編輯框內容 m_ctrlComm.SetOutput(COleVaria nt(m_ strTXData);/ 發(fā)送數(shù)據(jù) com1 沁園春雪 北國風光,千里 冰封,萬里雪 飄。 望長城內外,惟 余莽莽;大河上 下,頓失滔滔。 山舞銀蛇,原馳 蠟
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度網(wǎng)絡安全應急響應與事件處理服務合同4篇
- 二零二五年度大白工程綠色節(jié)能改造施工合同4篇
- 二零二五年藝術品買賣合同明確藝術品描述、價格及交付方式3篇
- 高強高模碳纖維的原位電熱法制備及構效關系研究
- 骨髓增殖性腫瘤患者骨髓微環(huán)境免疫代謝改變及機制研究
- 微生物誘導大洋錳結核形成機理及應用研究
- 二零二五年度農(nóng)業(yè)大棚租賃與農(nóng)業(yè)旅游開發(fā)合作協(xié)議8篇
- 輻照細菌纖維素納米纖維的制備及其Pickering乳液性質研究
- 2025年度門窗安裝與新型材料應用合同4篇
- 2025版天然氣管道防腐施工合同范本2篇
- 2024企業(yè)答謝晚宴會務合同3篇
- 中華人民共和國文物保護法
- 節(jié)前物業(yè)安全培訓
- 高甘油三酯血癥相關的器官損傷
- 手術室護士考試題及答案
- 牙膏項目創(chuàng)業(yè)計劃書
- 單位食堂供餐方案
- 人教A版必修五《斐波那契數(shù)列》教案及教學反思
- 風電工程需要編寫的專項施工方案及危大工程目錄
- 商業(yè)計劃書(BP)財務計劃風險控制資本退出與附錄的撰寫秘籍
- 七年級下冊《Reading 1 A brave young man》優(yōu)質課教案牛津譯林版-七年級英語教案
評論
0/150
提交評論