基于物联网的基质栽培系统的设计_第1页
基于物联网的基质栽培系统的设计_第2页
基于物联网的基质栽培系统的设计_第3页
基于物联网的基质栽培系统的设计_第4页
基于物联网的基质栽培系统的设计_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 近几年,随着人民生活水平的不断提高,对蔬菜需求发生了新变化。对反季节、超时令菜的需求量持续增加,市场需求由大众菜转向多样化和特殊需求,消费水平由大众化转向多元化,而对蔬菜品质的要求从一般转向质量,营养无污染系统采用传统物联网的三层架构来对其进行实现,感知层采用STM32系列单片机,配合温湿度传感器,光照传感器,二氧化碳传感器,通过WIFI传输数据到云,进行数据存储,Web端可直观查询数据可控制管理监控蔬菜生长的小环境,如果环境不是当前最适宜参数将进行调节,控制小范围内植物生长环境最适宜,基质栽培系统就如何对基质环境实施全方位实时监测、实时传输,根据生产要求及时调整环境参数。 该系统采用先进的物联网技术进行科学检测,科学分析和有效控制无土温室的生长环境,使其具有最合适的生长环境,准确及时地掌握环境数据,科学控制蔬菜的生长过程,实现以增产,提高质量,调节增长周期,提高经济效益为目的,进而实现集约化,高产,优质,高效,生态安全的农业生产目标。关键词:物联网,基质栽培,STM32,WIFI

