溫濕度檢測系統(tǒng)_第1頁
溫濕度檢測系統(tǒng)_第2頁
溫濕度檢測系統(tǒng)_第3頁
溫濕度檢測系統(tǒng)_第4頁
溫濕度檢測系統(tǒng)_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

鄭州輕工業(yè)大號

實訓報告實訓名稱: 嵌入式軟件工程實踐姓名: 院(系): 專業(yè)班級: 學號: 指導教師:_實習時間:一、實訓目的(一)實習目的本實訓課程是針對嵌入式軟件專業(yè)學生專門設計的,通過本課程設置的幾個嵌入式綜合項目的系統(tǒng)學習,可以使學生由淺入深的對嵌入式Linux系統(tǒng)進行全面學習,能夠獨立勝任嵌入式Linux應用開發(fā)、系統(tǒng)開發(fā)、驅動開發(fā)等多方面工作,并注重敬業(yè)團隊精神培養(yǎng)。1)增強學生的理論聯(lián)系實際的能力2)通過實訓了解企業(yè)項目開發(fā)流程和學習新技術的方法3)通過實訓項目了解企業(yè)項目開發(fā)過程中文檔的整理方法和問題的分析方法4)通過實訓項目加強學生對基礎課程的運用能力,使其認識到基礎知識的重要性5)通過實訓爭強學生對本專業(yè)和未來工作崗位的理解,端正心態(tài),明確就業(yè)目標6)通過實訓爭強學生的編程技能,培養(yǎng)其良好的編碼風格和編碼習慣(二)方法本實訓課程安排在學校實驗室統(tǒng)一進行實訓,學生上機獨立完成規(guī)定實訓項目。(三)任務要求每位同學獨立完成實訓題目的編程、調試、優(yōu)化與測試,并交付使用。要求強化編程思維、編程能力和代碼優(yōu)化的能力,撰寫《實訓報告》(含:需求分析、總體設計、算法分析及設計中遇到的主要問題和解決方法,設計中尚存的不足與心得體會)。上交完成的所有源程序及相關文件。二、實訓安排時間實訓內容第一凋實現(xiàn)DHT11數(shù)字溫濕度傳感器獲取溫濕度,并且把DHT11數(shù)字溫濕度傳感器獲取溫濕度傳輸?shù)絪tm32開發(fā)板上。第二周實現(xiàn)LinuxUbuntu的環(huán)境搭建,模塊編程A9開發(fā)板,移植NRF24L01無線通1信模塊第三周實現(xiàn)創(chuàng)建阿里云產品和設備,并A9開發(fā)板鏈接阿里云第四周實現(xiàn)Android獲取阿里云端數(shù)據三、實訓報告31項目名稱項目名稱:嵌入式遠程監(jiān)測實訓內容1、嵌入式遠程監(jiān)測與語音控制系統(tǒng)包括智能網關(A9內核,LinuxUbuntu操作系統(tǒng))1個,無線通信節(jié)點1個,包含常用的物聯(lián)網傳感器DHH1,STM32開發(fā)板,A9開發(fā)板。2、系統(tǒng)每個節(jié)點都采用ARMCoitex-M3架構的MCU,可以外接多種傳感器以及控制設備。3、同時把傳感器的數(shù)據以及控制設備的狀態(tài)在2.8寸LCD屏上進行顯示。4、節(jié)點通過NRF24L01無線通信模塊,把節(jié)點的數(shù)據傳輸?shù)骄W關。5、網關再把數(shù)據傳輸?shù)皆品掌?。實訓過程及相關結果一、采用STM32F103ZE為硬件開發(fā)平臺,裸板開發(fā)驅動程序:1)關于STM32開發(fā)板的介紹核心處理器:STM32F103ZET6、主頻:72MHZ、引腳:144、GPIO口的管腳個數(shù)1122)GPIO口GPIO口是可配置的輸入輸出口GPIO口的8種工作模式輸入:上拉輸入下拉輸入浮空輸入模擬輸入輸出:推挽輸出開漏輸出復用推挽輸出復用開漏輸出3)系統(tǒng)滴答定時器框架:參考時鐘系統(tǒng)時鐘Reforoncc參考時鐘系統(tǒng)時鐘Reforoncc配置系統(tǒng)滴答定時器所需配置的寄存器表D.2SysTick控制及狀態(tài)寄存器(地址:OxEoee.Eeie)位段名稱類蟹復位值描述16COUNTFLAGR0如果在上次次取本本存存后,SysTick已經數(shù)到re.則該位為1.如果讀取該位,該位將門動濟等2CLKSOURCER/W00■外部時鐘源(STCLK)1■內核時鐘(FCLK)1TICKINTR/W0l=Sy$Tick例數(shù)到0時產生SysTick異常請求機數(shù)到0時無動作0ENABLER/W0SysTick定時器的使能位表D.3SysTick不裝載數(shù)值寄存器(地址:0xE000_E014)位段名稱類型究位值描述23:0RELOADR/W0當?shù)箶?shù)至零時.將被重裝載的值知4SysTick當前數(shù)值寄存器(地址:0xE000_E018)位段名稱類型復位值描述23:0CURRENTR/Wc0讀取時返回因前例計數(shù)的值,寫它則使之清零,同時還會清除在SysTick控制及狀態(tài)寄存器中的COUNTFLAG標志表D.5SysTick校準數(shù)值密行器(麗:0xE&80_E01C)位段名稱類里復位值描述31NOREFR■1=沒行外郃參考時鐘(STCLK不可用)0■外都參考時鐘可用30SKEWR.1=校準值不是準確的10ms。,校址值是準確的10ms3)點亮一盞LED燈,實現(xiàn)流水燈程序;4)使用PW驅動蜂鳴器程序實現(xiàn)。二、基于stm32節(jié)點板采集溫濕度數(shù)據1、DHT11數(shù)字溫濕度傳感器獲取溫濕度2、把DHT11數(shù)字溫濕度傳感器獲取溫濕度傳輸?shù)絪tm32節(jié)點板上DATA用于微處理器與DHT11之間的通訊和同步,采用單總線數(shù)據格式,一次通訊時間4ms左右,數(shù)據分小數(shù)部分和整數(shù)部分,具體格式在下面說明,當前小數(shù)部分用于以后擴展,現(xiàn)讀出為零.操作流程如下:一次完整的數(shù)據傳輸為40bit,高位先出。數(shù)據格式:8bit濕度整數(shù)數(shù)據+8bit濕度小數(shù)數(shù)據+8bi溫度整數(shù)數(shù)據+8bit溫度小數(shù)數(shù)據+8bit校驗和數(shù)據傳送正確時校驗和數(shù)據等于“8bit濕度整數(shù)數(shù)據+8bit濕度小數(shù)數(shù)據+8bi溫度整數(shù)數(shù)據+8bit溫度小數(shù)數(shù)據”所得結果的末8位。用戶MCU發(fā)送一次開始信號后,DHT11從低功耗模式轉換到高速模式,等待主機開始信號結束后,DHT11發(fā)送響應信號,送出40bit的數(shù)據,并觸發(fā)一次信號采集,用戶可選擇讀取部分數(shù)據.從模式下,DHT11接收到開始信號觸發(fā)一次溫濕度采集,如果沒有接收到主機發(fā)送開始信號,DHT11不會主動進行溫濕度采集.采集數(shù)據后轉換到低速模式。1.通訊過程如下圖所示

