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

正文內容

linux環(huán)境下多媒體教學系統(tǒng)的設計與實現(xiàn)的學士學位畢業(yè)論文-資料下載頁

2025-06-19 14:14本頁面
  

【正文】 if ( *lpszCode == 39。139。 ) { ulBuff = ulBuff | 0x00000001。 } if ( nShift = ( sizeof(ulBuff) * 8 ) ) // 每32位做一次寫入操作 { *(unsigned long*)pucDestCur = ulBuff。 pucDestCur += sizeof(unsigned long)。 nShift = 0。 ulBuff = 0l。 } lpszCode++。 } } if ( nShift != 0 ) // 對最后不滿32位的編碼后數(shù)據(jù)補滿32位,寫入目標緩沖區(qū) { ulBuff = ulBuff ( sizeof(ulBuff) * 8 nShift )。 *(unsigned long*)pucDestCur = ulBuff。 pucDestCur += sizeof(unsigned long)。 } ……}其中,Huffman樹結點的數(shù)據(jù)結構如下:typedef struct{ int nParent。 // 父結點指針 int nLChild。 // 左孩子結點指針 int nRChild。 // 右孩子結點指針 unsigned char ucByte。 // 碼元 long lTimes。 // 碼元出現(xiàn)的次數(shù)} HuffNodeType。Huffman樹的數(shù)據(jù)結構如下typedef struct{ HuffNodeType *aHuff。 // Huffmam樹結點數(shù)組 int nCnt。 // 碼元種類數(shù) int nMax。 // 結點總數(shù)} HuffTreeType。Huffman解碼的過程為其逆過程,相對簡單,這里省略。 圖像發(fā)送、接收模塊圖像發(fā)送模塊實際上是一個UDP發(fā)送線程,負責將壓縮后的圖像數(shù)據(jù)封包并發(fā)送;相應的,圖像接收模塊實際上是一個UDP接收線程,負責接收并組合圖像數(shù)據(jù)。由于壓縮策略是把四幅圖像作為一組,每組第1幅圖像作為主關鍵幀只進行幀內壓縮,從第2幅圖像開始要先參考主關鍵幀進行幀間壓縮,再進行幀內壓縮,所以封裝成UDP包的時候,要給每個包前加上一個圖像數(shù)據(jù)包信息頭,以便接收方確定數(shù)據(jù)包的順序。圖像數(shù)據(jù)包信息頭的格式為:表41圖像數(shù)據(jù)包信息頭的格式組號組內幀號幀內包號幀內包數(shù)鼠標X坐標鼠標Y坐標保留組號:guint32類型,占四個字節(jié)。使用四個字節(jié)是保證組號在短期內不會用完,如果每秒能傳送一組圖像,則這個組號要136年才能用完。組內幀號:guint16類型,占兩個字節(jié)。因為每組圖像只有4幅,所以值一般為1~4。幀內包號:guint16類型,占兩個字節(jié)。接收端用于判斷該包是否接收過。幀內包數(shù):guint16類型,占兩個字節(jié)。一幅圖像有若干包組成,包數(shù)由圖像的大小決定,接收端用該值判斷當前圖像是否接收完整。鼠標X坐標:guint16類型,占兩個字節(jié)。截屏時鼠標的X坐標。鼠標Y坐標:guint16類型,占兩個字節(jié)。截屏時鼠標的Y坐標。保留:guint16類型,占兩個字節(jié)。為了使信息頭湊滿4的整數(shù)倍,設置了這個保留字段。其數(shù)據(jù)結構定義如下:typedef struct tagSCREENPACKINFOHEADER{ guint32 ui32GroupNo。 // 組號 guint16 ui16GroupFrameNo。 // 組內幀號 guint16 ui16PackageNo。 // 幀內包號 guint16 ui16PackageNum。 // 幀內包數(shù) guint16 ui16CursorX。 // 當前鼠標位置的X坐標 guint16 ui16CursorY。 // 當前鼠標位置的Y坐標 guint16 ui16Reserved。 / /保留} SCREENPACKINFOHEADER, *PSCREENPACKINFOHEADER。 遠程遙控模塊遠程遙控模塊負責捕獲教師端的鍵盤、鼠標操作,然后發(fā)送相對應的控制指令給教師端命令控制模塊。該模塊專為遠程控制而設計,而遠程控制時教師端接收的圖像由圖像顯示模塊顯示出來,圖像的顯示使用了GdkCanvas部件,因而捕獲教師端的鍵盤、鼠標操作實際上就是捕獲教師端在GdkCanvas上的鍵盤和鼠標事件。接收在GdkCanvas上產生的事件使用到GdkCanvas提供的一個回調函數(shù):on_gdkcanvas_event(),如下:gboolean on_gdkcanvas_event(GtkWidget *widget, GdkEvent *event, gpointer user_data){ …… switch ( (gint)eventtype ) { case GDK_MOTION_NOTIFY: // 鼠標移動 case GDK_BUTTON_PRESS: // 鼠標按鍵按下 { …… switch ( event ) { case 1: // 鼠標左鍵按下 case 3: // 鼠標右鍵按下 } } case GDK_BUTTON_RELEASE: // 鼠標按鍵放開 { …… switch ( event ) { case 1: // 鼠標左鍵放開 case 3: // 鼠標右鍵放開 } } case GDK_KEY_PRESS: // 鍵盤按鍵按下 case GDK_KEY_RELEASE: // 鍵盤按鍵放開 …… } 將與鍵盤、鼠標事件對應的控制指令發(fā)送給教師端命令控制模塊 ……} 鍵盤、鼠標控制模塊鍵盤、鼠標控制模塊負責在學生端被遠程控制時,模擬出與教師端相同的鍵盤和鼠標操作。模擬鍵盤和鼠標操作實際上就是在學生端模擬鍵盤和鼠標事件,然后讓系統(tǒng)處理模擬出來的事件。在GNOME下模擬事件是一件比較復雜的事情,國內外并沒有太多關于此方面的資料。 GNOME軟件層次的了解,我們可以知道本系統(tǒng)屬于Application層次的程序,要模擬事件,只能從以下幾個庫入手:GNOME庫、GTK+庫、GDK庫、Xlib、glib、C函數(shù)庫。其中,GNOME庫只是對GTK+庫的擴展,提供了一些小部件,所以在GNOME層上不能實現(xiàn)我們的目標;在GTK+和GDK層上,可以通過改寫事件循環(huán)來模擬事件,不過這樣做過于繁瑣,而且很難找到詳細的資料,于是先不作考慮;網上有人建議使用Xlib、glib寫鍵盤和鼠標驅動,以達到模擬鍵盤和鼠標事件的效果,不過這樣做過于復雜,也放棄了;最后,我在國外的網站上找到一個叫作XTest的庫,調用該庫的函數(shù)可以直接模擬各種鍵盤和鼠標事件,完全符合我們當前的需求。下面對XTest庫和其使用方法做一個簡單說明:XTest實際上是Xlib的一個擴展庫,國外網站對它的介紹是:XTest is a small program used to test X configuration which is used by the Red Hat Linux installation program anaconda, and other X configuration utilities. This extension is required to pletely test the X11 server with no user :XTest是被Red Hat Linux安裝程序“anaconda”和其他X配置工具用來測試X配置的小程序。這個擴展庫被要求在無人干涉的情況下完成對X11服務器的測試。完全安裝Ret Hat Linux ,XTest庫已經自動安裝進入系統(tǒng),頭文件在/usr/X11R6/include/X11/extensions里可以找到。根據(jù)庫說明,調用該庫函數(shù)必須包含頭文件“X11/extensions/”,并在連接時加上參數(shù)“l(fā)Xi –lXtst –lXext –lX11”。本系統(tǒng)調用的XTest庫函數(shù)如下:XTestFakeMotionEvent() // 模擬鼠標移動事件XTestFakeButtonEvent() // 模擬鼠標按鍵事件XTestFakeKeyEvent() // 模擬鍵盤按鍵事件詳細信息以及其他庫函數(shù)調用請參見::507/en/man/ 關機、重啟模塊關機、重啟模塊只是簡單的調用了system()系統(tǒng)調用,其中:關機的調用是:system( shutdown h now )。重啟的調用是:system( shutdown r now )。 學生登錄模塊圖42學生登錄模塊學生登錄模塊分為兩部分:一部分是圖形界面下的,用于讓學生填寫登錄信息,實際就是一個登錄界面,如下:另一部分是字符界面的,在Linux系統(tǒng)初始化結束后但尚未進入圖形界面之前運行,負責學生身份驗證,實際就是一段密碼驗證程序,這里不再詳述。 用戶界面模塊用戶界面模塊實際就是教師端的主界面,教師端的所有操作均在此界面上完成,這里省略。 第5章 使用說明本章的主要內容:軟件文件列表軟件的安裝與卸載軟件使用說明 教師端文件列表教師端包括3個文件,它們分別是:CyTeacher:教師端主程序:教師端配置文件:Galde生成的教師端圖形界面文件 學生端文件列表學生端包括5個文件,它們分別是:CyStudent:學生端主程序:學生端配置文件:Galde生成的學生端圖形界面文件CyLogin:學生端字符界面身份驗證程序:學生端身份驗證程序配置文件本軟件是一個基于TCP/IP協(xié)議和Linux操作系統(tǒng)的教學工具,可運行于Red Hat Linux的GNOME下。運行本軟件前首先應確保TCP/IP協(xié)議已被安裝且網絡連接無誤,否則本軟件會提出錯誤。 教師端的安裝與卸載安裝:把CyTeacher下的所有文件拷貝到/usr/share/Cy/CyTeacher下,[IP]主鍵下的子鍵[From]和[To]分別改成當前網段的起始地址和結束地址,就可以直接雙擊cyteacher來運行教師端了。卸載:直接刪除/usr/share/Cy/CyTeacher的所有文件即可。 學生端的安裝安裝:把CySytdent下的所有文件拷貝到/usr/share/Cy/CySytdent下,把CyLogin下的所有文件拷貝到/usr/Cy/CyLgoin下,[Server]主鍵下的子鍵[IP]改成當前登錄驗證服務器的IP地址,然后以管理員身份登錄,在/etc/“/usr/share/Cy/CyLogin/cylogin”,并運行gnomesessionproperties打開會話窗口,在啟動程序里添加“/usr/share/Cy/CyStudent/cystudent”,以后每次學生啟動Linux時會在字符界面下自動運行cylogin身份驗證程序,并在進入圖形界面時自動加載學生端主程序。卸載:直接刪除/usr/Cy/CyTeacher的所有文件,以以管理員身份登錄,去掉/etc/“/usr/share/Cy/CyLogin/cylogin”一行,并打開GNOME會話窗口,刪除啟動程序里的 “/usr/share/Cy/CyStudent/cystudent”即可。 教師端的使用啟動教師端后會顯示如圖所示的界面:圖51 教師端該界面包括一個菜單欄、一個工具條和一個學生端信息列表,如果有學生端連接,則列表中會增加一條該學生端的信息,如下:圖52 教師端連接學生(1)屏幕廣播:點擊菜單欄中的“屏幕”子菜單,再選擇“開始屏幕廣播”菜單選項(或者點擊工具欄里第一個圖標)就可以開始屏幕廣播了;若要結束屏幕廣播,選擇同一子菜單下的“結束屏幕廣播”菜單選項(或者點擊工具欄里第二個圖標)即可。(2)遠程監(jiān)控:選中學生端信息列表中的某個學生端,點擊菜單欄中的“遠程控制”子菜單,再選擇“開始遠程監(jiān)控”菜單選項(或者點擊第三個圖標)就可以對所選擇的學生端進行遠程監(jiān)控了,此時會彈出一個窗口,顯示被監(jiān)控的學生端的屏幕圖像(如圖53),只要保持該窗口在前臺,在教師端的鍵盤操作就會反映在該學生端上,另外,只要保持鼠標才該窗口中,在教師端的鼠標操作也會反映在該學生端上;若要結束遠程監(jiān)控,選擇同一子菜單下的“結束遠程監(jiān)控”菜單選項(或者點擊第四個圖標)即可。(3)遠程重啟、關機圖53遠程控制選中學生端信息列表中的某個學生端,點擊菜單欄中的“遠程控制”子菜單,再選擇“遠程重啟”菜單選項(或者點擊第五個圖標)和“遠程關機”菜單選項(或者點擊第六個圖標)就可以使所選擇的學生端強迫重啟和關機屏幕廣播配置點擊菜單欄中的“配置”子菜單,再選擇“屏幕廣播配置”菜單選項,就會彈出“屏幕廣播配置”對話框(如下圖),這里可以改變屏幕廣播時教師端截屏大小和學生端顯示的大小。圖54屏幕廣播配置點擊菜單欄中的“配置”子菜單,再選擇“遠程監(jiān)控配置”菜單選項,就會彈出“遠程監(jiān)控配置”對話框(如下圖),這里可以改變遠程監(jiān)控時學生端截屏大小和教師端顯示的大小。圖55 遠程監(jiān)控配置 學生端的使用學生端的身份驗證程序在每次開機Linux初始化完成后自動運行,提示學生端用戶輸入卡號或者學號(由配置文件決定),并輸入密碼,如驗證通過則進入Linux圖形界面,否則重新輸入卡號/學號和密碼,多次驗證錯誤后,管理員
點擊復制文檔內容
化學相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1