AbstractInrecentyears,withthecontinuousimprovementofpeople'slivingstandards,thedemandforvegetableshaschanged.Thedemandforvegetablescontinuestoincreaseduetotheoff-seasonandovertime.Themarketdemandchangesfrompopularvegetablestodiversificationandspecialization.Theconsumptionlevelchangesfrompopularitytodiversificationandhigh-gradequalityrequirementsfromgeneralizationtoquality,nutritionandpollution-free.SubstratecultivationbasedontheInternetofthingsisamodernagriculturaltechnologywithhightechnologycontentandhighinput,aswellashighoutputandhighbenefit.Thesystemusesthetraditionalthree-tierarchitectureoftheInternetofthingstorealizeit.ThesensinglayerusesSTM32seriessingle-chipmicrocomputer,togetherwithtemperatureandhumiditysensors,lightsensors,carbondioxidesensors,totransmitdatatothecloudthroughWiFifordatastorage.Thewebendcandirectlyquerythedata,controlandmonitorthesmallenvironmentofvegetablegrowth.Iftheenvironmentisnotthemostappropriateparameteratpresent,itwillThetraditionalapplicationofartificialcontrol,adjustmentanddetectionofgreenhouseenvironmentanditsnutrientsolutionisinefficientandpronetoerrorsanddeviations.Thesubstratecultivationsystemcanmonitorandtransmitthesubstrateenvironmentinrealtime,andadjusttheenvironmentalparametersaccordingtotheproductionrequirements.ThesystemusestheadvancedInternetofthingstechnologytotest,analyzeandcontrolthegrowthenvironmentofsoillessgreenhouse,sothatithasthemostsuitablegrowthenvironment,accuratelyandtimelygrasptheenvironmentaldata,scientificallycontrolthegrowthprocessofvegetables,achievethepurposeofincreasingproduction,improvingquality,adjustinggrowthcycleandimprovingeconomicbenefits,andthenrealizeagriculturalproductionThegoalofintensiveproduction,highyield,highquality,highefficiency,ecologyandsafety. Keywords:internetofthings,substrateculture,wifi,stm32目录第1章绪论 [15],从而快速构建串口-WiFi数据传输方案,方便自己的设备使用互联网传输数据。3.3系统应用层的详细设计 对于引用层设计考虑了两种方案,首先是手机app端,其次是web服务端,考虑到手机app端只适用于手机具有局限性,所以舍弃该方案,选择web程序设计 Web端引用设计采用了现在主流的微服务架构来进行代码编写,技术选型舍弃了比较老的Servlet+JSP技术和单体Spring+SpringMCV+Mybatis选择微服务架构,前端采用现阶段比较新颖的技术Vue和bootstrap进行美化和逻辑处理,在图表方面选择开源JS框架Echars对图表进行一个美化和动态折线图展示。 1.数据库概念结构设计 根据设计需求设计出对应的存储关系,对数据结构和关系的设计,构造最有的数据间关系,并建立联系使其能高效的存储和利用数据,满足设计的需求对具体的环境和对应的系统能够达到一个最优设计。在本系统中数据关系分别是用户和数据,数据及节点之间的关系。如图所示3-21所示。图3-21数据库关系图 关系中分为用户,数据,节点,控制,对应用户拥有管理数据和节点的权限,节点采集数据,用户可根据数据的变化来对控制变量进行调节,对控制类型和状态进行修改。控制类型分为,通风状态,光照状态。分别为四张数据表,用户表,数据表,终端节点表,控制表。 2.数据库逻辑结构设计(1)用户信息表表3-5为用户信息表,由id、username、password,email,gender,name,createdate七个字段组成信息表结构,每个字段代表不同的管理者的基本信息用户信息表如表3-5所示。表3-5用户信息表列名数据类型约束说明IdintNotNULL,Primary用户IDusernameVarchar(20)NotNULL用户账号passwordVarchar(20)NotNULL用户密码emailVarchar(20)NotNULL邮箱genderVarchar(20)NotNULL性别nameVarchar(20)NotNULL姓名createdateDateNotNULL创建时间(2)数据信息表 数据信息表由,ID,humidity,light,co2,tempature,createdate,node_id七个字段组成,是描述采集的数据信息表,描述采集的数据和数据节点的保存信息。数据表如表3-6所示。表3-6数据信息表列名数据类型约束说明IdintNotNULL,Primary数据IDhumidityVarchar(20)NotNULL温度lightVarchar(20)NotNULL光照强度co2Varchar(20)NotNULL二氧化碳浓度tempatureVarchar(20)NotNULL湿度createdateDateNotNULL创建时间node_idintNotNULL节点id(3).节点信息表 节点信息表主要用于存储节点的状态信息启用状态,包括四个数据,ID,status,name,addr描述节点的id,节点启用状态,节点名字,节点地址,节点信息表如表3-7所示。表3-7节点信息表列名数据类型约束说明IdintNotNULL,Primary数据IDstatusVarchar(20)NotNULL节点状态nameVarchar(20)NotNULL节点名称addrVarchar(20)NotNULL节点地址(4).控制信息表 控制信息表描述的是需要反馈控制时写入的数据,包括id,status,type,time四个数据,主要是描述控制的类型和控制的状态,控制时间。控制信息表如表3-9所示。表3-9控制信息表列名数据类型约束说明IdintNotNULL,Primary数据IDstatusVarchar(20)NotNULL控制状态typeVarchar(20)NotNULL调节类型名称timeVarchar(20)NotNULL时间1.用户登录模块设计(1)UI设计 UI设计中登陆模块有两个登陆参数用户名,和用户密码两个输入框和登陆按钮和在首页的系统名称,采用了BootSrtap框架设计对页面效果和动画进行优化使其的过度效果和点击效果更流畅,用户的体验更加的好。(2)算法流程 用户通过访问系统页面进入到登录页面,这个时候会对未登录的访问进行拦截,防止非法的参数访问数据和静态资源,当存在非法访问的时候对访问进行拦截拦截跳转到登陆页面,正常执行登陆流程时对登陆信息进行验证,验证成功跳转到系统首页,登陆失败或者暴力访问跳转到登陆首页。中间存在拦截器对其进行拦截防止非法访问带来的安全性问题。流程如图2-22所示。 图3-22登录流程图(3)应用接口当用户访问系统是会跳转到系统的登录页面,登录页面根据用户传入的参数根据用户账号,和密码进行安全性验证,传入用户参数后前端页面发送ajax将数据访问到后台的web端接口,接口对参数进行校验校验成功查询访问数据库比对账号密码,比对成功对用户跳转到系统首页并保存用户信息保持登录状态,当用户退出时退出登录状态,当用户未登录直接访问后台资源时拦截器会对其进行用户状态拦截,未登录返回登录页面。不允许访问后台资源。登录应用接口如表3-10所示。 表3-10登录接口表名称LoginController说明本接口login输入用户名:username用户密码:password保存session:session前端提示参数map:map输出失败:Msg:”提示用户错误类型成功:跳转系统首页2.注册模块 (1)UI设计注册模块中UI设计主要包括注册人的账号信息和密码信息,确认密码信息,提供三个个输入框和提交按钮对数据账号注册UI显示采用盒模型和Bootstrap技术美化页面UI。UI如图2-23所示。图3-23注册UI