\——*DHT響應I愴出—主機發(fā)開\——*DHT響應I愴出—主機發(fā)開I始信號數(shù)據W總線空閑狀態(tài)為高電平,主機把總線拉低等待DHT11響應,主機把總線拉低必須大于18毫秒,保證DHT11能檢測到起始信號。DHT11接收到主機的開始信號后,等待主機開始信號結束,然后發(fā)送80us低電平響應信號.主機發(fā)送開始信號結束后,延時等待20-40us后,讀取DHT11的響應信號,主機發(fā)送開始信號后,可以切換到輸入模式,或者輸出高電平均可,總線由上拉電阻拉氤VCC-GND單族線—*1DHTVCC-GND單族線—*1DHT拉高=-I80us侑號線說明:主機信號DHT主機信號DHT信號圖二總線為低電平,說明DHT11發(fā)送響應信號DHT11發(fā)送響應信號后,再把總線拉高80iis,準備發(fā)送數(shù)據,每一bit數(shù)據都以50iis低電平時隙開始,高電平的長短定了數(shù)據位是0還是1.格式見下面圖示.如果讀取響應信號為高電平,則DHT11沒有響應,請檢查線路是否連接正常.當最后一bit數(shù)據傳送完畢后,DHTH拉低總線50us,隨后總線由上拉電阻拉高進入空閑狀態(tài)。數(shù)字0信號表示方法如下圖所示26us-28us表示,0, L信號線說明:26us-28us表示,0, L信號線說明:主機信號DHT信號數(shù)字1信號表示方法.如下圖所示VCCGNDVCCGND單總線信號線說明:主機信號DHT主機信號DHT信號把DHT11數(shù)字溫濕度傳感器獲取溫濕度傳輸?shù)絪tm32節(jié)點板上代碼實現(xiàn)#include''mauih"#defiiieDHT_DATA(x)x9(GPIOG->ODR|=(0x01?15)):(GPIOG->ODR&=~(0x01?15))#defiiieDHT_DATA_STATA(!!(GPIOG->IDR&(0x01?15)))imsigiiedchaidlit_data[5]={0};imsigiiedchaitemp_value=20;voidDHT_OUT_MODE(void)GPIOG->CRH&=~(OxFUL<<4*7?/清零GPIOG->CRH|=(0x03?28);//推挽輸出)voidDHT_IN_MODE(void)(GPIOG->CRH&=-(OxFu1?4*7);//tW^GPIOG->CRH|=(0x01?30);//浮空輸入)#defhieTIME_OUT_MAXOxffifchaicoiifig_dlit11(void)(chai1=0,j=0;umt32ttuneout=TIMEOUTMAX;RCC->APB2ENR|=(0x01 G端口的時鐘DHT_OUT_MODE0;〃推挽輸出DHT_DATA⑴;〃拉高DHT_DATA(0);〃拉低Delay_ms(20);〃延時20nisDHT_DATA⑴;〃拉高Delay_us(30);//延時30usDHT_IN_MODE0;//浮空輸入wlule(DHT_DATA_STAIA)tuneout--;雙!timeout)return1;Delay_us(l);}〃等待拉低tuneout=TIME_OUT_MAX;wliiie(!DHT_DATA_STArA)(tuneout--;if(!tuneout)retiim1;Delay_us(l);}〃等待拉高(fbi(j=O;j<8;j-H-)(tuneout=TIMEOUTMAX;while(DHT_DAIA_STATA)//等待拉低(timeout-;if(!timeout)return1;Delay_us(l);)tuneout=TIMEOUTMAX;while(!DHT_DAIA_STArA)〃等待拉高timeout-;if(!tmieout)return1;Delay_us(l);)Dek%us(40);if(DHT_DArA_STATA)(〃代表數(shù)據1dlit_data[i]?=l;dlit_data[i]+=l;}else(〃代表數(shù)據0dlit_data[i]?=l;))}if(clht_data[4]==(dlit_data[0]+dlit_data[l]+dlit_data[2]+dlit_data[3]))(pnnrf("數(shù)據正確\r\n”);pnnrf("溫度=%而\1】”,4丘_(1@回2]);pnntf(“濕度=%很1\1』,4丘_(k1@[0]);}elsepnntff數(shù)據錯誤\r\n)}ieturn0;)三、把傳感器的數(shù)據以及控制設備的狀態(tài)在2.8寸LCD屏上進行顯示通過漢字取模和圖片取模軟件,把所需要使用漢字和圖片轉換代碼可以調用,并把DHT11數(shù)字溫濕度傳感器獲取溫濕度數(shù)據傳輸?shù)絃CD屏上。DHT11數(shù)字溫濕度傳感器驅動程序:if(dhtll_nuitmie[O]>dlitll_nuitune[l])(dlitll_nintnne[0]=0;if(config_dlitllO)Diaw_Text_8_l6_Sti(100,150^ED.BLUE,(unsignedchar*)nDHTllReadDataEnorH);else(sprmtf(m-Ctx_cIata_bufJrTem=%2d,Hum=%2d,\cIlit_data[2],dlit_data[0]);mf_tx_data_buf[15]=NO;Diaw_Text_8_l6_Str(100,150^ED.BLUE,(unsignedchai*)mf_tx_data_buf);NRF24L0l_TxPacket((u8*)mf_tx_data_buf);四、通過NRF24L01無線通信模塊將數(shù)據傳輸?shù)紸9開發(fā)板上。1、環(huán)境搭建(1)安裝交叉編譯器(2)uboot燒寫啟動(3)內核的制作、編譯,燒寫(4)文件系統(tǒng)的搭建及securtCRT軟件的應用(5)學習linux系統(tǒng)的基本操作,vim編輯器使用,shell命令使用,熟練使用VI編輯命令和linux常用操作命令。(6)學習linux系統(tǒng)下驅動開發(fā)的基礎知識,掛載卸載驅動模塊,掌握字符設備驅動程序設計方法。2、NRF24L01無線通信模塊是使用SPI總線協(xié)議,。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線,節(jié)約了芯片的管腳,同時為PCB的布局上節(jié)省空間,提供方便,正是出于這種簡單易用的特性,現(xiàn)在越來越多的芯片集成了這種通信協(xié)議。SPI是一個環(huán)形總線結構,由ss(cs)>sck>sdi、sdo構成,其時序其實很簡單,主要是在sck的控制下,兩個雙向移位寄存器進行數(shù)據交換。1]上升沿發(fā)送、下降沿接收、高位先發(fā)送。上升沿到來的時候,sdo上的電平將被發(fā)送到從設備的寄存器中。下降沿到來的時候,sdi上的電平將被接收到主設備的寄存器中。啟動SPI總線協(xié)議程序:voidSPI2_Init(void)(GPIO_InitTypeDefGPIO_InitStructure;SPI_InitTypeDefSPI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPI0B,ENABLE);〃P0RTB時鐘使能RCC_APBlPeriphClockCmd(RCC_APBlPeriph_SPI2,ENABLE);〃SPI2時鐘使能GPIOInitStructure.GPIOPin=GPIOPin13|GPIOPin14|GPIOPin15;GPIO_InitStructure.GPIOJfode=GPIO_Mode_AF_PP;//PB13/14/15復用推挽輸出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50\IHz;GPI0_Init(GPI0B,&GPIO_InitStructure),/初始化GPIOBGPIOSetBits(GPIOB,GPIOPin131GPIOPin141GPIOPin15);//PB13/14/15上拉SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;〃設置SPI單向或者雙向的數(shù)據模式:SPI設置為雙線雙向全雙工SPI_InitStructure.SPI_Mode=SPI_Mode_Master;〃設置SPI工作模式:設置為主SPISPI_InitStructure.SPI_DataSize=SPI_DataSize_8b;〃設置SPI的數(shù)據大小:SPI發(fā)送接收8位幀結構SPIJnitStructure.SPI_CPOL=SPI_CPOL_High; 〃串行同步時鐘的空閑狀態(tài)為高電平SPIJnitStructure.SPI_CPHA=SPI_CPHA_2Edge;〃串行同步時鐘的第二個跳變沿(上

