emWin使用文檔_第1頁
emWin使用文檔_第2頁
emWin使用文檔_第3頁
emWin使用文檔_第4頁
emWin使用文檔_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、目錄一、emWin介紹11.1 emWin簡介11.2 emWin應用的軟件架構2二、emWin用戶手冊介紹及使用22.1 emWin用戶手冊簡介22.2 根據(jù)函數(shù)名查找?guī)旌瘮?shù)說明32.3 根據(jù)功能查找?guī)旌瘮?shù)3三、emWin開發(fā)過程中調用API及功能43.1 通用小工具API43.2 BUTTON API53.3 EDIT API6四、搭建emWin的Windows仿真環(huán)境74.1 仿真版本emWin文件介紹74.2 使用 VS2010 仿真 emWin84.3 emWin仿真工程概覽9五、 GUI_Builder185.1 簡介185.2 創(chuàng)建對話框195.3 GUI_Builder的輸出2

2、05.4 如何使用C文件24六、項目代碼結構概述24七、emWin的keil項目介紹327.1 keil環(huán)境搭建327.2 keil項目主要文件簡介327.3 硬件驅動配置(LCD、SDRAM)34八、Keil環(huán)境下實板調試36九、問題總結37參考資料:37軟件工具:Keil 4、VS2010硬件工具:TFT-LCD7寸、LPC1788控制板一、emWin介紹1.1 emWin簡介emWin(大概是 embed win 的縮寫)是 Segger 公司針對嵌入式平臺開發(fā)的圖形軟件庫,通過調用 emWin 提供的函數(shù)接口,開發(fā)嵌入式圖形界面應用變得簡單而快捷。圖形軟件庫就是一些與圖形界面相關的函數(shù)

3、,它提供接口給用戶調用。例如,在沒有使用圖形軟件庫時,要控制 LCD 顯示一個圓,需要用戶自行根據(jù) LCD驅動編寫畫圓的函數(shù),而使用圖形界面軟件庫的話,這個畫圓函數(shù)已經(jīng)由該軟件庫提供給用戶,用戶只需要調用這個函數(shù),設置圓的半徑、圓心、顏色就可以畫出自己想要的圓,不需要再考慮畫圓的算法了。emWin 并不只是提供了畫圓之類的基本繪圖函數(shù)庫,它的主要功能如下: 繪制 2-D 圖形:繪制圓、橢圓、多邊形、弧線、線圖和餅形圖等; 顯示位圖文件:顯示 BMP、JPEG、GIF 及 PNG 格式的圖片文件; 顯示文字:支持顯示多國語言的文字,如中英文; 處理用戶輸入:如鍵盤、鼠標及觸摸屏的人機交互輸入處理

4、; 提供各種窗口對象:這些窗口對象也被稱為圖形控件,最常見的如菜單控件、窗口控件、按鍵控件、復選框及框架窗口控件等,有了這些控件,就非常容易地制作出類似 windows 系統(tǒng)的控制界面了。 emWin 的這些功能,就是為了解決人機交互應用的設計難題。而它對 ROM 和 RAM的消耗相對來說并不高。據(jù)官方統(tǒng)計,它們提供的一個基本例程(移植了 emWin 函數(shù)庫顯示“HelloWorld”),消耗 ROM 60KB,RAM 7KB,這在當前大多數(shù)嵌入式平臺都是可以接受的。又因為 emWin 可以在多任務系統(tǒng)及裸機的平臺上運行,尤其適合嵌入式亂七八糟的開發(fā)要求,自然使得 emWin 在嵌入式人機交互

5、場合中大放異彩。1.2 emWin應用的軟件架構圖1-1從最底層看起, 首先是硬件層,硬件層就是指最基本的板級支持軟件包(BSP),也就是我們常說的底層驅動,它提供了對硬件平臺資源最直接的訪問;emWin 軟件庫承上啟下,它運行在硬件層之上,與硬件層之間僅靠液晶驅動連接起來,而向應用層則提供了各種便于用戶制作 GUI 應用的接口。 在沒有使用 emWin 的軟件架構中,很可能就是由硬件層直接過渡到應用層,甚至根本沒有分層的概念,這樣的應用程序將十分依賴于某個特定的硬件平臺,不容易遷移到其它設備之中。從這個架構圖可以看出,只需要編寫好液晶驅動這個粘合 emWin 庫和硬件BSP 層的中間件,就可

