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

正文內(nèi)容

智能家居燈光控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)說明書-資料下載頁

2025-06-01 23:25本頁面
  

【正文】 。 %顯示燈光控制系統(tǒng)界面 。 若要 求 退出子系統(tǒng)時(shí)返回智能家居系統(tǒng)主界面,則可在各子系統(tǒng)的退出按鈕的回調(diào)函數(shù)中的 case?是 ‘后加入以下代碼: set (smartsystem,39。visible39。,39。on39。)。 %顯示智能家居系統(tǒng)主界面 。 set (lightcontrol,39。visible39。,39。off39。)。 %不顯示燈光控制系統(tǒng)界面 。 圖 26智能家居系統(tǒng)主界面 MATLAB GUI 程序轉(zhuǎn)換 成 可執(zhí)行文件 對(duì)于一個(gè)通用的,比較成熟的解決方案,當(dāng)然期望它能應(yīng)用到更多的場(chǎng)合,而 .exe(可執(zhí)行)文件可運(yùn)行于所有的通用 Windows 操作系統(tǒng)。因此,將 M 文件轉(zhuǎn)換成 .exe文件會(huì)使用戶使用起來更加方便,加強(qiáng)了應(yīng)用程序的通用性。 本文 將 和 .exe文件 。 16 1.設(shè)置編譯器: 在確定安裝好 Matlab Compiler 后,還需要對(duì) Compiler 進(jìn)行適當(dāng)?shù)呐渲?,方法是在Matlab命令窗口輸入: Mbuild –setup。按提示選擇 matlab自帶編譯器 LCC。進(jìn)行操作的信息如下: Would you like mbuild to locate installed pilers [y]/n? y Select a piler: [1] Lccwin32 C in D:\R2021a\sys\lcc [0] None Compiler: 1 Please verify your choices: Compiler: Lccwin32 C Location: D:\R2021a\sys\lcc Are these correct [y]/n? y Trying to update options file: C:\Documents and Settings\xtu\Application Data\MathWorks\MATLAB\R2021a\ Fromtemplate: D:\R2021a\bin\win32\mbuildopts\ Done . . . 2. 將腳本編譯為可執(zhí)行文件: 已有 ,在 matlab的 mand窗口中輸入 : mcc B sgl 。(這是因?yàn)橐延? )。編譯成功會(huì)生成 、 、 、 、 、 七個(gè)文件。若使用MATLAB R2021a 版本, 和 合并成了一個(gè)文件,即 文件。在本設(shè)計(jì)中因?yàn)橐c TMS320DM642 ICETECKAVM板相連,故應(yīng)該使用 MATLAB R2021a 版本。 3. 在未安裝 matlab的機(jī)器上運(yùn)行可執(zhí)行程序。 有了 和 在未安裝 matlab的機(jī)器上 運(yùn)行客戶端圖形界面。將 R2021a\toolbox\piler\deploy\win32中 安裝到該計(jì)算機(jī)上,運(yùn)行生成可執(zhí)行程序脫離 matlab 運(yùn)行所需的函數(shù)庫。將 2 中生成的 和 。運(yùn)行 將生成lightcontrol_mcr 文件夾,包含程序運(yùn)行所需的庫。 17 第 3 章 遠(yuǎn)程通信的設(shè)計(jì)與調(diào)試 網(wǎng)絡(luò)通信模塊設(shè)計(jì) 網(wǎng)絡(luò)任務(wù)除了在網(wǎng)絡(luò)任 務(wù)主線程 中 完成對(duì)協(xié)議棧的配置和初始化外,還使用 NDK提供的 API函數(shù) TaskCreat()創(chuàng)建了一個(gè)新的網(wǎng)絡(luò)任務(wù)線程,即 ―服務(wù)器任務(wù) ‖。服務(wù)器任務(wù)使用典型的客戶機(jī) /服務(wù)器( Client/Server)結(jié)構(gòu)實(shí)現(xiàn)。本文將 DM642作為服務(wù)器端,將另一臺(tái) PC 機(jī)(采用 MATLAB 編程)作為網(wǎng)絡(luò)客戶端,服務(wù)器端和客戶端都是用套接字編程。 C/S 軟件技術(shù)是一種通用的、基于消息的技術(shù)。在本文中這樣描述 C/S, 網(wǎng)絡(luò)上的一臺(tái)計(jì)算機(jī)向網(wǎng)絡(luò)上的另一臺(tái)計(jì)算機(jī)請(qǐng)求一個(gè)進(jìn)程或數(shù)據(jù),即 客戶端負(fù)責(zé)向 服務(wù)器端發(fā)起請(qǐng)求, 而服務(wù)器端則負(fù)責(zé)響應(yīng)客戶 端的請(qǐng)求并發(fā)送數(shù)據(jù)。 如圖 31所示。 服 務(wù) 器s e v e r e r客 戶 端C l i e n t請(qǐng) 求響 應(yīng)網(wǎng) 絡(luò) 圖 31 C/S技術(shù)模型 對(duì)于傳輸層協(xié)議的選擇,考慮到智能家居系統(tǒng)信息的數(shù)據(jù)量 大 ,如果采用可靠地、面向連接的 TCP 協(xié)議勢(shì)必要消耗過多的網(wǎng)絡(luò)資源,且不能保證實(shí)時(shí)性, 而采用不可靠的、無連接的 UDP 協(xié)議來傳輸信號(hào)則更符合智能家居系統(tǒng)的實(shí)時(shí)性要求。因此本系統(tǒng)選擇 UDP 協(xié)議,相應(yīng)的套接字也選用數(shù)據(jù)包套接字。系統(tǒng)網(wǎng)絡(luò)通信部分的基本流程如圖 32所示。 18 c f g N e wN C _ S y s t e m O p e nc f g L o a d /c f g A d d E n t r yN C _ N e t S t a r tc f g F r e eN C _ S y s t e m C l o s es o c k e tb i n dr e c v f r o m阻 塞 , 等 待 客 戶 數(shù) 據(jù)s e n d t of c o l s es o c k e tb i n ds e n d t or e c v f r o mc l o s e s o c k e t網(wǎng) 絡(luò) 任 務(wù) ( 主 線 程 )服 務(wù) 器 任 務(wù) P C 機(jī) 客 戶 端 圖 32 系統(tǒng)的網(wǎng)絡(luò)通信基本流程 套接字 (socket) 是 TCP/IP 網(wǎng)絡(luò)的應(yīng)用程序接口 (Application Programming Interface ,API),它定義了許多函數(shù)或例程,可以用來開發(fā) TCP/IP網(wǎng)絡(luò)上的應(yīng)用程序。套接字是一種通信機(jī)制,憑借這種機(jī)制,客戶 /服務(wù)器系統(tǒng)的開發(fā)工具可以在本地單機(jī)上進(jìn)行,也可以跨網(wǎng)絡(luò)進(jìn)行。套接字明確地將客戶和服務(wù)器區(qū)分開來,套接字機(jī)制可以實(shí)現(xiàn)多個(gè)客戶連接到一個(gè)服務(wù)器。根據(jù)連接啟動(dòng)的方式及本地 socket 要連接的目標(biāo),socket之間的連接過程可以分為如下三個(gè)步驟: (1) 服務(wù)器監(jiān)聽:服務(wù)器端套接字處于等待連接狀態(tài),實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài)。 (2) 客戶端請(qǐng)求:是指由客戶端的套接字提出連接請(qǐng)求,要連接的目標(biāo)是服務(wù)器端socket。為此,客戶端的 socket必須描述它要連接的服務(wù)器端套接字,指出服務(wù)器端 socket的地址和端口號(hào)。 (3) 連接確認(rèn):是當(dāng)服務(wù)器端套接字監(jiān)聽到或者接收到客戶端套接字的連接請(qǐng)求時(shí),它就響應(yīng)客戶端套接字的請(qǐng)求,建立一個(gè)新的線程,把服務(wù)器 socket的描述發(fā)給客戶端,一旦客戶端確認(rèn)此描述,連接就建立好了。 對(duì)于客戶機(jī)來說,連接請(qǐng)求被接收,客戶端的 socket便被成功創(chuàng)建了, socket便可以開始進(jìn)行。 而服務(wù)器端 socket繼續(xù)處于監(jiān)聽狀態(tài),繼續(xù)接收其它客戶端 socket的連接請(qǐng)求。 19 服務(wù)器端的 socket 程序設(shè)計(jì) TI通信開發(fā)套件 NDK的結(jié)構(gòu) TI公司結(jié)合 C6000芯片推出了 TCP/IP NDK(Network Developer‘s Kit)開發(fā)套件,其主要組件包括: (1)支持 TCP/IP 協(xié)議棧程序庫。 (2)示范程序。 (3)支持文檔。 NDK 采用緊湊的設(shè)計(jì)方法,實(shí)現(xiàn)了用較少的資源耗費(fèi)來支持 TCP/IP。 NDK 僅用 200250K 程序空間和 95K數(shù)據(jù)空間即可支持常規(guī)的 TCP/IP服務(wù)。 NDK的軟件開發(fā)環(huán)境是 TI的開發(fā)工具 CCS(code poser studio)。它包含有實(shí)時(shí)操作系統(tǒng) DSP/BIOS和主機(jī)與目標(biāo)板之間的實(shí)時(shí)數(shù)據(jù)交換軟件 RTDX。 網(wǎng) 絡(luò) 應(yīng) 用 ( N e t w o r k A p p l i c a t i o n )網(wǎng) 絡(luò) 工 具 庫( N E T T O O L )T C P / I P 堆 棧 庫 ( S T A C K )操 作 系 統(tǒng) 自適 應(yīng) 層D S P / B I O S 操作 系 統(tǒng)網(wǎng) 絡(luò) 調(diào) 度 層 ( N E T C T R L )硬 件 提 取 層( H A L ) 圖 33 NDK中 TCP/IP 協(xié)議棧的結(jié)構(gòu) 圖 33所示為 NDK中 TCP/IP協(xié)議棧的結(jié)構(gòu)。實(shí)用 NDK相對(duì)于操作系統(tǒng)和底層硬件是透明的,這主要是由 DSP/BIOS 的接口, 硬件的支持來完成的。在 NDK的 TCP/IP協(xié)議棧中 層鏈路層的所有功能, ,協(xié)調(diào)操作系統(tǒng)和底層硬件驅(qū)動(dòng),管理所有網(wǎng)絡(luò)事件。 。 NDK的配置和使用 在 CCS 下使用 NDK需要在以下幾點(diǎn)做特別處理: (1) NDK在 DSP/BIOS下的使用 DSP/BIOS是 TI開發(fā)的實(shí)時(shí)微型操作系統(tǒng),支持實(shí)時(shí)分析、線程管理、調(diào)度軟件中斷、周期函數(shù)以及外部硬件中 斷與各種外設(shè)的管理。使用 DSP/BIOS所有與硬件有關(guān)的操 作都必須借助操作系統(tǒng)本身提供的函數(shù)完成,應(yīng)避免直接控制硬件資源。 基于DSP/BIOS 的程序與傳統(tǒng)開發(fā)過程是不同的,用戶編寫的程序由 DSP/BIOS 調(diào)度,不再 20 按編寫的次序順序執(zhí)行。同樣開發(fā)基于 DSP/BIOS的網(wǎng)絡(luò)應(yīng)用程序也必須要遵循一些原則 : 1. 在 CDB文件中為 HAL創(chuàng)建一個(gè)周期為 100ms的 PRD函數(shù),用來驅(qū)動(dòng) llTimerTick()系統(tǒng)函數(shù); 2. OS 需要鉤子函數(shù)為 TCP/IP堆棧加載和保存私人變量指針,所以必須在 CDB文件中創(chuàng)建兩個(gè)鉤子函數(shù) NDK_hookInit()和 NDK_hookCreate(); Include Searching Path指向 NDK安裝目錄下的 inc文件夾; 4.為了保證使用 NDK的工程項(xiàng)目能正確編譯,在 CCS 的 Link Order 要按一定的 順序添加庫文件,推薦的順序是: 、 HAL_xxxLIB、 、 ; NDK的過程中, OS 和 HAL會(huì)創(chuàng)建三個(gè)內(nèi)存段,分別是 PACKETMEM、MMBUFFER、 OBJMEM,必須在 CMD文件中為這三個(gè)段在內(nèi)存 中分配存儲(chǔ)空間; 6. 至少要使用 32K的 cache,否則應(yīng)用程序會(huì)產(chǎn)生不可預(yù)料的錯(cuò)誤。 (2) 包含 的 文件和庫文件 編譯時(shí)需要包含庫文件和文件路徑,一般默認(rèn)為 c:\ti\c6000\ndk\inc。 TCP/IP堆棧的初始化和配置 在任何 socket應(yīng)用程序建立之前, TCP/IP堆棧必須被正確的配置 , 然后 再 初始化。通常可以動(dòng)態(tài)創(chuàng)建或者在 DSP/BIOS中靜態(tài)創(chuàng)建一個(gè)堆棧初始化任務(wù),不管應(yīng)用程序當(dāng)中建立了多少 socket,在整個(gè)系統(tǒng)中只能有一個(gè)堆棧初始化任務(wù),并且該任務(wù)會(huì)成為整個(gè)網(wǎng)絡(luò)任務(wù)的唯一調(diào)度 者,因此該任務(wù)在應(yīng)用程序結(jié)束前不會(huì)返回。 堆棧初始化過程: (1) 使用 NC_SystemOpen(), 該函數(shù)為所有網(wǎng)絡(luò)應(yīng)用程序建立堆棧和內(nèi)存環(huán)境 ; (2) 使用 CfgNew(), 該函數(shù)會(huì)創(chuàng)建一個(gè)配置句柄,利用該句柄使用CfgAddEntry()函數(shù)可以添加 DHCP、 DNS、 HTTP 等服務(wù)和配置 socket 緩沖區(qū)大小與ARP超時(shí)參數(shù); (3) 使用 NC_NetStart(), 該函數(shù)根據(jù)前面的配置參數(shù)啟動(dòng)網(wǎng)絡(luò),并創(chuàng)建三個(gè)回調(diào)函數(shù),分別是網(wǎng)絡(luò)啟動(dòng)時(shí)只運(yùn)行一次的函數(shù)、網(wǎng)絡(luò)被關(guān)閉時(shí)只運(yùn)行一次的函數(shù)、當(dāng) IP 地址改變時(shí)運(yùn)行的 函數(shù)。通常會(huì)在啟動(dòng)函數(shù)里面創(chuàng)建自己的應(yīng)用程序線程,在關(guān)閉函數(shù)里面刪除創(chuàng)建的應(yīng)用程序線程。 圖 34 為服務(wù)器端所執(zhí)行命令的流程圖。其相應(yīng) 的程序采用手動(dòng)配置 IP, UDP 協(xié)議傳輸數(shù)據(jù),如下: //網(wǎng)絡(luò)初始化 NC_SystemOpen()。 21 hCfg = CfgNew()。 CfgAddEntry(,CFGITEM_DHCP_HOSTNAME,0,strlen(HostName),(UINT8*)HostName,0) //配置 IP bzero( amp。NA, sizeof(NA) )。 = i_addr(LocalIPAddr)。 = i_addr(LocalIPMask)。 strcpy( , DomainName )。 = 0。 //配置默認(rèn)網(wǎng)關(guān) bzero( amp。RT, sizeof(RT) )。 = 0。 = 0。 = i_addr(GatewayIP)。 //配置 socket緩沖區(qū)大小 rc = 8704。 CfgAddEntry(hCfg,CFGTAG_IP,CFGITEM_IP_SOCKBUFMAX,CFG_ADDMODE_UNIQUE,sizeof(uint),(UINT8 *)amp。rc,0)。 //啟動(dòng)網(wǎng)絡(luò)服務(wù) do {rc = NC_NetStart(hCfg,NetworkOpen,NetworkClose,NetworkIPA ddr)。 }while(rc 0)。 ?? //配置應(yīng)用層協(xié)議 , 本程序采用 UDP SOCKET s。 struct sockaddr_in sin1。 s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)。 if(bind(s,(PSA) amp。sin1, sizeof(sin1)) 0) {ConPrintf(failed bind (%d)\n,fdError())。 goto le
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1