(2)算法流程用户访问系统,系统提供登录界面,若用户没有账号则可选择注册页面,用户提供注册信息,提交,在提交前对数据进行校验验证账号是否存在,和两次输入密码是否一致,如果校验不通过则不允许注册,校验通过注册成功跳转登录界面。注册流程如图3-24所示。图3-24注册流程图

(3)应用接口 数据提交后到后台注册接口,注册接口接收参数有账号,密码对数据写入到库。注册应用接口数据表如表3-11所示。表3-11后台注册接口表名称UserController说明本接口Register输入账号:userName密码:passwordMap:map类型数据用于返回错误信息输出Map:注册信息状态跳转登录页面修改用户信息模块 用户可以维护自己的信息,包括密码,邮箱,两个数据,账号信息不能变更,用户需要修改信息是只需要点击页面上方个人登录信息状态栏即可跳转查询自己的信息,在信息栏可编辑修改自己的密码数据,和维护自己个人信息对个人信息的修改和添加。修改用户信息流程如图3-25。 图3-25修改用户信息流程图当用户点击更改密码时调用更改接口,接口参数接收账号和原始密码信息,需要更改密码信息。密码修改接口表如表3-12所示。表3-12密码修改接口表名称UserController说明updatePass。输入账号信息:username原始密码:userOldPass新密码:userNowPassMap:map数据返回修改状态信息输出Map:数据修改返回状态当用户点击编辑自己的信息时跳转页面提供维护信息用户,年龄,性别,邮箱,所属部门,三个参数。用户信息编辑表接口表如表3-13所示。表3-13用户信息编辑接口表名称UserController说明userInfoEdit。输入性别:gender年龄:age邮箱:eMail部门:group输出Map:数据修改返回状态历史数据模块UI设计历史数据模块采用折线图来进行展示,页面采用Echars折线图对数据进行展示,分为两个折线图,其中温度湿度,占用一个折线图,横坐标采用时间,纵坐标,采用数值,数据带上自己的参数符号。历史数据UI如图3-26,3-27所示。图3-26温湿度历史数据图 图3-27光强Co2历史数据图改改 页面采用ajax方式进行数据异步刷新,无需对页面一直刷新,即可获得数据提高用户的体验和数据的交互的快捷性(2).算法流程(业务流程) 用户访问历史数据页面,Vue初始化发送ajax,后端接口接收请求,查询历史数据,对数据进行封装,返回JSON,前端接收到JSON串对JSON进行解析,装配到折线图数据列表,Vue动态绑定值,实时展示更新的数据。历史数据流程如图3-28所示。图3-28历史数据流程图(3)应用接口前端ajax访问历史数据接口,接口查询历史参数,并对查询数据进行返回JSON,在查询过程中,会先访问缓存,如果缓存中不存在数据则查询数据库中存储的值。历史数据应用接口表如表3-14所示。表3-14历史数据接口表名称DataController说明本接口history。输入无参输出查询到的历史数据JSON5.实时数据模块(1)UI设计实时数据模块展示当前采集的数据值,在页面每隔三秒进行一次数据采集,页面UI采用bootStrap中的图文方式显示数据可以让用户更直观的感受页面数据的刷新和展示,对当前数据能够直观的了解。在图文下方添加控制按钮可控制按钮使电机工作开启通风,遮光。如图3-29所示。图3-29实时数据图(2).算法流程 页面交互时用户点击查询实时数据,页面跳转发送AJAX异步刷新数据,没隔三秒对实时数据进行一次请求,刷新当前采集到的最新数据进行展示。如图3-30所示图3-30历史数据算法流程图(3)应用接口。前端发送AJAX访问数据,访问实时数据接口,每隔三秒发送一次AJAX刷新当前数据并展示在应用端。实时数据接口如表3-15所示。表3-15实时数据接口名称DataController说明本接口realDate。输入无参输出查询到的历史数据JSON6.节点查询管理模块(1)UI设计 节点管理UI设计为管理节点表格信息,为了方便用户对当前节点信息的查询和当前节点工作状态的查询,和对当前节点工作状态进行调整关闭或者启用。节点管理如图3-31所示。图3-31节点管理图算法流程用户点击到节点管理模块时,会对当前拥有的节点进行一个查询,查询后的节点对用户进行展示,用户可以禁用当前节点和启用当前节点当用户关闭节点状态时,数据将不写入到数据库,当用户启用节点时,数据继续进行数据先写入。流程如图3-32所示。图3-32节点流程图 用户点击访问当前拥有数据管理节点,页面发送请求到访问接口接口进行数据查询返回JSON,页面对数据进行动态绑定添加到表格中。节点应用接口表如表3-16所示。节点接口状态管理表如表3-17所示。表3-16节点管理接口表名称NodeController说明本接口:node。输入无参输出查询到的历史数据JSON表3-17节点状态管理接口名称NodeController说明本接口:nodeStatus。输入节点工作状态值:status0禁用1启用输出map:节点改变状态成功信息