6、以正常使用 emWin 了,遷移應用到不同的平臺也簡單得多。二、emWin用戶手冊介紹及使用2.1 emWin用戶手冊簡介emWin 用戶手冊就是關于 Segger 官方給出的 emWin 幫助文檔,它的內容包括emWin 簡介、仿真、各種庫函數(shù)詳細信息、液晶驅動移植、配套工具軟件的使用、emWin性能及資源占用都一一進行了說明,對于沒有開源代碼的軟件庫,其幫助文檔的重要性不言而喻。2.2 根據(jù)函數(shù)名查找?guī)旌瘮?shù)說明我們會經(jīng)常遇到一些陌生的 emWin 庫函數(shù),庫函數(shù)大多以 GUI 為前綴命名,如 GUI_Init、GUI_DispString 等 GUI_xxx 格式。當我們想要獲這些庫函數(shù)詳

7、細信息時,可在emWin 用戶手冊中搜索。如下圖示:圖2-12.3 根據(jù)功能查找?guī)旌瘮?shù)我們根本不知道 emWin 庫有沒有這種功能的函數(shù),就算知道有,也常常忘記了函數(shù)的名字。這時候我們就可以根據(jù)emWin 用戶手冊的目錄來找了,emWin 用戶手冊對它每種功能的函數(shù)集都有一個函數(shù)列表,簡要介紹函數(shù)的功能,瀏覽相關的函數(shù)列表及其簡介,就可以找到相關的庫函數(shù)名了,這時再搜索該函數(shù)名就可以獲得詳細的函數(shù)說明。 例如我們想查找某個在特定位置顯示字符串的函數(shù),就可以在用戶手冊的標簽頁中找到“文本 API”標簽(其它功能函數(shù)如“評估 API(此處文檔翻譯有誤,應為:數(shù)值 API)”、“圖形 API”等),

8、然后就可以在文本 API 函數(shù)列表中找到一個名叫 GUI_DispStringAt 的函數(shù),其功能簡介是“在指定位置顯示字符串”,它正符合我們的要求,再根據(jù)給出的函數(shù)名,就可以搜索到該函數(shù)的詳細說明,如下圖示:圖2-2三、emWin開發(fā)過程中調用API及功能3.1 通用小工具API例程描述WM_DeleteWindow()刪除窗口WM_DisableMemdev()禁止使用存儲設備進行重繪WM_EnableMemdev()啟用存儲設備用于重繪WM_InvalidateWndow()使窗口無效WM_Paint()立即繪制或重繪窗口WM_DelectWindow()原型void WM_Delete

9、Window(WM_HWIN hWin);參數(shù):hWin 描述:窗口句柄其他信息刪除窗口前,他將收一條WM_DELETE消息,此消息通常用于刪除所使用的任何對象(小工具),并釋放窗口動態(tài)內存分配。如果指定的窗口具有任何現(xiàn)有子窗口,則在刪除窗口前自動刪除這些子窗口,因此不必分別刪除子窗口,窗口刪除前會發(fā)送一條WM_NOTIFICATION_CHILD_DELETED消息到其父窗口。WM_DisableMemdev()原型void WM_DisableMemdev(WM_HWIN hWin);參數(shù):hWin 描述:窗口句柄WM_EnableMemdev()原型void WM_EnableMemde

10、v(WM_HWIN hWin);參數(shù):hWin 描述:窗口句柄WM_InvalidateWndow()原型void WM_InvalidateWindow(WM_HWIN hWin);參數(shù):hWin 描述:窗口句柄WM_Paint()原型void WM_Paint(WM_HWIN hWin);參數(shù):hWin 描述:窗口句柄3.2 BUTTON API例程描述BUTTON_Create()創(chuàng)建BUTTON小工具BUTTON_SetBkColor()設置按鈕背景色BUTTON_SetDefaultFont()設置BUTTON小工具默認字體BUTTON_SetDefaultTextAlign()設置

