



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、MiniARM M3350UM01010101V1.00Date: 2013/02/09產(chǎn)品 用戶手冊類別內(nèi)容TCP、epcTCPIP摘 要介紹User ManualMiniARM M3350修訂歷史i版本日期原因V1.002013/02/09創(chuàng)建文檔MiniARM M3350目錄1. TCP服務(wù)器應(yīng)用開發(fā)示例11.11.2示例目標(biāo)1示例步驟1建立和配置工程1繪制框1添加代碼21.2.11.2.21.2.31MiniARM M33501. TCP服務(wù)器應(yīng)用開發(fā)示例本節(jié)舉例說明如何使用 epcTCPIP示例目標(biāo)包,進(jìn)行 TCP 服務(wù)器端應(yīng)用程序的開發(fā)。1.1MINIARM M3350 工控機(jī)主板
2、上面提供了 Windows Embedded Compact 7 操作系統(tǒng)中的TCP/IP開發(fā)包。此應(yīng)用開發(fā)示例通過 VS2008 編寫一個運(yùn)行于 MINIARM M3350 上面的 WindowsEmbedded Compact 7 操作系統(tǒng)中的應(yīng)用程序。此應(yīng)用程序通過使用 epcTCPIP包來實現(xiàn)TCP 客戶機(jī)的通訊。此應(yīng)用程序可以讓以太網(wǎng)上面的任何一臺 TCP 客戶機(jī),跟 MINIARMM3350 上的以太網(wǎng)適配器,進(jìn)行 TCP 服務(wù)器的通訊。MINIARM M3350 工控機(jī)主板上提供的 epcTCPIP包的使用見epcTCPIP包使用說明。1.2示例步驟下面詳細(xì)說明本示例的建立、代碼
3、編寫、運(yùn)行等過程。1.2.1建立和配置工程(1) 新建工程。在 VS2008 里面新建一個 MFC 智能設(shè)備應(yīng)用程序的工程,工程名為tcp_server。程包含 Windows(2) 添加 epcTCPIPSDK 類型為“M3350_SDK”,應(yīng)用程序類型為“基于套接字屬性,資源語言選擇“中文(中國)”。包到工程。框”,工1.2.2繪制框(1)框,如圖 1.1所示。在資源視圖里面的框資源下面繪制圖 1.1 TCP 服務(wù)器框(2)更改相關(guān)控件ID。框上面的控件命名如下表 1.1所示。1MiniARM M3350表 1.1各控件屬性列表(3) 給框一些控件添加成員變量,如表 1.2所示。表 1.2
4、 添加成員變量添加代碼頭文件的配置在 tcp_serverDlg.h 文件包含頭文件 epcTCPIP.h。在 tcp_serverDlg.h 文件開始,宏定義用戶接收數(shù)據(jù)緩沖區(qū)大小,2#define RX_BUF_SIZE 100變量類型ID變量名CComboBoxBO_localipm_localipIDC_EDIT_localportm_localportCEditIDC_EDIT_remoteportm_remoteportCEditIDC_EDIT_remotipm_remoteipCEditIDC_EDIT_rxm_rxCEditIDC_EDIT_txm_txCButtonIDC_
5、BUTTON_openm_open控件名稱標(biāo)題ID說明下拉列表框(Edit Box)BO_localip本地IP 地址列表編輯框(Edit Box)IDC_EDIT_localport本地端編輯框(Edit Box)IDC_EDIT_remotipIP 地址編輯框(Edit Box)IDC_EDIT_remoteport端編輯框(Edit Box)IDC_EDIT_rx數(shù)據(jù)接收窗口編輯框(Edit Box)IDC_EDIT_tx數(shù)據(jù)發(fā)送窗口按鈕(Button)啟動IDC_BUTTON_open啟動TCP 服務(wù)器按鈕(Button)停止IDC_BUTTON_close關(guān)閉此次連接按鈕(Butto
6、n)清空IDC_BUTTON_rxclr清空數(shù)據(jù)接收窗口按鈕(Button)清空IDC_BUTTON_txclr清空數(shù)據(jù)發(fā)送窗口按鈕(Button)發(fā)送IDC_BUTTON_send發(fā)送數(shù)據(jù)MiniARM M3350注意,此宏定義應(yīng)該小于 1460。也就是小于宏“ DATA_LEN_MAX”。然后在“CTcp_serverDlg”類中添加公有屬性,如程序1.1所示。程序1.1 在框類中添加的屬性程序程序程序1.1 (1):定義一個TCP/IP服務(wù)的句柄;1.1 (2):定義一個用戶接收數(shù)據(jù)緩沖區(qū);1.1 (3):定義用戶接收數(shù)據(jù)緩沖區(qū)游標(biāo)。(2)用戶接收數(shù)據(jù)回調(diào)函數(shù),如程序1.2所示。程序1.
7、2TCP 服務(wù)器接收數(shù)據(jù)回調(diào)函數(shù)代碼3void mytcpipReceivedata (void*pvOutput,unsigned longulIpaddr,unsigned shortulPort,char*pcData,unsigned shortusDatalength)CTcp_serverDlg *cupdlgTmp = (CTcp_serverDlg *)pvOutput;(1) CString csTmpstr;if (usDatalength = TCP_TERMINATE | usDatalength = ERR_RX_THREAD) (2) cupdlgTmp-m_ope
8、n.EnableWindow(true);cupdlgTmp-m_localip.EnableWindow(true);CEdit *ceditTmp = (CEdit *)cupdlgTmp-GetDlgItem(IDC_EDIT_localport); ceditTmp-EnableWindow(true);cupdlgTmp-m_remoteip.EnableWindow(true); cupdlgTmp-m_remoteport.EnableWindow(true); return;if (usDatalength = TCP_CONNECTED) (3)csTmpstr.Format
9、(_T(%d.%d.%d.%d), ulIpaddr&0 xff, (ulIpaddr 8) & 0 xff,(ulIpaddr 16) & 0 xff, (ulIpaddr 24) & 0 xff);public:HANDLEctcpipLocal;(1)unsigned short pusRxbufRX_BUF_SIZE;(2)unsigned short usIndex;(3)MiniARM M3350程序1.2 (1):轉(zhuǎn)換用戶指針參數(shù)pvOutput的數(shù)據(jù)類型為當(dāng)前窗口的指針。以前對窗口進(jìn)行操作;程序1.2 (2):如果epcTCPIP包里面的線程出錯后者連接終止,啟動框上相應(yīng)控件;
10、程序1.2 (3):如果有接已經(jīng)建立,刷新框上面的IP地址和端信息;程序1.2 (4):判斷用戶接收緩沖區(qū)是否溢出。如果是,彈出警告的數(shù)據(jù);框,丟掉接收到程序1.2 (5):將接收到的數(shù)據(jù)從字節(jié)型換為寬字符類型,以便用戶界面能夠正確顯示;程序清單 1.2 (6):讓接收到數(shù)據(jù)的最后一個半字節(jié)為 0,以便字符串顯示的時候比較正常;程序程序1.2 (7):在框的數(shù)據(jù)接收窗口顯示從以太網(wǎng)接收到的數(shù)據(jù);1.2 (8):移動用戶接收數(shù)據(jù)的緩沖區(qū)游標(biāo)。(3)編寫框的初始化代碼,如程序1.3所示。程序1.3 TCP 服務(wù)器示例的框初始化方法4cupdlgTmp-m_remoteip.SetWindowTex
11、t(csTmpstr); csTmpstr.Format(_T(%d), ulPort);cupdlgTmp-m_remoteport.SetWindowText(csTmpstr); return;if (cupdlgTmp-usIndex + usDatalength) RX_BUF_SIZE) (4) MessageBox(NULL,_T(Receive Buf is Full!),_T(Warning), MB_ICONHAND);return;MultiByteToWideChar(CP_ACP,0,pcData, usDatalength,&cupdlgTmp-pusRxbufcu
12、pdlgTmp-usIndex,usDatalength);(5)cupdlgTmp-pusRxbufcupdlgTmp-usIndex+usDatalength = 0;(6)cupdlgTmp-m_rx.SetWindowText(cupdlgTmp-pusRxbuf);(7)cupdlgTmp-usIndex = (unsigned short)(cupdlgTmp-usIndex + usDatalength);(8)MiniARM M33505BOOL CTcp_serverDlg:OnInitDialog()CDialog:OnInitDialog();/ Set the icon
13、 for this dialog. The framework does this automatically/ when the applications main window is not a dialog SetIcon(m_hIcon, TRUE); / Set big icon SetIcon(m_hIcon, FALSE);/ Set small iconCenterWindow(GetDesktopWindow(); / center to the hpc screenunsigned longulLocalip6;(1)iIpnum = 0;ctcpipLocal = epc
14、ProtocolInit(ulLocalip,&iIpnum, RX_BUF_SIZE,mytcpipReceivedata,this);(2)if (ctcpipLocal = NULL) (3)epcProtocolExit(ctcpipLocal); return 0;i;CString csTmpstr;for (i=0; i 8) & 0 xff, (ulLocalipi 16) & 0 xff, (ulLocalipi 24) & 0 xff);this-m_localip.AddString(csTmpstr);this-m_localip.SetCurSel(0);(5)thi
15、s-usIndex = 0;(6)this-m_localport = 1024;(7)this-m_remoteport.SetWindowText(_T(0);(8)this-m_remoteip.SetWindowText(_T(0.0.0.0);(9)UpdateData(false);(10)return TRUE; / return TRUE unless you set the focus to a controlMiniARM M3350程序程序1.3 (1):本地IP地址列表緩沖區(qū);1.3 (2):調(diào)用epcTCPIP包的服務(wù)初始化函數(shù),初始化本地TCP/IP服務(wù)。傳遞用戶接
16、收數(shù)據(jù)緩沖區(qū)大小和回調(diào)含函數(shù)指針到epcTCPIP包中,得到本地IP地址列表;程序1.3 (3):如果構(gòu)造函數(shù)返回本地IP地址列表為NULL,說明構(gòu)造函數(shù)執(zhí)行失敗。刪除此對象,錯誤返回;程序清單 1.3 (4):將 32 位的IP地址轉(zhuǎn)換為點(diǎn)分式的IP地址格式;程序程序程序程序程序程序1.3 (5):添加得到的IP地址列表到框的“本地IP地址”的下拉列表框;1.3 (6):初始化用戶接收數(shù)據(jù)緩沖區(qū)游標(biāo);1.3 (7):初始化本地端為 1024;為 0;1.3 (8):初始化1.3 (9):初始化端IP地址為“0.0.0.0”;1.3 (10):刷新對話框。(4)框“啟動”按鈕單擊事件,如程序1
17、.4所示。程序1.4 “啟動”按鈕單擊事件代碼6void CTcp_serverDlg:OnBUTTONopen()unsigned shortpusTmpip16; usTmplen = 0;charpcTmpip16;unsigned long ulTmplocalip= 0; unsigned long ulTmpremoteip = 0; unsigned short ulTmpremoteport = 0; boolbTmpret = false;usTmplen = this-m_localip.GetWindowText(pusTmpip, 16);(1) WideCharToM
18、ultiByte(CP_ACP,0,pusTmpip, usTmplen, pcTmpip, usTmplen, NULL,NULL);(2)pcTmpipusTmplen = 0;ulTmplocalip = inet_addr(pcTmpip);(3)UpdateDrue);MiniARM M3350程序程序程序程序1.4 (1):1.4 (2):1.4 (3):1.4 (4):從框得到用戶選擇的本地IP地址;把寬字符串轉(zhuǎn)換為字符串類型的數(shù)組;將點(diǎn)分式的IP地址類型轉(zhuǎn)換為 32 位的IP地址類型;epcTCPIP包的啟動函數(shù)epcProtocolStartup (),以TCP服務(wù)器的方式啟
19、動服務(wù);1.4 (5):程序如果協(xié)議啟動成功,禁用框相關(guān)控件。(5)框“停止”按鈕單擊事件,如程序1.5所示。程序1.5 TCP 服務(wù)器“停止”按鈕單擊事件代碼1.5 (1):1.5 (2):1.5 (3):1.5 (4):退出TCP/IP服務(wù);程序程序程序程序啟動啟動啟動框“啟動”按鈕;框“本地IP地址”下拉框;框“本地端”編輯框;7void CTcp_serverDlg:OnBUTTONclose()epcProtocolExit(ctcpipLocal);(1)this-m_open.EnableWindow(true);(2)this-m_localip.EnableWindow(tr
20、ue);(3)CEdit *ceditTmp = (CEdit *)GetDlgItem(IDC_EDIT_localport);ceditTmp-EnableWindow(true);(4)this-EndDialog(0)bTmpret = epcProtocolStartup(ctcpipLocal, PT_TCP,ulTmplocalip,(unsigned short)this-m_localport, ulTmpremoteip, ulTmpremoteport, MODE_SERVER);(4)if (bTmpret) (5)this-m_open.EnableWindow(fa
21、lse); this-m_localip.EnableWindow(false);CEdit *ceditTmp = (CEdit *)GetDlgItem(IDC_EDIT_localport); ceditTmp-EnableWindow(false);MiniARM M3350(6)數(shù)據(jù)接收窗口“清空”按鈕單擊事件,如程序1.6所示。程序1.6 接收窗口“清空”按鈕單擊事件代碼1.6 (1):1.6 (2):程序程序復(fù)位用戶接收數(shù)據(jù)緩沖區(qū)游標(biāo);清空框“數(shù)據(jù)接收窗口”的顯示區(qū)域。(7)數(shù)據(jù)發(fā)送窗口“清空”按鈕單擊事件,如程序1.7所示。程序1.7 發(fā)送窗口“清空”按鈕單擊事件代碼程序1.7
22、 (1):清空框的數(shù)據(jù)發(fā)送窗口的顯示數(shù)據(jù)。(8)框“發(fā)送”按鈕單擊事件,如程序1.8所示。程序1.8 “發(fā)送”按鈕單擊事件代碼8void CTcp_serverDlg:OnBUTTONsend()unsigned shortpusTmpip16; unsigned shortpusTmpport6;usTmplen;charpcTmpip16; unsigned longulTmpremoteip; unsigned shortulTmpremoteport;usTmplen = this-m_remoteip.GetWindowText(pusTmpip, 16);(1) WideCharT
23、oMultiByte(CP_ACP,0,pusTmpip, usTmplen, pcTmpip,void CTcp_serverDlg:OnBUTTONtxclr()this-m_tx.SetWindowText(_T();(1)void CTcp_serverDlg:OnBUTTONrxclr()this-usIndex = 0;(1)this-m_rx.SetWindowText(_T();(2)MiniARM M33501.8 (1):1.8 (2):1.8 (3):1.8 (4):1.8 (5):1.8 (6):1.8 (7):1.8 (8):框得到IP地址;程序程序程序程序程序程序程
24、序程序點(diǎn)。從轉(zhuǎn)換寬字符類型為字符串類型;轉(zhuǎn)轉(zhuǎn)點(diǎn)分式的IP地址為 32 位的IP地址類型;從框得到端;轉(zhuǎn)換寬字符類型為整型;從框發(fā)送窗口得到要發(fā)送的數(shù)據(jù);轉(zhuǎn)換寬字符串類型為字符串類型;epcTCPIP包提供發(fā)送數(shù)據(jù)的函數(shù)將數(shù)據(jù)發(fā)送到IP終節(jié)(9)至此,TCP 服務(wù)器的示例就實現(xiàn)完成了。(10) 啟動 MINIARM M3350 的 Windows Embedded Compact 7 操作系統(tǒng),用 USB 電纜連接MINIARM M3350 和 PC 機(jī),通過 USB 建立MINIARM M3350 Windows EmbeddedCompact 7 與 PC 機(jī) Windows 的 ActiveSync 連接,同時以太網(wǎng)口。(11) 在 VS2008 的中,解決方案配置選擇 Release,然后選擇菜單“生成”“部署解決方案”,工程開始編譯。如果編譯成功,將自動部署本示例的可執(zhí)行文件tcp_server.exe 到 MINIARM M3350 上。可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 開發(fā)潛力2024年福建事業(yè)單位考試試題及答案
- 社區(qū)購房聚會協(xié)議
- 家庭式餐飲服務(wù)協(xié)議
- 豐富的復(fù)習(xí)資源二級建造師試題及答案
- 合作采購建材任務(wù)協(xié)議
- 六年級品德與社會下冊 人類唯一的家園3第二課時教學(xué)設(shè)計 鄂教版
- 架空線路維護(hù)協(xié)議
- 生產(chǎn)制造外包合同
- 電氣模電考試題及答案
- 理解調(diào)酒師角色定位的試題及答案
- (高清版)TDT 1037-2013 土地整治重大項目可行性研究報告編制規(guī)程
- 意大利古羅馬斗獸場課件
- 2023年4月自考11746國際商務(wù)與國際營銷試題及答案
- 供配電技術(shù) 課件 第4章-變配電系統(tǒng)的電氣設(shè)備及選擇
- 國內(nèi)外先進(jìn)安全生產(chǎn)管理經(jīng)驗(繼續(xù)教育)課件
- 二模沖刺動員主題班會通用課件
- 大學(xué)國旗護(hù)衛(wèi)班培訓(xùn)方案
- 胃腸術(shù)后吻合口瘺的觀察與護(hù)理
- 醫(yī)療器械生產(chǎn)中的生產(chǎn)線布局與優(yōu)化
- 醫(yī)院年度經(jīng)濟(jì)運(yùn)營分析報告
- 圓柱的認(rèn)識說課演示稿
評論
0/150
提交評論