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

正文內(nèi)容

基于arm9的可視電話系統(tǒng)畢業(yè)論文-資料下載頁

2025-02-26 08:35本頁面

【導(dǎo)讀】所取得的成果,所有數(shù)據(jù)、圖片資料真實可靠。盡我所知,除文中已經(jīng)。對本論文所涉及的研究工作做出貢獻的其他個人和集體,均已在文。中以明確的方式標(biāo)明。本學(xué)位論文的知識產(chǎn)權(quán)歸屬于培養(yǎng)單位。畢業(yè)設(shè)計過程當(dāng)中,我獲得了許多幫助。從論文選題、方案確立、實施工作到論。文撰寫過程中,高老師自始至終關(guān)心著我的工作進展情況。在整個畢設(shè)的實行過程中,老師給予了指導(dǎo)與幫助。對于出現(xiàn)的問題給予細(xì)致的解答,同時提出很多寶貴的建議。術(shù)追求乃為本人學(xué)習(xí)的榜樣。跟你們一起學(xué)習(xí)過程有快樂相伴也有困難阻礙,不過還是學(xué)到很多知識,正因。有了你們的無私幫助和一路陪伴才使得我能夠克服重重阻礙,最終順利完成目標(biāo)。衷心祝愿你們今后一帆風(fēng)順,前程似錦。最后再次感謝參加本次論文評閱答辯并對本論文提出寶貴建議的所有老師!可視電話系統(tǒng)的需求也越來越強烈。置模塊等封裝在一起成為一個大的可執(zhí)行程序。調(diào)試執(zhí)行后系統(tǒng)測試良好,驗證了軟件構(gòu)架的可行性。

  