11、BUTTON小工具默認文本對齊方式BUTTON_SetBitmap()設置顯示指定按鈕時要使用的位圖BUTTON_Create()描述在指定位置創(chuàng)建指定尺寸大小的BUTTON小工具原型BUTTON_Handle BUTTON_Create(int x0,int y0,int xSize ,ySize int Id,int Flags);參數(shù):x0 描述:按鈕的最左像素(在父窗口中) y0 按鈕的最上像素(在父窗口中) xSize 按鈕的水平尺寸(單位:像素) ySize 按鈕的垂直尺寸(單位:像素) Id 按鈕按下時要返回的ID Flags 窗口創(chuàng)建標記,為了使小工具可見,通常是WM_CF_S

12、HOW返回值已創(chuàng)建BUTTON小工具的句柄,函數(shù)失敗時為0;BUTTON_SetBkColor()原型void BUTTON_SetBkColor(BUTTON_Handle hObj, unsiged int Index,GUI_COLOR Color);參數(shù):hObj 描述:按鈕的句柄 Index 顏色的索引 Color 要設置的顏色BUTTON_SetDefaultFont()描述設置用于顯示BUTTON小工具文本GUI_FONT結構的指針原型void BUTTON_SetDefaultFont(const GUI_FONT * pFont);參數(shù): pFont 描述:要使用的GUI_F

13、ONT指針BUTTON_SetDefaultTextAlign()描述設置用于顯示BUTTON小工具文本的默認對齊方式原型void BUTTON_SetDefaultTextAlign(int Align);參數(shù):Align 描述:要使用的文本對齊方式BUTTON_SetBitmap()原型Void BUTTON_SetBitmap(BUTTON_Handle hObj, unsigned int Index,const GUI_BITMAP * pBitmap);參數(shù):hObj 描述:按鈕的句柄 Index 位圖的索引 pBitmap 位圖結構的指針其他信息如果僅設置了未按下狀態(tài)的位圖,則當

14、按鈕按下或者禁用時,按鈕也將顯示該位圖。3.3 EDIT API例程描述EDIT_Create()創(chuàng)建EDIT小工具EDIT_GetText()獲取用戶輸入EDIT_SetFont()選擇文本字體EDIT_SetMaxLen()設置編輯字段的最大字符EDIT_SetVlaue()設置當前值EDIT_Create()原型EDIT_Handle EDIT_Create(int x0,int y0,int xsize,int ysize,int Id,int ,MaxLen,int Flags);參數(shù):x0 描述:編輯字段的最左像素(在父坐標中) y0 編輯字段的最上像素(在父坐標中) xsize

15、編輯字段的水平尺寸(單位:像素) ysize 編輯字段的垂直尺寸(單位:像素) Id 將返回的ID MaxLen 最大字符數(shù) Flags 窗口創(chuàng)建標記 EDIT_GetText()原型Void EDIT_GetText(EDIT_Handle hObj,char * sDest,int MaxLen);參數(shù):hObj 描述:編輯字段句柄 sDest 指向緩沖區(qū)指針 MaxLen 緩沖區(qū)的大小EDIT_SetFont()原型Void EDIT_SetFont(EDIT_Handle hObj,const GUI_FONT *pFont);參數(shù):hObj 描述:編輯字段的句柄 pFont 字體的指

16、針EDIT_SetMaxLen()原型Void EDIT_SetMaxLen(EDIT_Handle hObj,int MaxLen);參數(shù):hObj 描述:編輯字段的句柄 MaxLen 字符數(shù)EDIT_SetVlaue()原型void EDIT_SetVlaue(EDIT_Handle hObj,I32 Value);參數(shù):hObj 描述:編輯字段的句柄 Value 新值四、搭建emWin的Windows仿真環(huán)境4.1 仿真版本emWin文件介紹emWin 的 windows 仿真版本是免費的,大家可以直接在 Segger 官網(wǎng)下載,下載鏈接:下載得到壓縮包的文件名為:SeggerEval_