第4章系统测试4.1感知层测试 设计主要通过温湿度传感器、光照强度传感器和二氧化碳传感器对系统数据采集进行测试。4.2传输层测试传输层数据模拟传入云端测试使用软件仿真模拟ESP8266传输数据的场景通过Json格式进行数据传输,给定onenet设备唯一id和key配置连接onenet后对数据进行配置传输对测试状态如图3-33,图3-34所示。图3-33云平台连接仿真图3-34上传模拟数据仿真4.3应用层测试应用层数据测试主要是测试数据是否能够shua新和展示数据,对实时数据,历史数据,节点管理进行数据测试。对节点功能数据的测试如图3-35,图3-36,图3-37,图3-38所示图3-35实时数据图图3-36温湿度历史数据图图3-37光照Co2历史数据图图3-38节点管理图结论 基于物联网的基质栽培系统的设计,感知层通过STM32单片机,温湿度传感器DHT11,光照传感器GY-30,二氧化碳传感器MH-Z14,几个传感器来进行对温室内的环境监测,通过监测数据实时展示在OLED屏和上传到云端,云端通过web程序对数据进行管理和查看,对异常环境参数可在web端进行参数回控,完成了物联网的闭合状态, 在功能实现中可在web端通过登陆后对环境参数进行一个直观的了解选择web端优势就在于在多个平台可复用一套系统不需要针对不同的平台进行各项研发,用户登陆可管理历史数据,实时数据,终端节点启用状态,和当前用户的查询。 该系统主要的引用场景是城市周边对新鲜瓜果蔬菜的栽培控制,主要用于对错季蔬菜和安全可溯源绿色蔬菜的栽培,给与城市居民更优质的蔬菜提供源,减少异地蔬菜运输时需对蔬菜进行防腐,和保险处理,减少药物性的残留,由于源头可控管理易溯源,每一颗蔬菜都可作为数据进行管理。 系统还存在许多的不足,比如节点多了后对数据的处理,在低密度数据下怎么发掘数据的利用价值,对终端假如一个大棚内节点全部失效缺少应急处理等。所以还需要更多的研究和处理。致谢 马上就要毕业了,在黑龙江科技大学的四年里,是人生无经历最美好的四年,是值得珍视的四年,回顾这四年不仅学习到了知识,更多的是知识之外的东西和做人的道理。在说明书完成之际,首先要特别感谢我的指导老师郎春玲老师,感谢她对我的悉心指导。她严谨的科研精神,认真负责的工作作风都给我留下了深刻的印象。指导老师对设计、实施和说明书的写作等进行了细致的指导,指出存在的问题,和解决的思路,都是不厌其烦的指导,给予了我很大的帮助。同样要感谢所有教过我的老师们,感谢你们这几年来对我的教诲与帮助,你们的帮助使我得以顺利完成学业。其次还要感谢学院的领导,为我们提供了良好的学习环境,对比毕业生的关怀呵护,还有就是感谢陪伴了我四年的同学们,在生活中对我的帮助和照顾。最后还要感谢我的家人,多年来对我的支持无论是生活还是精神经济上的支持。最后由衷的感谢百忙之中参加毕业答辩的老师和专家,幸苦您抽出时间来对论文进行审阅。参考文献[1]潘小红,杨志勇.基于物联网技术的温室大棚种植园环境监测系统[J].现代电子技术,2019,42(14):127-130.[2]刘皎,曹荣荣.基于物联网的环境监测系统设计[J].无线互联科技,2019,16(07):36-37.[3]冯晟博.物联网在环境检测和保护中的应用——评《环境监测》[J].环境工程,2019,37(06):192.[4]邱连勇.环境监测工作面临的挑战与物联网技术的应用[J].资源节约与环保,2019(06):39.[5]马丽红,高茜茜,常勇,于蕾.基于物联网技术的果园环境监测系统实现探究[J].农业与技术,2019,39(13):22-23.[6]陈玉兵.基于物联网的农田环境监测及灌溉控制系统研制[D].西安邮电大学,2019.[7]孙培君.基于单片机的温湿度测控系统设计[J].电子技术与软件工程,2016:256-257.[8]何求胜,殷超,刘妍.基于物联网的室内环境监测系统构建与实现[J].产业与科技论坛,2017:36-39.[9]叶倩文,刘阳,郑争兵.基于物联网的室内环境监测系统设计[J].电子制作,2019(Z1):48-50+20[10]南红权.基于WiFi的无线测控系统设计与实现[J].中国外资,2014[11]杭晟,潘洪军,邬甜甜,路良辰.在物联网背景下工业车间环境监测系统设计[J].管理观察,2019(05):37-39.[12]伊文斌,周贤娟,鄢化彪,等.uIPTCP/IP协议分析及其在嵌入式系统中的应用[J].计算机技术与发展,2007,17(9):240-243.[13]张慧颖.基于物联网的温室大棚智能监测系统设计[J].湖北农业科学,2014:3402-3406.[14]葛辉.无线传感器网络中的可靠数据传输方法研究[D].天津理工大学,2019.[15]郑晓月.物联网技术在环境监测中的应用[J].信息记录材料,2019,20(01):90-91.附录附录1//温湿度DHT11的核心代码unsignedcharDHT11_ReadTempAndHumi(void){ unsignedchari=0,check._value=0.count=0; EA=0; dht11=0;拉低数据线大于18ms发送开始信号 Delay__1ms(20);/需大于18毫秒 dht11=1;释放数据线.用于检测低电平的应答信号 /延时20-40us,等待一段时间后检测应答信号.应答信号是从机拉低数据线80us DHT11__Delay_10us0); DHT11__Delay_10usO; DHT11_Delay_10us0; DHT11_Delay_10us0; if(dht11!=0)检测应答信号.应答信号是低电平 { //没应答信号 EA=1; returnERROR; } else { //有应答信号 while(dht11==0&&count++<NUMBER);//待应答信号结束 if(count>=NUMBER){检测计数器是否超过了设定的范围 dht11=1; EA=1; returnERROR;读数据出错退出函数 } count=0; dht11=1:释放数据线 //应答信号后会有一个80us的高电平,等待高电平结束 while(dht11!=0&&count++<NUMBER); if(count>=NUMBER) { dht11=1; EA=1: returmERROR;退出函数 } for(i=0;i<SIZE:i++) { value_array[i]=DHT11_ReadValueO; if(status==ERROR)调用ReadValue()读数据出错会设定status为ERROR { dht11=1; EA=1: returnERROR: } //读出的最后一一个值是校验值不需加上去 if(i!=SIZE-1) {//读出的五字节数据中的前四字节数据和等于第五字节数据表示成功 check__value+=value_array[]; }//endfor //在没用发生函数调用失败时进行校验 if(check_value=value_array[SIZE-1]) { //将温湿度扩大10倍方便分离出每一位. humi__value=value__array[0]*10: temp_value=value_array[2]*10; dht11=1; EA=1: retum0K;正确的读出dht11输出的数据 } else{ //校验数据出错 EA=1: returnERROR: } }}附录2//GY-30floatread_BH1750(void){ intdis_data;//变量 floattemp1; floattemp2; Single_Write_BH1750(0x01);//发送上电命令(0x01) Single_Write_BH1750(0x10);//发送高分辨率连续测量命令(0x10) delay_ms(180);//等待测量结束, mread();//连续读出数据,存储在BUF中 dis_data=BUF[0]; dis_data=(dis_data<<8)+BUF[1];//2个字节合成数据 temp1=dis_data/1.2;//计算光照度 temp2=10*dis_data/1.2;//把光照度放大10倍,目的是把小数点后一位数据也提取出来 temp2=(int)temp2%10;//求余得到小数点后一位 OLED_ShowString(87,2,".",12);//OLED显示小数点 OLED_ShowNum(94,2,temp2,1,12);//OLED显示小数 returntemp1;//返回整数部分} 附录3//co2//发送读取指令uint16_tCO2TxBuffer[9]={0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};voidCO2_Tx(){ inti;for(i=0;i<9;i++){ USART_ClearFlag(USART2,USART_FLAG_TC); USART_SendData(USART2,CO2TxBuffer[i]); while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);}} 应用层代码如下数据ajaxvarseries1=[];