【正文】 應(yīng)該對應(yīng)的操作。系統(tǒng)的指令集是系統(tǒng)的最外層封裝, 也是用戶與系統(tǒng)相聯(lián)系的媒介。有了指令,系統(tǒng)才能依照人的想法去實施,因此指令集的重要性由此可知。本系統(tǒng)共封裝了 15 個指令,用于 IP 可視電話的簡單應(yīng)用的操作。本系統(tǒng)封裝指令時是整體封裝,如需日后有更多的功能,只需將相應(yīng)的功能函數(shù)加進去,然后在 文件中加入功能函數(shù),以及在初始化時加入此函數(shù)對應(yīng)的相關(guān)說明和操作。本系統(tǒng)現(xiàn)有的指令集見表 : 26 表 . 系統(tǒng) 指令集 指令 調(diào)用的函數(shù) 指令解釋 view void view( void *arg) 查看所有本地連接用戶的信息 pic void picture( void *arg) 根據(jù)觸摸屏滑動的方向選擇瀏覽圖片還是畫圖功能 rec void record( void *arg) 錄音和播音功能 mest void mest( void *arg) 查看本地信息功能 mn void mn( void *arg) 修改本地昵稱 callv void callv( void *arg) 申請視頻通話 call void call( void *arg) 申請通話 callt void callt( void *arg) 查看通話記錄 accept void accept( void *arg) 接收語音或者視頻通話申請 refuse void refuse( void *arg) 拒絕語音或者視頻通話申請 hup void hup( void *arg) 掛斷語音或者視頻通話 sendmesg void sendmesg( void *arg) 發(fā)送本地消息到指定地址 confupdata void confupdata( void *arg) 更新本地信息以及語音總數(shù) clear void clear( void *arg) 清屏 help void help( void *arg) 顯示指令集 quit void quit( void *arg) 推出系統(tǒng) 27 系統(tǒng)各模塊實現(xiàn)及分析 預(yù)處理模塊 (1)功能: 在系統(tǒng)初始前,為系統(tǒng)搭建良好運行環(huán)境,檢測系統(tǒng)依賴的文件及設(shè)備是否存在,不存在則創(chuàng)建。注冊系統(tǒng)產(chǎn)生各種信號。如:項目中需要用到一些目錄,日志目錄,錄像目錄,配置文件等,若這些文件不存在,則需要在預(yù)初始化時進行創(chuàng)建。 (2)相關(guān)函數(shù): ① 信號 signal:表頭文件 : include 功 能:設(shè)置某一信號的對應(yīng)動作 函數(shù)原型: void (*signal(int signum,void(* handler)(int)))(int)。 或者: typedef void(*sig_t) ( int )。 sig_t signal(int signum,sig_t handler)。 函數(shù)說明: signal()會依參數(shù) signum 指定信號編號來設(shè)置該信號處理函數(shù)。當(dāng)指定信號到達時就會跳轉(zhuǎn)到參數(shù) handler 指定的函數(shù)執(zhí)行。當(dāng)一個信號的信號處理函 數(shù)執(zhí)行時,如果進程又接收到了該信號,該信號會自動被儲存而不會中斷信號處理函數(shù)的執(zhí)行,直到信號處理函數(shù)執(zhí)行完畢再重新調(diào)用相應(yīng)的處理函數(shù)。但是如果在信號處理函數(shù)執(zhí)行時進程收到了其它類型的信號,該函數(shù)的執(zhí)行就會被中斷。 在預(yù)處理模塊中,系統(tǒng)中注冊了五種信號: SIGINT, SIGHUP, SIGCHLD, SIGALRM,SIGPIPE,如下: signal(SIGINT, sig_proc)。 signal(SIGHUP, sig_proc)。 signal(SIGCHLD, sig_proc)。 signal(SIGALRM, sig_proc)。 signal(SIGPIPE, SIG_IGN)。 注冊此五種信號以備在系統(tǒng)中進入這五種信號的中斷。 ② atexit 函數(shù)注冊 函數(shù)名 : atexit 頭文件 :include 功 能 : 注冊終止函數(shù) (即 main 執(zhí)行結(jié)束后調(diào)用的函數(shù) ) 用 法 : int atexit(void (*func)(void))。 注意:按照 ISO C 的規(guī)定,一個進程可以登記多達 32個函數(shù),這些函數(shù)將由exit 自動調(diào)用。 atexit()注冊的函數(shù)類型應(yīng)為不接受任何參數(shù)的 void 函數(shù) ,exit調(diào)用這些注冊函數(shù)的順序與它們 登記時候的順序相反。同一個函數(shù)如若登記多次,則也會被調(diào)用多次。 28 系統(tǒng)中運用此函數(shù)做系統(tǒng)的收尾工作,以備下次重新使用系統(tǒng)時更穩(wěn)定。 本地設(shè)備管理模塊 (1)功能: 實時掃描本地所有設(shè)備,顯示設(shè)備信息,生成在線設(shè)備表,可根據(jù)在線設(shè)備表,進行拔號,留言等操作,并可顯示每個設(shè)備的昵稱,狀態(tài)信息等。 (2)主要內(nèi)容: UDP 協(xié)議,廣播,信號,定時器,數(shù)據(jù)結(jié)構(gòu),隊列,線程 (3)實現(xiàn)原理: 通過 socket 創(chuàng)建 UDP 套接字,并需要設(shè)置其屬性為廣播類型。通過廣播定時將本地信息( IP 地址、昵稱、狀態(tài)等)發(fā)送給局域網(wǎng)中所有有效 IP地址。并本地實時接收局域網(wǎng)中其它設(shè)備發(fā)來的廣播信息。 當(dāng)收到其它設(shè)備發(fā)來廣播信息后,需要數(shù)據(jù)進行解析并以隊列形式將信息保存。 (4)終端模塊部分函數(shù)定義以及部分解析: ① terminal 函數(shù)封裝:端口地址為: 9000 /* 初始化 參數(shù): IP 地址,廣播地址,昵稱,掃描時間 */ vipp_term_init( const char *ip, const char *bcast, const char *nickname,int scaninter。)。 vipp_term_modifynickname(const char *nickname)。 /* 修改昵稱 */ vipp_term_modifykeepinter(int scaninter)。 /* 修改?;铋g隔 */ vipp_term_modifystatus(char status)。 /* 修改本地狀態(tài) */ vipp_term_travel()。 /* 遍歷本地所有終端 */ vipp_term_offline()。 /* 發(fā)送下線信息 */ vipp_term_keep()。 /* 發(fā)送數(shù)據(jù)包 */ ② 廣播包協(xié)議: define TPHEAD 39。b39。 define TPTAIL 39。d39。 typedef struct udp_package { char head。 //協(xié)議包頭 char nickname[12+1]。 //昵稱 struct in_addr ip。 //IP 地址 (歷史原因,需要加上此成員) TERM_STATUS_E status。 //狀態(tài)值 int expdata。 //擴展數(shù)據(jù) char tail。 //協(xié)議包尾 29 }TERM_PACKAGE_S。 狀態(tài)值: 1: 忙碌 2:離開 3:空閑 4:無連接 5:下線 可定義為枚舉: typedef enum{BUSY=0x1, LEAVE, IDLE, NOKEEP, OFFLINE} TERM_STATUS_E。 ③ 刪除終端設(shè)備節(jié)點的兩種情況: 正常離線: 終端發(fā)送離線狀態(tài) 非正常離線:終端?;钣嫈?shù)值達到某個值 ?;钣嫈?shù)值: 每次發(fā)送數(shù)據(jù)包完成后對每個節(jié)點設(shè)備進行?;钪颠f減, 并在接收到終端信息時復(fù)位 ④ 數(shù)據(jù)包發(fā)送與接收: 發(fā)送:在接收到 SIGALRM 信號時發(fā)送數(shù)據(jù), SIGALRM 由 alarm()或 setitimer()函數(shù)生成。 接收:線程中接收數(shù)據(jù),接收時需要判斷包是否有效 初始化 流程: 創(chuàng)建廣播套接字 ① 創(chuàng)建套接字 ② 綁定端口號 ③ 設(shè)置套接字屬性:廣播 設(shè)置 setitimer 定時器時間 創(chuàng)建接收線程 ⑤ 接收線程處理函數(shù): 線程分離 死循環(huán) while(1){ 接收數(shù)據(jù)包 recvfrom 判斷數(shù)據(jù)包是否有效 無效 continue。 判斷是否為自己發(fā)送的廣播,如為自己的廣播不處理 continue。 鏈表操作處理 判斷鏈表中是否有該設(shè)備 使用十進制 IP地址配合 有:復(fù)位保活計數(shù), 判斷昵稱、狀態(tài)是否發(fā)生改變,若有改變節(jié)點中的昵稱或狀態(tài)信息,若數(shù)據(jù)包中狀態(tài)為 OFFLINE,刪除該節(jié)點;沒有:創(chuàng)建新的節(jié)點加入到鏈表中 。 } ⑥ SIGALRM 信號注冊函數(shù): 本地信息打包發(fā)送 sendto。 30 對鏈表中的每一個節(jié)點進行保活值 1并分析。 若節(jié)點保活值等于 0, 從鏈表中刪除該節(jié)點 。 配置及日志文件模塊 (1)功能 配置文件:系統(tǒng)在運行時,需要涉及一系列參數(shù),如本地設(shè)備昵稱,本機說明等,這些參數(shù)不能長期保存在 RAM 中,因此需要創(chuàng)建相關(guān)的文件保存在磁盤當(dāng)中,系統(tǒng)在執(zhí)行時會去讀取這些配置文件。 配置文件格式:配置字 =配置值 日志文件:日志文件主要分為,電話日志文件,留言日志文件,系統(tǒng)操作日志文件。 電話日志文件格式:日期 時間 設(shè)備昵稱 設(shè)備 IP 是否未接 短信日志文件格式:日期 時間 設(shè)備昵稱 設(shè)備 IP 留言內(nèi)容 系統(tǒng)操作日志文件 格式:日期 時間 什么操作(如,開機,關(guān)機,更新修改配置文件等待) 日志文件需要單獨創(chuàng)建文件夾 log,配置文件在應(yīng)用程序目錄中 (2)主要內(nèi)容 數(shù)據(jù)結(jié)構(gòu),鏈表,文件流 IO,字符串處理,實現(xiàn)原理 (3)實現(xiàn)原理: 根據(jù)格式, fopen 文件, 使用 fgets 讀取文件中的第一行信息,并解析每一行的信息。最后存儲到鏈表當(dāng)中。 (4)配置文件模塊部分函數(shù)定義以及部分解析: 描述:對文本進行解析,獲取鍵值以及對應(yīng)的值。調(diào)用函數(shù)通過鍵值返回值。 配置文件格式為:鍵值 =值 ① 配置頭文件 define CONFIG_KEY_LEN 10 define CONFIG_DATA_LEN 20 define CONFIG_FILE_LEN 30 ② 配置文件節(jié)點 typedef struct _config_info { char key[CONFIG_KEY_LEN + 1]。 char data[CONFIG_DATA_LEN + 1]。 struct _config_info *next。 }CONFIG_NODE_S。 typedef struct _config_head_ 31 { char configfile[CONFIG_FILE_LEN + 1]。 int item_num。 struct _config_info *info。 }CONFIG_HEAD_S。 ③ 配置文件初始化 形參:輸入配置文件路徑 int vipp_conf_init(const char * confpath)。 ④ 根據(jù)鍵值獲取值 const char * vipp_conf_getvalue(const char *key)。 日志文件模塊部分函數(shù)定義以及部分解析: 描述:記錄系統(tǒng)、電話、信息的文件。 ① 系統(tǒng)日志文件 功能:記錄系統(tǒng)在運行時的狀態(tài), 如何時啟動,何時關(guān)閉,出現(xiàn)異常 格式: 時間 信息 /* 系統(tǒng)日志文件寫入 */ int vipp_log_syslogwrite(const char *data)。 /* 系統(tǒng)日志文件讀取,并顯示在屏幕中 */ int vipp_log_syslogread()。 /* 獲取系統(tǒng)日志文件數(shù)量 */ int vipp_log_sysloggetnum()。 ② 通話日志文件 功能:記錄系統(tǒng)在運行時候的通話記錄。 格式: 時間 with 目標(biāo) IP 地址(昵稱) 方向 /* 通話日志文件寫入 0:來電 1:去電 */ int vipp_log_calllogwrite(const char *ip, const char *nn, int dir)。 /* 通話日志文件讀取,并顯示在屏幕中 */ int vipp_log_calllogread()。 /* 通話系統(tǒng)日志文件數(shù)量 */ int vipp_log_callloggetnum()。 ③ 信息日志文件 功能:錄記系統(tǒng)在運行時候的信息。 格式: 時間 from 目標(biāo) IP 地址(昵稱) 信息內(nèi)容 /* 信息日志文件寫入 */ int vipp_log_mesglogwrite(const char *ip, const char * nn, const char *data)。 32 /* 信息日志文件讀取,并顯示在屏幕中 */ int vipp_log_mesglogread()。 /* 信息系統(tǒng)日志文件數(shù)量 */ int vipp_log_mesgsloggetnum()。 ④ 獲取時間的宏: define GET_SYSTIME(buf) 終端掃描模塊中增加函數(shù) : char *vipp_term_getnicknamebyip(const char *ip)。 后臺控制模塊 (1)功能: 后臺控制主要功能是可以通過串行口來控制系統(tǒng)。這是一個給開發(fā)者留的一個“ 后門 ” ,利用后臺控制,可以實現(xiàn)系統(tǒng)中所有的功能,并可以檢測系統(tǒng)運行狀態(tài)。 (2)主要內(nèi)容: 數(shù)據(jù)結(jié)構(gòu),函數(shù)指針,回調(diào)函數(shù),線程 (3)通用控制臺模塊部分函數(shù)定義以及部分解析: 描述:增加靈活性的控制臺模塊,可以任意在控制中增加新的命令或刪除命令。初始化后默認(rèn)有 quit 和 help 兩個命令。 ① 包含頭文件 define PROMPTLEN 12 define COMMANDLEN 20 define DESLEN 30 ② 控制臺和命令信息節(jié)點 /* 命令信息節(jié)點 */ typedef struct _cmd_node{ char cmd[COMMANDLEN + 1]。 /* 命令名 */ void (*pFun)(void *param)。 /* 命令功能函數(shù) */ char des[DESLEN + 1]。 /* 命令描述 */ struct _cmd_node *next。 /* 下一個命令 */ }CMD_NODE_S。 /* 控制臺頭結(jié)構(gòu)體 */ typedef struct _cmd_head { int maxcmd。 /* 最大命令數(shù) */ char bstart。 /* 判斷控制臺是否已初始化 */ pthread_t conpid。 /* 控制臺線程 */ char prompt1[PROMPTLEN+ 1]。 /* 提示符 1 */ 33 char prompt2[PROMPTLEN+ 1]。 /* 提示符 2 */ CMD_NODE_S *head。 /* 命令節(jié)點頭 */ }CMD_HEAD_S。 ③ 控制臺操作函數(shù) /* 控制臺初始化 */ int vipp_cons_initialize(const char *prompt1, const char * prompt2)。 /* 在控制臺中增加新的命令 */ int vipp_cons_addcmd(const char * cmdname, void (*pFun)(void *arg), const char *des)。 /* 在控制臺中刪除命令 */ int vipp_cons_delcmd(const char * cmdname)。 /* 控制臺修改提示符 */ int vipp_cons_modfiyprompt(const char * mpt1, const char * mpt 2)。 /* 控制臺退出函數(shù)處理 */ int vipp_cons_quitproc(void *(pFun)(void *arg))。 音頻模塊 (1)功能 : 系統(tǒng)的音頻采集以及播放 (2)主 要內(nèi)容: 設(shè)備驅(qū)動 IO, FIFO 管道,文件流 IO,音頻流 (3)音頻采集播放流程圖 : 圖 . 音頻流程圖 34 (4)音頻模塊部分函數(shù)定義以及部分解析: 描述:對音頻的采集與播放操作 ① 包含頭文件 include sys/ include linux/ ② 設(shè)置音頻格式 采集頻率 SNDCTL_DSP_SETFMT 量化位數(shù) SNDCTL_DSP_SPEED 通道數(shù) SNDCTL_DSP_CHANNELS ③ 音頻文件大小 (Byte) = 采集頻率 * 量化位數(shù) * 通道數(shù) *
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1