17、WIN32_MSVC_MinGW_GUI_V522.zip,它是 emWin 的 5.22 版本,解壓該文件,其文件內容說明如下圖示:emWin 仿真版本的工程在 windows 上是使用Microsoft visual studio 2010作為編譯器的。4.2 使用 VS2010 仿真 emWin1) 解壓文件。解壓 emWin 仿真版本壓縮包,注意解壓后的文件路徑不要出現(xiàn)中文,否則在編譯時會出錯的; 2) 打開仿真工程。安裝了 VS2013 集成環(huán)境后,打開 emWin 仿真版本的目錄,找到“SimulationTrial.sln”文件,雙擊打開,打開后會彈出一個對話框提示 VC+版本問

18、題的,直接選擇“是”即可,如下圖示:3) 開始編譯工程。可以直接按快捷鍵“F5”,或者點擊編譯器中的調試按鈕,編譯并運行工程,編譯器會彈出一個提示框,我們在該對話框打上勾,并選擇“是”,讓它以后都不用再提示我們選擇生成新項目。接下來就開始了編譯過程,正常的話都會編譯通過,然后彈出一個 emWin 仿真運行的界面,如下圖示:4.3 emWin仿真工程概覽主要包含了 Application、Config、GUI、Sample、Simulation 目錄及一些外部依賴項文件,如下圖示:4.3.1 Application文件夾Application 文件夾是演示例程的應用文件包。我們編譯的文件都是在這

19、個 Application 目錄下的,它包含了官方演示例程的應用文件,展開 Application 目錄后,可以到這些文件命名都很規(guī)范,基本上每個文件對應一個演示例程的小環(huán)節(jié),如果看到很炫酷的示例,可以到這里找找它的源代碼來學習(演示例程學習難度較大,適合有一定 emWin 基礎的用戶)。文件列表如下圖:4.3.2 Config 文件夾Config 文件夾是顯示配置文件包。在 Config 文件夾下,有 GUIConf.c、GUIConf.h、LCDConfig.c、LCDConfig.h 及 SIMConfig.c 文件,其中前三個文件在實際的嵌入式平臺是非常重要的,它們分別起到了分配存儲空

20、間、裁剪 emWin 功能模塊和 LCD 底層驅動實現(xiàn)。而 LCDConfig.h 文件沒有內容,SIMConfig.c 文件是 VS2013 仿真環(huán)境需求的一些特定設置,在此我們不作探討。關于 GUIConf.c、GUIConf.h 與 LCDConfig.c 文件的內容見代碼清單如下所示:GUIConf.c文件內容/* SEGGER Microcontroller GmbH & Co. KG * Solutions for real time microcontroller applications * * (c) 1996 - 2015 SEGGER Microcontroller Gm

21、bH & Co. KG * * Internet: Support: support * * emWin V5.28 - Graphical user interface for embedded applications *emWin is protected by international copyright laws. Knowledge of thesource code may not be used to write a similar product. This file mayonly be used in accordance with a license and shou

22、ld not be re-distributed in any way. We appreciate your understanding and fairness.-File : GUIConf.cPurpose : Display controller initialization-END-OF-HEADER-*/#include GUI.h/* Defines*/ Define the available number of bytes available for the GUI/#define GUI_NUMBYTES 0x400000/ Define the average bloc

23、k size/#define GUI_BLOCKSIZE 0x80/* Public code*/* GUI_X_Config* Purpose:* Called during the initialization process in order to set up the* available memory for the GUI.*/void GUI_X_Config(void) / / 32 bit aligned memory area / static U32 aMemoryGUI_NUMBYTES / 4; / / Assign memory to emWin / GUI_ALL

24、OC_AssignMemory(aMemory, GUI_NUMBYTES); GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);/* End of file */GUIConf.c 文件主要包含了一個 GUI_X_Config 函數(shù),在這個函數(shù)中向系統(tǒng)申請了一個大 小 為 4MB(0x400000) 的 靜 態(tài) 空 間 aMemory , 接 著 調 用 emWin 的 庫 函GUI_ALLOC_AssignMemory 把 這 個 空 間 分 配 給 emWin , 并 使 用 庫 函 數(shù)GUI_ALLOC_SetAvBlockSize 設置存儲塊的平均大小。