varseries2=[];

varseries3=[];

varseries4=[];

//varxTime=['20201212','20201213','20201214','20201215','20201216','20201217','20201218'];

varxTime=[];

window.onload=function(){

varvm=newVue({

el:"#app",

methods:{

send:function(){

axios({

method:'get',

url:'/sensorDate/historydate'

}).then(function(res){

for(leti=0;i<res.data.datas.length;i++){

series1[i]=res.data.datas[i].temperature;

series2[i]=res.data.datas[i].humidity;

series3[i]=res.data.datas[i].light;

series4[i]=res.data.datas[i].carbon;

xTime[i]=res.data.datas[i].timesx;

}

})

.catch(function(error){

console.log(error);

});

}

}

});

setInterval(vm.send,1000);//定时器每秒调用send

}

//这里发送一个ajax把数据拿下来就行了

newChart(document.getElementById("linechart"),{

type:'line',

data:{

labels:xTime,

datasets:[{

label:'温度',

backgroundColor:window.chartColors.navy,

borderColor:window.chartColors.navy,

data:series1,

fill:false,

},{

label:'湿度',

fill:false,

backgroundColor:window.chartColors.purple,

borderColor:window.chartColors.purple,

data:series2,

}]

},

options:{

responsive:true,

title:{

display:true,

text:'Chart.jsLineChart'

},

tooltips:{

mode:'index',

intersect:false,

},

hover:{

mode:'nearest',

intersect:true

},

scales:{

xAxes:[{

display:true,

scaleLabel:{

display:true,

labelString:'时间'

}

}],

yAxes:[{

display:true,

scaleLabel:{

display:true,

labelString:'参数值'

}

}]

}

}

});

//这里发送一个ajax把数据拿下来就行了

newChart(document.getElementById("carbonline"),{

type:'line',

data:{

labels:xTime,

datasets:[{

label:'光照强度',

fill:false,

backgroundColor:window.chartColors.purple,

borderColor:window.chartColors.green,

data:series3,

},{

label:'二氧化碳浓度',

fill:false,

backgroundColor:window.chartColors.purple,

borderColor:window.chartColors.blue,

data:series4,

}]

},

options:{

responsive:true,

title:{

display:true,

text:'Chart.jsLineChart'

},

tooltips:{

mode:'index',

intersect:false,

},

hover:{

mode:'nearest',

intersect:true

},

scales:{

xAxes:[{

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论