版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
ucGUI移植詳細設(shè)計及總結(jié)本文檔闡述了將ucGUI移植到IM12上的過程。ucGUI版本為3.9,移植到IM12上,觸摸屏及按鍵能夠正常使用。在ucGUI源碼包的基礎(chǔ)上,添加了一些接口函數(shù)以適應IM12,在使用時應該根據(jù)情況使用這些接口,這些新增加的函數(shù)的接口將在后面章節(jié)中詳細講述此外,適應IM12的ucGUI在WindRiverWorkbench3.0環(huán)境下被編譯成兩個靜態(tài)庫文件libNoWindow.a和libWindow.a,編譯程序時應該連接這兩個庫。文檔篇章安排如下:第一章,ucGUI源碼包簡介。主要介紹了所使用的ucGUI圖形庫中各文件夾的內(nèi)容及功能,并對IM12中與ucGUI移植相關(guān)的部分,包括觸摸屏、LCD、按鍵板等進行了簡單的介紹。第二章, 圖形庫移植。闡述如何對ucGUI進行配置、編譯,以在IM12的LCD上顯示圖形,此部分還未實現(xiàn)觸摸屏及按鍵功能,只是純粹的顯示而已第三章,觸摸屏移植。第四章,按鍵移植。第五章, 帶觸摸屏及按鍵功能的ucGUI應用程序模板。第一章ucGUI源碼包簡介ucGUI要移植到iml2上,實際上就是根據(jù)iml2的情況修改ucGUI中的一些配置項,或增加、刪減一些程序以適應im12,同時要保持ucGUI的特性。要做好移植工作,需對ucGUI及IMl2相關(guān)部分有足夠的了解。1.1ucGUI簡介移植所采用的ucGUI版本為3.9,主要包含的文件夾如圖1所示=OGUII,ZlAntiAll二)CflDYertColor,ConvertMuiioCoreFontl±]亡)JPEG_)LCDDriv^rITMemDev[ifMultiLtysr口Wid£€t口刪nJjGVIX圖1ucGUI源碼結(jié)構(gòu)圖各文件夾的主要內(nèi)容如下:Config 配置文件GUI 源代碼GUI_X 操作系統(tǒng)接口函數(shù)定義文件GUI源代碼文件:AntiAlias:抗鋸齒顯示效果支持。ConvertColor:彩色顯示的色彩轉(zhuǎn)換支持。ConvertMono:(b/w)和灰度顯示的色彩轉(zhuǎn)換支持。Core:核心文件,提供了GUI基本的功能。Font:字庫。JPEG:圖片操作函數(shù)。LCDDriver:LCD驅(qū)動支持。MemDev:內(nèi)存設(shè)備支持。主要功能是防止在項目重疊時觸摸屏的閃爍。Widget:窗體控件庫。WM:窗口管理庫。注意:JPEG、MemDev、Widget、WM是可裁剪項,若要支持Widget(窗體控件),需要WM(窗口管理器)的支持;使用控件時,需要將相應的頭文件包含進去,比如我們需要使用按鈕BUTTON,那么我們需要先包含BUTTON.h頭文件,否則控件即使支持也不可用。本次移植保留了JPEG、MemDev、Widget、WM這幾項。1.2IM12移植相關(guān)部分簡介移植中要設(shè)計到IM12的處理器、LCD、觸摸屏、按鍵板幾個部分。IM12的主處理器為三星公司的S3C2410,采用的LCD像素為800x600,觸屏屏芯片則使用了EPH1610,與串口2通信,按鍵板上包括一個飛梭、八個按鍵,其中一個按鍵實現(xiàn)系統(tǒng)開機或關(guān)機。第二章圖形庫移植圖形庫的移植的的工作是修改Config下的兩個個配置文件:GUIConf.h、LCDConf.h。同時需要修改GUI\LCDDriver目錄下的LCD驅(qū)動文件LCD2410.C和GUI_X文件夾下的操作系統(tǒng)接口定義文件GUI_X.c。2.1修改GUIConf.hGUIConf.h文件的主要內(nèi)容如下:#defineGUI_OS (1)/*多任務支持*/#defineGUI_SUPPORT_TOUCH (1)/*觸摸屏支持*/#defineGUI_SUPPORT_UNICODE(1)/*UNICODE支持*/**/#defineGUI_DEFAULT_FONT&GUI_Font6x8/*默認字體*/#defineGUI_ALLOC_SIZE(10*1024*1024) /*動態(tài)內(nèi)存大小**/Configurationofavailablepackages1/*視窗管理支持1/*視窗管理支持*/1/*內(nèi)存設(shè)備支持*/1/*抗鋸齒支持*/#defineGUI_SUPPORT_MEMDEV#defineGUI_SUPPORT_AA在上面的配置中,值1表示支持,0表示不支持。ucGUI程序要運行在多任務操作系統(tǒng)VxWorks中,所以需要選擇支持多任務。同時,需要支持觸摸屏、Unicode編碼。ucGUI默認字體選擇為GUI_Font6x8,該種字體在GUI.h中有聲明。GUI_ALLOC_SIZE表示可用于可分配的動態(tài)內(nèi)存的大小。IM12屏幕分辨率為800x600,用于存儲屏幕數(shù)據(jù)的最小值為(800+7)/8*600*16=960,000,在其它地方也會耗費一些內(nèi)存,所以為GUI_ALLOC_SIZE指定值為10*1024*1024。2.2修改LCDConfig.hLCDConfig.h文件的主要內(nèi)容如下:#defineLCD_XSIZE(800)/*LCD的X軸分辨率*/#defineLCD_YSIZE(600)/*LCD的Y軸分辨率*/#defineLCD_BITSPERPIXEL(16)/*每個像素的顏色位數(shù)*/#defineLCD_CONTROLLER2410/*LCD控制器的名稱*/#defineLCD_SWAP_RB_01/*是否紅藍父換*/注意:LCD_SWAP_RB會影響到顏色的正確性,倘若發(fā)現(xiàn)顏色是反向的,那么不如改變LCD_SWAP_RB的值。上面所說的LCD控制器名字并不代表LCD實際名字°LCD的驅(qū)動文件LCD2410.c中,在文件包含聲明之后,有一行代碼“#if(LCD_CONTROLLER==2410)”,此語句表示,如果LCD_CONTROLLER的值為2410則編譯下面的程序。所以,在LCD2410.c和LCDConf.h中的LCD_CONTROLLER中的值一致,就可以使用該驅(qū)動文件了。值得注意的是,應該保證在可選擇的LCD驅(qū)動文件不止一個的時候,各驅(qū)動文件的有效LCD_CONTROLLER值都是不同的。2.4修改LCD2410.c在GUI/LCDDriver文件夾下存放著對應于LCD驅(qū)動文件LCD2410.C,在這個文件中聲明了幾個外部函數(shù),需要在該文件之外進行定義。這幾個需要在外部進行定義的函數(shù)是:voidLCD_init(void);voidLCD_PutPixel(intx,inty,unsignedshortColor);unsignedshortLCD_GetPixel(intx,inty);voidLCD_BaCklight(intarg);voidLCD_TurnON(void);voidLCD_TurnOFF(void);這幾個函數(shù)中,LCD_PutPixel()、LCD_GetPixel()及LCD_Backlight()都在LCD的底層驅(qū)動中進行了定義,并且在LCD_RawDrv.h中進行了聲明。把剩下的LCD_init()、LCD_TurnON()、LCD_TurnOFF()集中在自定義的文件LCD_PrimFunction.c中,文件內(nèi)容如下:/*LCD相關(guān)硬件初始化*/voidLCD_init(void){LCD_HwInit();}/*打開LCD*/voidLCD_TurnON(void){}/*關(guān)閉LCD*/voidLCD_TurnOFF(void){}LCD_init()調(diào)用了函數(shù)LCD_HwInit()進行初始化,而LCD_TurnOn()僅僅在LCD2410.C中的voidLCD_On(void)中被調(diào)用一次,LCD_On()函數(shù)原型如下:voidLCD_On(void){externvoidLCD_TurnON(void);LCD_TurnON();LCD_Backlight(1);}LCD_On()要實現(xiàn)的功能是打開LCD,有些LCD需要利用LCD_TurnON()做一些設(shè)置,然后再調(diào)用LCD_BackLight(l)才算是把LCD打開,而IM12的LCD只需掉用LCD_Backlight(l)就可以了,所以定義LCD_TurnON()為空。2.5改寫操作系統(tǒng)相關(guān)接口函數(shù):主要填寫GUI_X文件夾下的GUI_X.c文件,該文件下是一些操作系統(tǒng)相關(guān)的函數(shù)的封裝或轉(zhuǎn)換。在各函數(shù)內(nèi)填寫適合于VxWorks的內(nèi)容。2.6出錯處理上述配置情況下,在WindRiverWorkben開發(fā)環(huán)境中使用ARMARCH5diab編譯器將ucGUI的所有文件一同編譯,會出現(xiàn)如下的錯誤提示。C:\DOCUME~l\ADMINI~l\LOCALS~l\Temp\makelO36371.sh:did:can'texecute:(87)參數(shù)不正確。錯誤提示的大概內(nèi)容是“did命令不能執(zhí)行,因為該命令的參數(shù)不正確。”實際上是由于ucGUI中的文件數(shù)目過多,尤其是GUI下面的Widget文件夾,該文件夾的文件數(shù)目達245個。這么多的文件,以至于在最終把.o文件鏈接成.out文件的工作不能完成。為了解決這個問題,對ucGUI進行分割,將GUI文件夾中的Widget提取出來,歸為另外一個工程guiWindow,而剩下的文件歸為工程guiNoWindow。Widget調(diào)用guiNoWindow工程生成的靜態(tài)庫文件libNoWindow.a生成另外一個靜態(tài)庫文件libWindow.a,應用程序在使用時應該調(diào)用這兩個靜態(tài)庫。將Widget劃分出來的依據(jù)是,ucGUI總共有七百多個.C和.H文件,而Widget文件夾竟然有245個.C和.H文件,占的比例是比較大的,可見Widget是導致鏈接不成功的主要原因;而且,JPEG、MemDev、Widget、WM是可裁剪項,除Widget外,其余3個文件夾與其他的不可裁剪的函數(shù)間存在相互調(diào)用的關(guān)系,而Widget文件夾里的文件處于最高層位置,總是調(diào)用其它文件夾里的函數(shù)。所以綜合考慮,把Widget分離開來比較合適。由于Widget中的一些文件會調(diào)用其他文件夾的文件,如BUTTON.h文件,在頭文件中包含了了”..\WM\WM.h”文件,將Widget與其他文件夾分離后,編譯會因找不到指定路徑的WM.h文件而報錯。為了解決這種情況,將各個文件夾中的.h抽取出來放在includes中,在WindRiverWorkBench中指定到這來查找頭文件,并將各個文件中相關(guān)的文件路徑進行更改,更改后變?yōu)?include“fileName”。最后,編譯通過。第三章觸摸屏移植IM12的觸摸屏采用了EPH1610芯片進行控制,移植時主要修改兩個文件,分別是Config目錄下的觸摸屏配置文件GUITouchConf.h及GUI_X目錄下的觸摸屏驅(qū)動文件GUI_X_Touch.c。3.1修改GUITouchConf.hGUITouchConf.h中主要內(nèi)容如下:#defineGUI_TOUCH_AD_LEFT0x07/*觸摸屏左側(cè)AD測量值*/#defineGUI_TOUCH_AD_RIGHT0xf8/*觸摸屏右側(cè)AD測量值*/#defineGUI_TOUCH_AD_TOP0x05/*觸摸屏上方AD測量值*/#defineGUI_TOUCH_AD_BUTTOM0xf6/*觸摸屏底部AD測量值*/#defineGUI_TOUCH_SWAP_XY0/*X、Y方向翻轉(zhuǎn)*/#defineGUI_TOUCH_MIRROR_X0/*X方向鏡像*/#defineGUI_TOUCH_MIRROR_Y0/*X方向鏡像*/上面所說的觸摸屏左側(cè)、右側(cè)、上方、底部并不是指觸摸屏本身,而是相對于與其連接的LCD而言,GUI_TOUCH_AD_LEFT指LCD坐標值X坐標值為0時的AD測量值。上述的值除了出現(xiàn)在觸摸屏配置文件GUITouchConf.h外,還出現(xiàn)在ucGUI的觸摸屏驅(qū)動文件GUI_TOUCH_DriverAnalog.c中,在其他位置不再使用這幾值。這幾個宏定義的作用是確定在指定的物理坐標系中X軸及Y軸的最小及最大值。在GUI_TOUCH_DriverAnalog.c中指定了這幾個數(shù)的默認值。GUI_TOUCH_SWAP_XY、GUI_TOUCH_MIRROR_X、GUI_TOUCH_MIRROR_Y的值為0或1,因此在一開始就可以根據(jù)需要指定這三個值。而GUI_TOUCH_AD_LEFT?BUTTOM這幾個值是存在變動的,如果這幾個值配置得不準確,會導致觸摸不準的狀況,雖說可以用校準的方法改變,但卻要每次都要進行校準確實是比較麻煩。解決這個問題的方法是,先確定一個大概的值,讓觸摸屏運行起來,然后再使用校準程序獲取GUI_TOU_AD_LEFT?BUTTOM的值,再在GUITouchConf.h中修改這幾個值,并重新編譯ucGUI。3.2修改GUI_X_TOUCH.c修改了GUITouchConf.h后,接著修改觸摸屏底層接口定義文件GUI_X_TOUCH.c,該修改后,文件內(nèi)容如下/*激活X方向的測量*/voidGUI_TOUCH_X_ActivateX(void){}/*激活Y方向的測量*/voidGUI_TOUCH_X_ActivateY(void){}/*讀取X方向AD轉(zhuǎn)換值*/intGUI_TOUCH_X_MeasureX(void){returnTouch_MeasurementX();/*對應觸摸驅(qū)動中的讀取x值函數(shù)*/}/*讀取Y方向AD轉(zhuǎn)換值*/intGUI_TOUCH_X_MeasureY(void){returnTouch_MeasurementY();/*對應觸摸驅(qū)動中的讀取y值函數(shù)*/}由于在給定的觸摸屏驅(qū)動中,并不存在Touch_MeasurementX()、Touch_MeasurementY()這兩個。所以引用原來的觸摸屏驅(qū)動文件,并將文件名及其中的文件函數(shù)名進行更改,以避免沖突,然后定義這兩個文件。Touch_MeasurementY()和Touch_MeasurementX()是通過讀取驅(qū)動文件中的全局變量ePH_phyY和ePH_phyX得到的,在使用時需要啟動一個任務,不斷獲取AD值并更改這兩個數(shù)據(jù)。第四章按鍵移植第四章按鍵移植IM12的按鍵板通過串口與處理器進行通信。IM12按鍵板上有一個飛梭和八個按鈕,其中一個按鈕是系統(tǒng)開關(guān)按鈕。ucGUI中并沒有提供按鍵板驅(qū)動,但提供了鍵盤驅(qū)動,可以利用這個鍵盤驅(qū)動而啟用按鍵功能。鍵盤驅(qū)動程序?qū)硬僮麈I盤信息函數(shù)。當具體的鍵或按鍵鍵組合已經(jīng)按下或被釋放時,程序會通知視窗管理器。驅(qū)動層有兩主要函數(shù):voidGUI_StoreKeyMsg(intKey,intPressed)及voidGUI_SendKeyMsg(intKey,intPressed)。GUI_StoreKeyMsg()函數(shù)能夠存儲一個鍵的狀態(tài)信息,而GUI_SendKeyMsg()能向一個指定的按鍵發(fā)送狀態(tài)信息。GUI_StoreKeyMsg()函數(shù)的實現(xiàn)其實就是根據(jù)輸入?yún)?shù)Key,Pressed來更改它的定義文件GUI_OnKey.c中的—KeyMsgCnt,_KeyMsg,_Key三個數(shù)據(jù)。而該文件中的其他函數(shù)GUI_GetKey(),GUI_StoreKey(),GUI_SendKeyMsg(),GUI_PollKeyMsg()則調(diào)用這些數(shù)據(jù)進行操作。這里比較重要的函數(shù)是GUI_PollKeyMsg(),該函數(shù)實現(xiàn)檢測鍵盤信息并將檢測到的信息發(fā)送給視窗管理器讓其進行相應的處理。要啟用按鍵功能,有兩個要點,一是不斷獲取按鍵狀態(tài)并保存。二是不斷獲取按鍵狀態(tài)并進行處理。獲取按鍵狀態(tài)的工作在上層應用層進行,實際上就是要不斷調(diào)用GUI_PollKeyMsg()函數(shù)。所以移植按鍵的工作實質(zhì)上就是不斷獲取按鍵狀態(tài)并保存,這里實際上是不斷地讀取串口數(shù)據(jù)里的數(shù)據(jù),然后經(jīng)轉(zhuǎn)換,用GUI_StoreKeyMsg()保存。4.1按鍵值轉(zhuǎn)換ucGUI預定義了一些虛擬鍵盤代碼,如下表所示預定巽的虛擬鍵代碼描述GUIKRY.BACKSPACEGUIKEYTABTAB?鍵oGUIKEYENTER回車/返回鯉。GUIKEYLEFT左箭頭健-GUIKEYUP向上箭頭鍵-GUIKEYRIGHT右箭頭??;GUI_KEY_[X)WN向下箭頭卷GUI_KEY_HO?EHorned(移到與前行的幵頭).GUrKEYB?iD缽鍵(移到省前彳丁的未端抵GUI.KEY.SHIFT換檔犍-GUI.KEY.OONTROt,控制鯉-'GUIKEY.ESCAPE換碼溶GUI.KRY.INSERT插入輒GUIKEYDELETE刪除鍵-視窗管理器根據(jù)這些預定義的虛擬鍵盤值對鍵盤動作產(chǎn)生作用,如GUI_KEY_UP鍵使下拉框的選擇項上移。按鍵板產(chǎn)生的值與這些值并不對應,例如按下飛梭鍵參數(shù)的按鍵值為8,而GUI_KEY_ENTER預定義的值為13,所以若要使飛梭按下動作與鍵盤Enter鍵按下動作產(chǎn)生相同的效果,則要將從串口讀取的數(shù)據(jù)進行轉(zhuǎn)換,轉(zhuǎn)換為鍵盤 Enter鍵的值GUI_KEY_ENTER。按鍵板中,飛梭起到方向鍵的作用,它可產(chǎn)生三個動作,分別是順時針旋轉(zhuǎn)、逆時針旋轉(zhuǎn)、按下。按下動作,類似于普通的按鍵動作,這里把這個鍵轉(zhuǎn)化為GUI_KEY_ENTER。在IM12中,飛梭的旋轉(zhuǎn)動作可代表產(chǎn)生上下、左右方向鍵及制表和反向制表的動作,可見飛梭的旋轉(zhuǎn)動作效果必須是可切換的。因此在按鍵板的主程序文件Key.c中指定一個按鍵模式全局變量KeyMode,按鍵模式由voidSetKeyMode(intkeyMode)進行設(shè)定。飛梭動作值被讀取后,根據(jù)當前模式,決定轉(zhuǎn)換后的值,各種模式飛梭動作值經(jīng)轉(zhuǎn)換后的值含義如下表所示:動作模式左旋右旋0(KEY_MODE_TAB)GUI_KEY_SHIFT_TABGUI_KEY_TAB1(KEY_M0DE_UP_D0WN)GUI_KEY_UPGUI_KEY_DOWN2(KEY_MODE_LEFE_RIGHT)GUI_KEY_LEFTGUI_KEY_RIGHTGUI_KEY_SHIFT_TAB是自定義的反向制表鍵,相當于shift+tab組合鍵。ucGUI源碼包中并不存在這個鍵的定義,也不存在退格制表的功能。但TAB鍵還是發(fā)揮著制表的作用,因此可以模仿TAB鍵的制表功能的實現(xiàn)機理來實現(xiàn)GUI_KEY_SHIFT_TAB鍵的反向制表功4.2反向制表功能的實現(xiàn)1、 反向制表功能實現(xiàn)的第一步當然是定義GUI_KEY_SHIFT_TAB的值,指定的值不能造成與其他鍵值的沖突,這里將這個值設(shè)定為0x7e。2、 查看TAB鍵制表功能的實現(xiàn)機理。要實現(xiàn)此功能,必然會先判斷按下的按鍵為TAB鍵,然后再實現(xiàn)制表。搜索ucGUI中GUI_KEY_TAB的使用情況,發(fā)現(xiàn)除定義文件外,一共出現(xiàn)在四個地方,出現(xiàn)的位置及使用情況如下:序使用情況函數(shù)名文件名1switch(Key)[caseGUiKEvrAB:br&ak;default:DROPDOUNjadKeijfhObbKey);return;DROPDOWNCallback()DROPDOWN.
2switch(Key)[caseGUI_KEY_TAB:break;default:EDIT-ftddKeyfhOhLKey};return;EDIT_Callback()EDIT.c3switch(Key}{caseCUIKEVTftB:pObj->tiFocu55edChild=WM_SetFocusOnNextChild(hWin);return;FRAMEWIN__cbClient(FRAMEWIN.4(K&y){caseGUIKEVTfiB:pObj->hFocusse(lGtiild=WM_SPtFocu50nNextCiiiliHhObj);break;_cb()WINDOW.c查看上述的這些代碼可知,制表的實現(xiàn)在函數(shù)FRAMEWIN_cbClient()及_cb()中,首先是判斷按下的鍵為TAB鍵,然后再將焦點設(shè)置在下個子窗口。函數(shù)WM_SetFocusOnNextChild()在WM.h中,查看此文件發(fā)現(xiàn)以下的情況:WM_HWINWM_SetFocusOnNextChild(WM_HWINhParent;;WM_HWINWM_SetFocusOnPreuChild(WM_HWINhParent);函數(shù)SetFocusOnNextChild()將焦點設(shè)置在下一個子窗口,而WM_SetFocusOnPrevChild()函數(shù)則將焦點設(shè)置在前一個子窗口。觀察WM_SetFocusOnPrevChild()的使用情況,發(fā)現(xiàn)除了定義及聲明外,它并沒有被ucGUI中的其它地方調(diào)用。綜合考慮,可在FRAMEWIN.c及WINDOW.c模仿TAB制表的實現(xiàn),調(diào)用SetFocusOnPrevChild()實現(xiàn)反向制表。在FRAMEWIN.c的FRAMEWIN__cbClient()中按鍵值選項中,緊跟GUI_KEY_TAB項添加以下內(nèi)容:BiFdefGUI_KEY_SHIFT_TfiBcaseGUI_KEV_SHIFT_TAB:pObj->hFocussedChild=WM_SetFocusOnPreuChild(hWin);return;ItendiF同時在WINDOW.c中的—cb()中,緊跟GUI_KEY_TAB項添加以下內(nèi)容:ttiFdefGUIKEVSHIFTTABcaseGUI_KEY_SHIFT_TfiB:pObj->hFocussedChild=WMSetFocusOnPreuChild(hObj);break;ttendif第五章帶觸摸屏及按鍵功能的ucGUI應用程序模板擁有觸摸屏及按鍵功能的ucGUI應用程序模板如下所示:#include"Key.h"#include"KeyValue.h"#include"vxWorks.h"#include"taskLib.h"#include"semLib.h"#include"TouchDriver.h"#include"LCDConf.h"#defineTouch_PRIORITY100#defineKEY_PRIORITY 101#defineGUI_PRIORITY 102SEM_IDlcdSemId;/*lcd信號量*/code*/嚴*函數(shù)名:Task_GUI()*函數(shù)描述:不斷地執(zhí)行g(shù)ui任務voidTask_GUI(void){while(l){code*/GUI_ExecDialogBox(_aDialogCreate,GUI_COUNTOF(_aDialogCreate),&_cbDialog,0,0,0);GUI_Delay(1000);函數(shù)名:Task_Touch()函數(shù)描述:不斷地檢測觸摸屏狀態(tài),并保存voidTask_Touch(void){while(1){GUI_TOUC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨學科視角下的小學生綜合計算能力培養(yǎng)策略研究總結(jié)
- DB6528T 210-2024板椒聯(lián)合收獲機作業(yè)技術(shù)規(guī)程
- DB6103T 82-2025夏大豆擴行縮株栽培技術(shù)規(guī)范
- 專業(yè)常年法律顧問聘任合同模板
- 個人投資入股合作合同協(xié)議
- 專利許可合同
- 買賣合同終止及賠償協(xié)議
- 專兼職律師服務合同格式范本
- 個人咖啡店轉(zhuǎn)讓合同范本
- 產(chǎn)品設(shè)計與制造合同范本
- 消防器材與消防設(shè)施的維護與檢查
- 2024年度碳陶剎車盤分析報告
- 四川省綿陽市2025屆高三上學期第二次診斷性考試語文試題(含答案)
- 2025年1月 浙江首考英語試卷
- 2025年1月廣西2025屆高三調(diào)研考試英語試卷(含答案詳解)
- 質(zhì)檢工作計劃書2025質(zhì)檢部工作計劃范文
- 《復旦大學》課件
- 承包魚塘維修施工合同范例
- 2024版《糖尿病健康宣教》課件
- 2024年遼寧鐵道職業(yè)技術(shù)學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- GB/T 9290-2008表面活性劑工業(yè)乙氧基化脂肪胺分析方法
評論
0/150
提交評論