25、所以 emWin 的庫函數(shù)使用的存儲空間都是 aMemory 中分配的。在嵌入式平臺上,我們需要根據(jù)其限制控制分配給 emWin 庫的 aMemory 大小,修改宏 GUI_NUMBYTES 即可。LCDConfig.c文件內容/* SEGGER Microcontroller GmbH & Co. KG * Solutions for real time microcontroller applications * * (c) 1996 - 2015 SEGGER Microcontroller GmbH & Co. KG * * Internet: Support: support * *

26、 emWin V5.28 - Graphical user interface for embedded applications *emWin is protected by international copyright laws. Knowledge of thesource code may not be used to write a similar product. This file mayonly be used in accordance with a license and should not be re-distributed in any way. We apprec

27、iate your understanding and fairness.-File : LCDConf.cPurpose : Display controller configuration (single layer)-END-OF-HEADER-*/#include GUI.h/* Layer configuration (to be modified)*/ Physical display size/#define XSIZE_PHYS 800#define YSIZE_PHYS 480#define VYSIZE_PHYS (YSIZE_PHYS 1)/ Color conversi

28、on/#define COLOR_CONVERSION GUICC_888/ Display driver/#define DISPLAY_DRIVER GUIDRV_WIN32/* Configuration checking*/#ifndef VXSIZE_PHYS #define VXSIZE_PHYS XSIZE_PHYS#endif#ifndef VYSIZE_PHYS #define VYSIZE_PHYS YSIZE_PHYS#endif#ifndef VRAM_ADDR #define VRAM_ADDR 0#endif#ifndef XSIZE_PHYS #error Phy

29、sical X size of display is not defined!#endif#ifndef YSIZE_PHYS #error Physical Y size of display is not defined!#endif#ifndef COLOR_CONVERSION #error Color conversion not defined!#endif#ifndef DISPLAY_DRIVER #error No display driver defined!#endif/* Public code*/* LCD_X_Config* Purpose:* Called dur

30、ing the initialization process in order to set up the* display driver configuration.* */void LCD_X_Config(void) / / Set display driver and color conversion for 1st layer / GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0); / / Display driver configuration / LCD_SetSizeEx (0, XSIZE_PHY

31、S, YSIZE_PHYS); LCD_SetVSizeEx (0, VXSIZE_PHYS, VYSIZE_PHYS); LCD_SetVRAMAddrEx(0, (void *)VRAM_ADDR); / / Set user palette data (only required if no fixed palette is used) / #if defined(PALETTE) LCD_SetLUTEx(0, PALETTE); #endif/* LCD_X_DisplayDriver* Purpose:* This function is called by the display

32、 driver for several purposes.* To support the according task the routine needs to be adapted to* the display controller. Please note that the commands marked with* optional are not cogently required and should only be adapted if * the display controller supports these features.* Parameter:* LayerInd

33、ex - Index of layer to be configured* Cmd - Please refer to the details in the switch statement below* pData - Pointer to a LCD_X_DATA structure* Return Value:* -1 - Error* -1 - Command not handled* 0 - Ok*/int LCD_X_DisplayDriver(unsigned LayerIndex, unsigned Cmd, void * pData) int r; switch (Cmd)

34、/ / Required / case LCD_X_INITCONTROLLER: / / Called during the initialization process in order to set up the / display controller and put it into operation. If the display / controller is not initialized by any external routine this needs / to be adapted by the customer. / / . return 0; case LCD_X_

35、SETVRAMADDR: / / Required for setting the address of the video RAM for drivers / with memory mapped video RAM which is passed in the pVRAM element of p / LCD_X_SETVRAMADDR_INFO * p; p = (LCD_X_SETVRAMADDR_INFO *)pData; /. return 0; case LCD_X_SETORG: / / Required for setting the display origin which

