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

正文內(nèi)容

基于armcortex-a8內(nèi)核的嵌入式智能家畢業(yè)論文(編輯修改稿)

2025-07-23 13:45 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 sicRfPacketIsReady())。 if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)0) { { Delayms1(500)。 halLedToggle(1)。 UartSend_String(Lcddata,5)。 UartSend_String(pRxData,1)。 UartSend_String(Reddata,2)。 } } }這段程序和發(fā)送程序的主體架構(gòu)是一樣的,不過是使用了調(diào)用函數(shù)basicRfReceive,來接受發(fā)送函數(shù)發(fā)送過來的數(shù)據(jù),同時(shí)初始化了Zigbee模塊的UART1,將來自發(fā)送模塊的數(shù)據(jù)打包處理后通過串口發(fā)送出去,并可以通過超級(jí)終端看到所接收到的數(shù)據(jù),通過接受到的具體數(shù)據(jù)查看到底是觸發(fā)了什么節(jié)點(diǎn),觸動(dòng)警報(bào)。下圖31為超級(jí)終端接受傳感器信號(hào)的數(shù)據(jù)[10]。圖31 超級(jí)終端截圖同時(shí)Zigbee也可以接受來自超級(jí)終端的數(shù)據(jù)(在這里超級(jí)終端作為開發(fā)板的一個(gè)替代品),如圖32在超級(jí)終端發(fā)送ledon 命令,Zigbee的一個(gè)IO管教被拉高,led燈亮發(fā)送ledoff,led燈滅如圖32。 圖32 Zigbee控制效果圖Zigbee的接收終端數(shù)據(jù)程序其實(shí)也非常簡(jiǎn)單,是使用串口中斷來做的,即只要串口檢測(cè)收有數(shù)據(jù)接收,就會(huì)產(chǎn)生中斷,注冊(cè)標(biāo)志位,然后拉高相應(yīng)管腳,實(shí)現(xiàn)對(duì)led燈的控制。代碼如下:pragma vector = URX0_VECTOR__interrupt void UART0_ISR(void){ URX0IF = 0。 if(U0DBUF 0) { P1_4=~P1_4。 temp = U0DBUF。 } }整個(gè)Zigbee 模塊的程序架構(gòu),如圖33。 圖33 Zigbee代碼工程結(jié)構(gòu)圖 linux嵌入式系統(tǒng)搭建首先需要說明的是本次嵌入系統(tǒng),是基于前人原有的開源代碼消化吸收后,然后添加的驅(qū)動(dòng)代碼最終實(shí)現(xiàn)的,這里也是充分的發(fā)揮了linux嵌入式的開源性。本嵌入式系統(tǒng)結(jié)構(gòu)主要分為了三大塊,分別是:emilib : 抽象數(shù)據(jù)通信。Hmanager:基于QT的PC端圖形控制程序。Bdehmanager:基于QT的開發(fā)板圖形控制程序。 emilib 數(shù)據(jù)通信模塊介紹Emilib工作原理 消息接受者首先需要完成注冊(cè),所謂注冊(cè)即通過socket連接本地emi_core進(jìn)程,將本進(jìn)程進(jìn)程號(hào)以及要注冊(cè)的消息發(fā)送給emi_core。Emi_core收到消息后,需要在內(nèi)部表記錄了(消息號(hào),進(jìn)程號(hào))之間的關(guān)系。每一個(gè)注冊(cè)消息的進(jìn)程只要成功注冊(cè)了,就會(huì)在表里新增一個(gè)項(xiàng),記錄該進(jìn)程注冊(cè)的消息號(hào)和進(jìn)程號(hào)。然后當(dāng)發(fā)送端給emi_core發(fā)消息時(shí),emi_core會(huì)把消息好在表里進(jìn)行匹配,如果是正常情況,那么其會(huì)找到注冊(cè)進(jìn)程的進(jìn)程號(hào),此時(shí)emi_core會(huì)給該進(jìn)程發(fā)送一個(gè)USER2信號(hào),同時(shí)附加數(shù)據(jù)放到共享的內(nèi)存中。而接受進(jìn)程接收到這個(gè)信號(hào)之后,就會(huì)觸發(fā)信號(hào)處理函數(shù),其實(shí)這個(gè)原理個(gè)人認(rèn)為其實(shí)完全可以理解為一個(gè)中斷向量表的工作原理,不過它可以同時(shí)處理多個(gè)進(jìn)程。最后在信號(hào)處理函數(shù)內(nèi)部從emi_core提供的共享內(nèi)存中讀取發(fā)送端發(fā)來的信息。如此就完成了一次數(shù)據(jù)通信。Emilib的使用方法首先來介紹下,剛才提到的emi_core。emi_core相當(dāng)于一個(gè)中介或者說就是一個(gè)電話接線員,主要完成了兩部分的工作。首先是接注冊(cè)類的消息,并把消息和一個(gè)函數(shù)綁定。然后是接收發(fā)送類型消息,查找到已經(jīng)被綁定的消息函數(shù)對(duì),匹配出相同的消息,最后運(yùn)行對(duì)應(yīng)的函數(shù)。主要工作就是提供進(jìn)程需要的函數(shù),來實(shí)現(xiàn)具體功能,接收進(jìn)程調(diào)用庫中的函數(shù)進(jìn)行消息好和函數(shù)的綁定注冊(cè),而發(fā)送進(jìn)程調(diào)用庫中的函數(shù)進(jìn)行消息發(fā)送。(1)初始化函數(shù) Int emi_ini(void)。這絕對(duì)是最常用也是最重要的函數(shù),因?yàn)樗仨氃谧?cè)消息之前運(yùn)行,但是每個(gè)進(jìn)程只需要運(yùn)行一次。(2)消息注冊(cè)函數(shù)Int emi_msg_register_exclusice(eu32msg,emi_func func)。返回值為0時(shí)代表成功,負(fù)數(shù)代表失敗,兩個(gè)參數(shù)分別代表要注冊(cè)的消息號(hào),和一個(gè)指向結(jié)構(gòu)體的結(jié)構(gòu)體指針,當(dāng)然要求其提前被寫好。(3)發(fā)送消息函數(shù) Int emi_msg_send_highlevel_blockreturn(char * ipaddr, int msgnum, int send_size, void *send_data, int ret_size,void *ret_data,eu32 cmd)返回值為0代表發(fā)送成功,負(fù)數(shù)代表失敗。參數(shù)ipaddr表示接受平臺(tái)的ip。參數(shù)msgnum表示要發(fā)送的消息號(hào)。參數(shù)send_size以及send_data分別代表附加數(shù)據(jù)的長(zhǎng)度和附加數(shù)據(jù)的首地址,如果沒有那么就應(yīng)該設(shè)置為0和NULL。參數(shù)ret_size和ret_data表示返回?cái)?shù)據(jù)的大小和首地址。參數(shù)cmd,表示發(fā)送者要發(fā)送給接受者的命令。Emilib的測(cè)試首先需要進(jìn)入emitest目錄,先建兩個(gè)emi測(cè)試源文件分別用于發(fā)送和接受,來模擬通信過程。 cd emitest vim vim 以下是在實(shí)驗(yàn)中對(duì)于emilib所做測(cè)試的一部分核心代碼。 char hello[20]=hello。 char buf[5]={0}。 emi_msg_send_highlevel_blockreturn(,12345678,6,hello,4,buf,5)。 printf(%s\n,buf)。:int test_func(struct emi_msg *msg){printf(msgcmd %d, msgdata %s\n,msgcmd, msgdata)。return emi_msg_prepare_return_data(msg,hel,4)。}Main函數(shù)代碼如下:emi_init()。 emi_msg_register_exclusive(12345678,test_func)。 while(1){ sleep(1)。 } : gcc o receiver L../bs/pclib/lib lemi I../libs/pclib/include gcc o sender L../libs/pclib/lib lemi I../libs/pclib/include 編譯完成之后生成了可執(zhí)行文件接著運(yùn)行測(cè)試,首先啟動(dòng)PC機(jī)的emi_core程序, 然后分別在兩個(gè)終端啟動(dòng)sender和receiver。 sudo ../libs/pclib/bin/emi_core d (一個(gè)終端) ./reciever (另一終端) ./sender 最后的運(yùn)行結(jié)果為運(yùn)行結(jié)果。 在發(fā)送終端會(huì)顯示: hello在接收終端會(huì)顯示: msgcmd 5, msgdata hello證明收發(fā)消息成功。 環(huán)境部署以及eh_server下面來大體介紹下eh_server,eh_serve主要實(shí)現(xiàn)了兩個(gè)功能,即便利指定的文件夾,并生成一個(gè)列表。然后我們根據(jù)實(shí)際操作來編譯和實(shí)現(xiàn)eh_server在用戶home目錄下新建空項(xiàng)目目錄ehome。 mkdir ehome 將原項(xiàng)目目錄中的rootfs復(fù)制到ehome下。 cp av user/rootfs ehome/修改rootfs/etc/, 刪除mount /dev/mtdblock6一行。在 ehome/rootfs/home目錄內(nèi)新建bin,etc,lib,receiver,trigger等目錄。 cd ehome/rootfs/home/ mkdir p bin etc lib receiver triggerbin將存放開發(fā)板項(xiàng)目應(yīng)用程序eh_server,emi_core等程序;etc存放項(xiàng)目相關(guān)腳本以及配置文件;lib存放項(xiàng)目運(yùn)行庫;receiver,trigger存放eh_server所需插件。在rootfs/home/etc目錄下新建空腳本文件rcS,用于將來自啟動(dòng)配置,并將rcS配置成可執(zhí)行屬性。 vi rootfs/home/etc/rcS修改該rcS文件,添加export LD_LIBRARY_PATH=/home/lib以及export PATH=\$PATH:/home/bin export LD_LIBRARY_PATH=/home/lib export PATH=\$PATH:/home/bin sudo chm
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1