freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于stm32和dm9000的照明控制系統(tǒng)畢業(yè)論文(編輯修改稿)

2024-08-15 10:19 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 TCP/ IP 實(shí)現(xiàn)一般要基于多任務(wù)處理環(huán)境,而大多數(shù) 8 位機(jī)系統(tǒng)不具備這個(gè)條件; ③ 應(yīng)用程序主動(dòng)參與部分協(xié)議棧功能的實(shí)現(xiàn) (如 TCP 的重發(fā)機(jī)制,數(shù)據(jù)包分段和流量控制 ),由 UIP 內(nèi)核設(shè)置重發(fā)事件,應(yīng)用程序重新生成數(shù)據(jù)提交發(fā)送,免去了大量?jī)?nèi)部緩存的占用?;谑录?qū)動(dòng)的應(yīng)用接口使得這些實(shí)現(xiàn)較為簡(jiǎn)單。正是由于 UIP 所具有的以上顯著特點(diǎn),自從 0. 6 版本以來(lái)就被移植到多種處理器上,包括 MSP4 AVR 和 Z80 等。 協(xié)議棧接口 圖 1 描述了 UIP、底層系統(tǒng)和應(yīng)用程序三者之間的調(diào)用關(guān)系。其中 UIP 協(xié)議通過(guò)一系列接口函數(shù)與底層系統(tǒng)和上層應(yīng)用程序通信,它內(nèi)部的協(xié)議集合對(duì)外部系統(tǒng)來(lái)說(shuō)是透明的,從而增強(qiáng)了該協(xié)議的通用性和獨(dú)立性,可以非常方便地移植到不同系統(tǒng)和應(yīng)用平臺(tái)。圖 1描述了 UIP、底層系統(tǒng)和應(yīng)用程序三者之間的調(diào)用關(guān)系。其中 UIP 提供了 3 個(gè)函數(shù)給底層系統(tǒng): uip— init()39。uip— input()’ uip— periodic()。應(yīng)用程序向 UIP 提供一個(gè)調(diào)用函數(shù) uip appcall(),在網(wǎng)絡(luò)事件或計(jì)時(shí)事件發(fā)生時(shí)進(jìn)行調(diào)用;同時(shí), UIP 也要向應(yīng)用程序提供一些與協(xié)議棧的接口函數(shù),應(yīng)用程序根據(jù)接口函 數(shù)提供的信息或者狀態(tài),執(zhí)行相應(yīng)的操作。 Uipappcall() 應(yīng)用程序 UIP 協(xié)議棧 安徽建筑大學(xué)畢業(yè)設(shè)計(jì)(論文) 12 Uipinput() uipperiodc() 圖 UIP、底層系統(tǒng)和應(yīng)用程序之間的調(diào)用關(guān)系 設(shè)備驅(qū)動(dòng)程序接口 :UIP 內(nèi)核中有兩個(gè)函數(shù)直接提供給底層設(shè)備驅(qū)動(dòng)程序。一個(gè)是 uip— input(),當(dāng)設(shè)備驅(qū)動(dòng)程序從網(wǎng)絡(luò)層收到的一個(gè)數(shù)據(jù)包時(shí)要調(diào)用 這個(gè)函數(shù),設(shè)備驅(qū)動(dòng)程序必須事先將數(shù)據(jù)包存入到 uip bur 中,包長(zhǎng)放到 uip— len,然后交由 uip— input()處理。當(dāng)函數(shù)返回時(shí),如果 uip— len 不為 0,則表明有帶外數(shù)據(jù) (如 SYN, ACK 等 )要發(fā)送。當(dāng)需要 ARP 支持時(shí),還需要考慮更新ARP 表示或發(fā)出 ARP 請(qǐng)求和回應(yīng)。以下代碼即為設(shè)備驅(qū)動(dòng)程序從網(wǎng)絡(luò)層收到的個(gè)數(shù)據(jù)包后的處理過(guò)程: define BUF ((struet uip— eth— hdr*)amp。uip— buf[O]) uip — len=ethemet — devicedriver — poll(); //接收以太網(wǎng)數(shù)據(jù)包 (設(shè)備驅(qū)動(dòng)程序 ) if(uip— len0){ //收到數(shù)據(jù) if(BUF 一 type: : HTONS(UIP — ETHTYPE — IP)){ 底 層 系 統(tǒng) 網(wǎng)卡驅(qū)動(dòng) 系統(tǒng)定時(shí)器 安徽建筑大學(xué)畢業(yè)設(shè)計(jì)(論文) 13 //是 IP 包嗎 ? uip — arp— ipin(); //去除以太網(wǎng)頭結(jié)構(gòu),更新 ARP 表 uip — input(); // IP包處理 if(uip— len0){ //有帶外回應(yīng)數(shù)據(jù) uiparp out(); //加以太網(wǎng)頭結(jié)構(gòu), 在主動(dòng)連接時(shí)可能要構(gòu)造 ARP 請(qǐng)求 ethemet — devieedriver — send(); //發(fā)送數(shù)據(jù)到以太網(wǎng) (設(shè)備驅(qū)動(dòng)程序 ) } }else if(sot 一 type==HTONS(U1PETHTYPEARP)){ //是 ARP 請(qǐng)求包 uip — arp— arpin();//如是是 ARP 回應(yīng),更新 ARP 表; 如果是請(qǐng)求,構(gòu)造回應(yīng)數(shù)據(jù)包 if(uip— len0){ //是 ARP 請(qǐng)求,要發(fā)送回應(yīng) ether — devicedriver — send(); //發(fā) ARP 回應(yīng)到以太網(wǎng)上 另一個(gè) UIP內(nèi)核直接提供給底層設(shè)備驅(qū)動(dòng)程序的函數(shù)是 uip— periodic(conn)。這個(gè)函數(shù)用于 UIP 內(nèi)核對(duì)各連接的定時(shí)輪循,因此需要一個(gè)硬件支持的定時(shí)程序安徽建筑大學(xué)畢業(yè)設(shè)計(jì)(論文) 14 周期性地用它輪循各連接,一般用于檢查主機(jī)是否有數(shù)據(jù)要發(fā)送,如有,則構(gòu)造IP 包。以下示例即為 UIP 內(nèi)核對(duì)各連接的定時(shí)輪循過(guò)程: for(i=0; iUIP— CONNS; i++){ uip — periodic(i); if(uip— lenO){ uip — arp— out(); ethemet — devicedriver — send(); 從本質(zhì)上來(lái)說(shuō), uip— input()和 uip— periodic()在內(nèi)部是一個(gè)函數(shù), 即 uip— process(u8 一 t flag), uIP 的設(shè)計(jì)者將 uip— process(UIP— DATA)定義成uip_intput(),而將 uip— process(UIP— TIMER)定義成 uip— periodic(),因此從代碼實(shí)現(xiàn)上來(lái)說(shuō)是完全復(fù)用的。 應(yīng)用程序接口 :UIP 使用基于事件的程序模式,應(yīng)用程序由 c語(yǔ)言函數(shù)實(shí)現(xiàn)。當(dāng)收發(fā)數(shù)據(jù)、新連接建立或者數(shù)據(jù)需要重新傳輸時(shí), UIP 都會(huì)調(diào)用應(yīng)用程序。同時(shí),應(yīng)用程序還要周期查詢(xún)是否有新的數(shù)據(jù)收發(fā)。因?yàn)閼?yīng)用程序只提供了一個(gè)回調(diào)函數(shù),所以應(yīng)用程序還要 把不同的網(wǎng)絡(luò)服務(wù)映射到不同的端 13 和連接。 UIP在接受到底層傳來(lái)的數(shù)據(jù)包后,如果需要送上層應(yīng)用程序處理,就調(diào)用 UIP— APPCALL()。同時(shí)設(shè)置結(jié)構(gòu)體 UIP— eonn 指針指向當(dāng)前連接。 UIP conn 記錄一條 TCP 連接的所有相關(guān)信息,它是維持 UIP 運(yùn)行的關(guān)鍵結(jié)構(gòu),定義如下: struct【 cp— conn{ u8 一 t tcpstateflags;// TCP 的狀態(tài)和標(biāo)志 ul6 一 t lport, rpert;//當(dāng)?shù)睾瓦h(yuǎn)端端口 ul6 一 t fipodar[2];//遠(yuǎn)端的地址 安徽建筑大學(xué)畢業(yè)設(shè)計(jì)(論文) 15 u8 一 t rcv nxt[4];//下一個(gè)要接收的序列號(hào) u8 一 t sod — xt[4];∥ 上一個(gè)已發(fā)送的序列號(hào) u8 一 t aeknxt[4];//對(duì)端下一個(gè)應(yīng)答序列號(hào) u8 一 t timer;//重傳時(shí)間 u8 一 t nrtx;//計(jì)算特殊段的重發(fā)數(shù)量 u8 一 t mss;//連接中最大分段的大小 u8 一 t appstate[UIP— APPSTATE — SIZE]; UIP 提供給應(yīng)用程序的接口函數(shù)如: tep listen()、 uip— connect()、 uip— send()、 tcp— datalen()、 tcp— close()、 tcp— abort()、 tcp— stop()、 uip— stopped()、 uip— restart()等,實(shí)現(xiàn)了 TCP/ IP 協(xié)議棧的基本功能。為了將用戶(hù)的應(yīng)用程序掛接到 UIP 中,必須將宏 UIP— APPcALL()定義成實(shí)際的應(yīng)用程序函數(shù)名,這樣每當(dāng)某個(gè) UIP 事件發(fā)生時(shí),內(nèi)核就會(huì)調(diào)用該應(yīng)用程序進(jìn)行處理。如果要加入應(yīng)用程序狀態(tài)的話,必須將宏 UIPAPPSTATESIZE 定義成應(yīng)用程序狀態(tài)結(jié)構(gòu)體的長(zhǎng)度。在應(yīng)用程序函數(shù)中,依靠 UIP 事件檢測(cè)函數(shù)來(lái)決定處理的方法,另外可以通過(guò)判斷當(dāng)前連接 的端口號(hào)來(lái)區(qū)分處理不同的連接。 安徽建筑大學(xué)畢業(yè)設(shè)計(jì)(論文) 16 程序流程圖 程序運(yùn)行初始化流程圖 圖 初始化流程圖 開(kāi)始 系統(tǒng)時(shí)鐘設(shè)置 初始化網(wǎng)絡(luò)設(shè)備以及 UIP 協(xié)議棧,配置 IP 地址 UIP MAC 初始化 應(yīng)用層 MAC 初始化 UIP 初始化 創(chuàng)建 TCP 監(jiān)聽(tīng)窗口和 HTTP 監(jiān)聽(tīng)窗口 ARP 初始化 安徽建筑大學(xué)畢業(yè)設(shè)計(jì)(論文) 17 程序功能流程圖 當(dāng)通過(guò)網(wǎng)絡(luò)調(diào) 試助手發(fā)來(lái)的指令時(shí)處理 uIP 事件 否 否 是 是 是 否 圖 功能流程圖 指令 設(shè)置指令 設(shè)置 IO 高低平(設(shè)置燈的開(kāi)關(guān)) 查詢(xún)指令 命令錯(cuò)誤 查詢(xún) IO 狀態(tài) (燈的開(kāi)關(guān)狀 態(tài)) 輸出 IO( 燈)的狀態(tài) 發(fā)生錯(cuò)誤 結(jié)束 安徽建筑大學(xué)畢業(yè)設(shè)計(jì)(論文) 18 系統(tǒng) LED 燈程序 include include include include include define LED1_ON() GPIO_SetBits(GPIOB, GPIO_Pin_5)。 define LED2_ON() GPIO_SetBits(GPIOC, GPIO_Pin_6)。 define LED3_ON() GPIO_SetBits(GPIOC, GPIO_Pin_7)。 define LED1_OFF() GPIO_ResetBits(GPIOB, GPIO_Pin_5)。 define LED2_OFF() GPIO_ResetBits(GPIOC, GPIO_Pin_6)。 define LED3_OFF() GPIO_ResetBits(GPIOC, GPIO_Pin_7)。 extern unsigned short LPORT。 void server_udp_appcall(void)。 void led_poll(void)。 ******************************************************************************* * 函數(shù)名 : void led_poll(void) * 參 數(shù) : 無(wú) * 返 回 : 無(wú) * 功 能 : 查詢(xún) LED 燈的狀態(tài)并返回其狀態(tài) **************************************************************************/ void led_poll(void) { uint8_t led1_readvalue。 uint8_t led2_readvalue。 uint8_t led3_readvalue。 led1_readvalue = GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_5 )。 安徽建筑大學(xué)畢業(yè)設(shè)計(jì)(論文) 19 led2_readvalue = GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_6 )。 led3_readvalue = GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_7 )。 if(led1_readvalue == 0)myudp_send(LED1 亮 \n,8)。 else myudp_send(LED1 滅 \n,8)。 if(led2_readvalue == 0)myudp_send(LED2 亮 \n,8)。 else myudp_send(LED2 滅 \n,8)。 if(led3_readvalue == 0)myudp_send(LED3 亮 \n,8)。 else myudp_send(LED3 滅 \n,8)
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1