36、 is passed in the xPos and yPos element of p / LCD_X_SETORG_INFO * p; p = (LCD_X_SETORG_INFO *)pData; /. return 0; case LCD_X_SETLUTENTRY: / / Required for setting a lookup table entry which is passed in the Pos and Color element of p / LCD_X_SETLUTENTRY_INFO * p; p = (LCD_X_SETLUTENTRY_INFO *)pData

37、; /. return 0; case LCD_X_ON: / / Required if the display controller should support switching on and off / return 0; case LCD_X_OFF: / / Required if the display controller should support switching on and off / / . return 0; default: r = -1; return r;/* End of file */LCDConfig.c 文 件 包 含 了 LCD_X_Confi

38、g 和 LCD_X_DisplayDriver 兩 個 函 數(shù) LCD_X_Config 函數(shù)調用 emWin 庫函數(shù) GUI_DEVICE_CreateAndLink 配置了顯示驅動及顏色 轉 換 格 式 ,該 函 數(shù) 的輸 入 參 數(shù) 是根 據(jù) Windows 系 統(tǒng) 的 環(huán) 境 配 置的 。接 著調 用LCD_SetSizeEx 配置了顯示尺寸,輸入?yún)?shù)是本文件中的兩個宏:#define XSIZE_PHYS 320 及 #define YSIZE_PHYS 240,也就是說把屏幕配置成了 320x240 分辨率大小,我們可以通過修改這兩個宏的數(shù)值改變仿真時的屏幕尺寸。 LCD_X_Di

39、splayDriver 是提供給 emWin 庫的驅動回調函數(shù),該函數(shù)根據(jù)輸入的參數(shù)Cmd 區(qū)分要進行的操作,如 LCD_X_INITCONTROLLER 表示初始化液晶控制器,LCD_X_ON 表示啟動液晶屏,LCD_X_OFF 表示關閉液晶屏,這些命令是由用戶根據(jù)需要選擇性實現(xiàn)的。 在使用 emWin 的應用函數(shù)之前,我們需要調用其庫函數(shù) GUI_Init 初始化 emWin 運行的環(huán)境,而 GUI_Init 函數(shù)會執(zhí)行我們前面提到的 GUI_X_Config、 LCD_X_Config、LCD_X_DisplayDriver 三個函數(shù),從而完成初始化工作。當我們移植 emWin 時,主要

40、的移植工作就是根據(jù)自己的平臺實現(xiàn)這些函數(shù),而 emWin 的上層應用函數(shù)無需修改,也無法修改,因為那些函數(shù)都已經(jīng)編譯進庫里了,不開放源碼。4.3.3 GUI 文件夾GUI 文件夾是 emWin 庫核心文件包。它包含一個 Include 文件夾和一個 Library 文件夾,在 Include 文件夾里的都是 emWin 庫的頭文件,由于 emWin 以庫的形式提供給用戶,所以必須帶有這些頭文件以方便我們使用。Library 目錄下的 GUI.lib 就是 emWin 的庫文件了,它是編譯好的二進制編碼,無法查看源程序。在不同的 CPU 平臺下,需要使用不同版本的庫,使用時要根據(jù)自己的平臺選擇適

41、當?shù)膸煳募?.3.4 Sample 文件夾Sample 文件夾是關于 emWin 應用示例程序包。我們使用仿真的一個重要目的就是學習這個文件夾下的工程代碼。跟 Application 文件夾中的 emWin 演示例程不一樣,Sample提供的都是一個個很小的工程,簡化了學習的難度,而且這里提供的應用示例更加豐富,基本上涵蓋了 emWin 庫提供的所有功能,當在emWin 用戶手冊中看到某些功能不會使用時,可以來這里找找,一般都能找到示例程序。Sample 文件夾下的部分示例程序如下圖示:五、 GUI_Builder5.1 簡介整體用圖片展示:小工具欄該選擇欄包含GUIBuilder所有可用的小工具,只要單擊所需小工具上的選擇欄或者將其拖入編輯器區(qū)域,即可進行添加。對象樹該區(qū)域顯示所有當前加載的對話框及其子小工具,只要單擊相應條目,即可選擇小工具。小工具屬性它顯示每個小工具的屬性,并可以用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論