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

正文內(nèi)容

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

2025-07-23 13:45 本頁面
 

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