升或下降)數(shù)據被采樣SPIJnitStructure.SPI_NSS=SPI.NSS.Soft;//NSS信號由硬件(NSS管腳)還是軟件(使用SSI位)管理:內部NSS信號有SSI位控制SPIInitStructure.SPIBaudRatePrescaler=SPIBaudRatePresca1er256; //定義波特率預分頻的值:波特率預分頻值為256SPIJnitStructure.SPI_FirstBit=SPI_FirstBit_MSB;〃指定數(shù)據傳輸從MSB位還是LSB位開始:數(shù)據傳輸從MSB位開始SPIJnitStructure.SPI_CRCPolynomial=7;〃CRC值計算的多項式SPIJnit(SPI2,&SPI_InitStructure);〃根據SPI_InitStruct中指定的參數(shù)初始化外設SPIx寄存器SPI_Cmd(SPI2,ENABLE);〃使能SPI外設SPI2_ReadWriteByte(Oxff);〃啟動傳輸)3、移植NRF24L01無線通信模塊驅動4、使用securtCRT軟件的查詢的數(shù)據J篇強吁誠碼=-[ 97.080000]Datareceived1[ 97.0SOOOO]rece^ved:tnp=2S,t叫>=28,hum=3499.0900001Datareceded: 99.090000]received:trp228.hun=35tnp=28,hum=35'[設賽嬲濡總鬻;4235I,tffp=2S.hum-55i£歌撰翠襦giLi翳接魏湍的熱m|亡”?28,i£歌撰翠襦gi五、把A9開發(fā)板上的數(shù)據傳輸?shù)皆品掌?、在阿里云創(chuàng)建產品和設備及c-sdk的使用1)創(chuàng)建產品:2)創(chuàng)建設備:?? 19 ?■X8Tt3W?63 0 3 ⑦QS**?N 8電曰FB -X*比加scMfRAH2 *c^E/?1?電曰FB -X*比加scMfRAH2 *c^E/?1?tnM- ▼JPtiMI v(tviVal開裔6■,8“,7KS2G$?mMS和四??U?¥?<“C.ein以F*七七:.門三/ner**<?FmtAMKCHTMTOC\o"1-5"\h\z■extMM atY O** *禽9”8如《4 Sk 不就第0I |。)inCOJD31fAM Wli-2、建立設備與平臺的連接1)登錄Linux虛擬機。2)獲取LinkKitSDK。3)使用unzip命令解壓壓縮包。hqf@hqf-vm:~/Linux$cdc-sdk-v3.0.1/hqf@hqf-vm:~/Linux/c-sdk-v3.0.1$Iscerts external_libsLICENSE model.jsonsrconfig.batextract.bat makefile output toolscoreextract?shmake?settingsREADME?mdwrappers4)設備身份信息將通過HAL調用返回給SDK。因此,需要將wiappeis/os/ubunmHAL_OS_hiiux.c中的設備證書信息修改為創(chuàng)建產品與設備步驟中創(chuàng)建的設備證書,完成后保存退出。Ubuntu系統(tǒng)上傳的數(shù)據格式>{> "CurrentTemperature":20,> ,,CurrentHumidity,1:25■此時阿里云顯示設備處于在線狀態(tài)Dev以!Name由注心彌諛總所.履產品節(jié)點類空狀獲向田?忑,IB后上線時間操作0HT11兩關?在愛一201職306150139的除himitureSmanPhcne?篇收2019/09,232158:34最后修改Makefile使用交叉編譯工具鏈編譯程序掛載到開發(fā)板運行即可,前提開發(fā)板需要能鏈接網絡建立規(guī)則引擎規(guī)則引掌?e及與產昆外a規(guī)則引掌?e及與產昆外a付-6&R名率 KMVK 現(xiàn)miorRj?Cfa 45ONIOg* J5ON依況出4卷不引門eOMR,trtr中.1?■■2?1BXn(2ftO<11X??n*103、通過mqtt協(xié)議把A9開發(fā)板上的數(shù)據傳輸?shù)皆品掌?、數(shù)據上傳到阿里云端并在云端物理模型顯示數(shù)據bism5■44o*wm?C9yfygC-DHSebism5■44o*wm?C9yfygC-DHSe六、并使用AndioidAPP獲取云端數(shù)據1、JA\么環(huán)境搭建安裝JDK并添加JDK環(huán)境變量C:V?ython2AG\Fython27\SoiptsG:\Pf。9ramFJciSEspreiUftESP-DFToob5Konf-tdfG'Ho^theHe/EwrussiRESPRfTcok^ook'.binCAWindoA5\sy5tem32CAWindOASCAWWSoa《卜戶tanJAWbomCAWW>dOM\Syitem3Z\Wrdow5Pgu1Sb±irw1.6eiWnaoAs'.SyiteniSZvapenSSHYCJQogwT*期—>^6ANVCIACorptxM;on\的火KomrronC徐叼[所Fij'NSOlACorptxetkMAN/ClANvDUSRCAFTOQMFiMIggSQL562130\T<X>KUt*w>\CARogrmFil?\84nf1d%SyitemRoot%'iSy4tOT32,,戶tmRoot/%Sy?tc?nfto5%,Sy5lE02Wbc*n,SYSTEMROOTWS件mmwbdUQS”嶺SIWg,m%SVSTEMROOT*\Sy?fifnl2>Pp?n&SH\DAP/oyam□"儀86^6A17M^nxG4\Mn命令行測試JA\公環(huán)境是否搭建成功2、創(chuàng)建Android工程框架APPAiidioid開發(fā)環(huán)境搭建下載aiidioid-studio-ide-191.5791312-wuidows安裝包安裝轉后新建工程口CreateMewProject XConfigureyourprojectI0TPackagenamecomexampIe.iotSavelocationD:\Deiktop\IOTDevice\IOTLanguageJavaEmptyActivityMinimumAPIlevelAPI24:Android7.0(Nougat)OYourappvdllrunonapproximately37.1%ofdevices.CreatesanewemptyactivityHelpmechooseCreatesanewemptyactivityThisprqje(twillsupportinstantdppsPreviousNextCancelFinish£1?idit^t<w?W693cCodeAmlyg BaldRunJoelsVCS湖ndewUctpMxApp appiw<hin?4M> j*“hicomf anv1Mppq ▼actrt'ityjrw*n.?mJ PreviousNextCancelFinish£1?idit^t<w?W693cCodeAmlyg BaldRunJoelsVCS湖ndewUctpMxApp appiw<hin?4M> j*“hicomf anv1Mppq ▼actrt'ityjrw*n.?mJ <M4oActrailyj<Mocolo<vwrtlM 一■""'xeIt?s2VV3V£QCHU號lreJC3、yrvnds7.!OXJ2★Q-?Q—I??卬▼?川▼tl<om.?wT4?W.nT^wpf?M?^ActvityCMyUyout?I<OE.e?<tmp'?— fl?*G9提袁八pts9A18M51213IS?T161718192922222324252628293GArdkoidM^nHvttxmlInportinportpublicandroldx.annotatlor.Nullable;androidx.appcorpat.app.AppCo<rpatActivity;classMyLayoutextendsAppCowpatActlvity{^JOverrideprotectedvoidonCreate(BundlesavedlnstanceState)<super.onCrQato(4avQdInstancQStato);?etContentVlew(R.layout.ttyiayovt);Threadtirecrs-neThread。(publicvoidrun()try($l"p(millis.3600);}catch(InterruptedExceptlone)<c.printStackTraee();}finally{Xnttntoperative■nenXnt?nt(on"android.lnt?nt.actloo.MainActlvity");startActivity(operative);tiners.start();■Grwc. ,? I; . ,? I; ??> 1 1WK OvtccmrPpjectGodlemodelveB8-54,1,MXvcomSJKNO/NgmiNegc)OEventL09eUTF-e,、新建一個界面WdpHyA??opp*?w<:mmrmI?r?*<“,”“,,2ce:ccAoruml 'U,EO>rrf■?r^?WdpHyA??opp*?w<:mmrmI?r?*<“,”“,,2ce:ccAoruml 'U,EO>rrf■?r^?F?1,8??▼MHw▼tS<4<Af*ancArA**f<?WinviMvMcnc27K與S,"8T<*^Vhunit-i<eeu??ncieE.

溫馨提示

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

評論

0/150

提交評論