嵌入式項目書全解_第1頁
嵌入式項目書全解_第2頁
嵌入式項目書全解_第3頁
嵌入式項目書全解_第4頁
嵌入式項目書全解_第5頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、課 程 設 計課程名稱: 嵌入式設計 設計題目: 智能家居監控系統 班 級: 20122111 學 號: 2012211127 姓 名: 指導教師: 完成時間: 2015/12/9 哈爾濱工程大學教務處 制嵌入式設計報告智能家居監控系統班級:教師評語:教師簽名:2015年12月課程設計題目智能家居監控系統目的和背景 智能家居又稱智能住宅,正朝著具備無線遠程控制、多媒體控制、高速數據傳輸等功能 的方向發展,其關鍵技術為兼容性強的家庭控制器和滿足信息傳輸需要的家庭網絡。目前, 傳輸網絡多采用綜合布線技術,限制了系統應用場所,而且費用較高,采用無線方式構建靈 活便捷的智能家居安全監控系統,成為當前的

2、主流趨勢。目前,應用于智能家居的無線通信技術主要包括 Ir-DA 紅外線技術、藍牙技術和 Zigbee 技術等,Ir-DA 屬于短距離、點對點的半雙工通信方式,使用不便且失誤率高,不適用于家 庭的組網方式;藍牙技術則因為網絡容量有限,成本較高,不適于節點較多的家庭網絡應用。本項目通過采用傳輸范圍適中、安全可靠、網絡容量大的 Zigbee 技術,設計智能家居 遠程監控系統。主要內容1) 信息顯示。2) 照明控制。3) 家電控制。4) 入侵監測。5) 煙感監測。6) 溫度、 濕度監測。7) 遠程監控, 數據透傳。8) 選項設置。采用的工具方法硬件環境 1: NEUEBD-ARM 開發套件硬件環境

3、2: CC2530 開發套件軟件環境:1. UCOS2.5.1,提供 UCOS 內核構建2. ADS1.2、 IAR7.51,提供集成開發環境進度安排1-2天:完成項目要求書、模塊計劃書、系統設計書、RTM3-4天:完成模塊概要設計、模塊概要設計書、模塊接口定義書、模塊間 EVENT 流和數據流系統圖5-7天:完成模塊詳細設計 模塊詳細設計書8-13天:完成模塊代碼 模塊代碼14-16天:完成項目報告參考資料1 目的和背景 智能家居又稱智能住宅,正朝著具備無線遠程控制、多媒體控制、高速數據傳輸等功能 的方向發展,其關鍵技術為兼容性強的家庭控制器和滿足信息傳輸需要的家庭網絡。目前, 傳輸網絡多采

4、用綜合布線技術,限制了系統應用場所,而且費用較高,采用無線方式構建靈 活便捷的智能家居安全監控系統,成為當前的主流趨勢。目前,應用于智能家居的無線通信技術主要包括 Ir-DA 紅外線技術、藍牙技術和 Zigbee 技術等,Ir-DA 屬于短距離、點對點的半雙工通信方式,使用不便且失誤率高,不適用于家 庭的組網方式;藍牙技術則因為網絡容量有限,成本較高,不適于節點較多的家庭網絡應用。本項目通過采用傳輸范圍適中、安全可靠、網絡容量大的 Zigbee 技術,設計智能家居 遠程監控系統。2 功能描述和模塊設計圖1:智能家居監控平臺示意圖1) LCD 主菜單顯示顯示當前時間日期,電器開關狀態,是否鬧鐘開

5、啟。顯示用戶操作菜單。顯示設置菜單。2) 照明控制使用 LED、 AD( 1 個) 硬件資源。使用 LED 可模仿家中主要房間的照明。通過照明控制子菜單控制燈亮滅。如果開啟了自動光控功能,通過 AD 采集的光照參數可實現照明的自動開關。另外可通過小鍵盤模擬電燈開關。3) 家電控制使用 LED 硬件資源。通過家電控制子菜單對家中電器進行開關控制。相應家電開關信息以及鬧鐘是否開啟都在 LCD 主菜單中有顯示。通過設置菜單傳遞的信息可定時開關電器以及實現鬧鐘功能。定時時間到 LCD 屏會自動彈出提示框并且家電狀態發生改變。4) 入侵報警控制使用紅外傳感器硬件資源。使用紅外傳感器或接近開關采集數據,判

6、斷有無人員進入室內。報警參數有默認值,也可由用戶設置, 可通過設置功能完成。如遇報警,報警信息在屏幕上顯示,同時發出觸發蜂鳴器報警。5) 溫濕度控制使用溫濕度傳感器硬件資源。使用溫濕度傳感器采集溫濕度數據,將監測數據顯示在 LCD 上。報警參數有默認值,也可由用戶設置, 可通過設置功能完成。如遇報警, 觸發蜂鳴器動作,同時開啟空調。6) 遠程監控。終端系統將發生的事件數據定期通過 Zigbee 傳輸到服務器,服務器可根據實際情況進行家電設備的遠端控制。7) 設置功能完成以下內容的設置:哪些房間采用自動控制功能。3 系統結構圖2 系統結構圖圖3 通信協議框架圖4 設計參考框架4 代碼實現4.1模

7、塊的實現4.1.1賬戶登錄模塊函數名稱函數類型概要說明lineEditTextChanged(QString s)模塊內部函數判斷文本是否發生改變的槽函數zeroClicked()nineClicked()模塊內部函數09的數字輸入鍵盤loginBtnClicked()模塊外部函數登陸按鍵,進入主頁面forgrtPasswordClicked()模塊外部函數忘記密碼按鍵,進入密碼修改頁面 4.1.2主界面模塊函數名稱函數類型概要說明mainWidget2smartHomeAppliances()模塊外部函數點擊按鈕進入智能家電模塊。mainWidget2securityWidget()模塊外部

8、函數點擊按鈕進入安防系統模塊。mainWidget2toolWidget()模塊外部函數點擊按鈕進入工具娛樂模塊。Back_clicked模塊外部函數返回登陸界面。4.1.3智能家電模塊函數名稱函數類型概要說明smartHomeAppliances2lightWidget()模塊外部函數點擊按鈕進入燈控界面。smartHomeAppliances2waterHeaterWidget()模塊外部函數點擊按鈕進入熱水器控制界面。smartHomeAppliances2temperatureWidget()模塊外部函數點擊按鈕進入空調控制界面。smartHomeAppliances2humidity

9、Widget()模塊外部函數點擊按鈕進入加濕器控制界面。smartHomeAppliances2curtainWidget()模塊外部函數點擊按鈕進入窗簾控制界面。smartHomeAppliances2televisionWidget()模塊外部函數點擊按鈕進入電視控制界面Back_clicked模塊外部函數返回上一界面 4.1.3.1燈控模塊 函數名稱函數類型概要說明lightTurnOn()模塊外部函數點擊按鈕打開燈。lightTurnOff()模塊外部函數點擊按鈕關閉燈Back_clicked模塊外部函數返回上一界面 4.1.3.2溫度模塊函數名稱函數類型概要說明changeSwitc

10、h(int a)模塊內部函數顯示空調的開光狀態。addTemClicked()模塊內部函數顯示空調的溫度。addTemClicked()模塊外部函數點擊按鈕發送溫度加信息。subTemClicked();模塊外部函數點擊按鈕發送溫度減信息。Back_clicked模塊外部函數返回上一界面 4.1.3.3濕度模塊函數名稱函數類型概要說明showRh(int rh)模塊內部函數顯示當前濕度。changeSwitch(int a)模塊內部函數顯示當前開關狀態。changeOnClicked()模塊外部函數點擊按鈕發送開狀態。changeOffClicked()模塊外部函數點擊按鈕發送關狀態。addB

11、tnClicked();模塊外部函數點擊按鈕發送濕度加狀態。subBtnClicked();模塊外部函數點擊按鈕發送濕度減狀態。Back_clicked模塊外部函數返回上一界面 4.1.3.4熱水器模塊函數名稱函數類型概要說明showTem(int tem);模塊內部函數顯示當前溫度。changeSwitch(int a)模塊內部函數顯示開關狀態。changeOnClicked()模塊外部函數點擊按鈕發送開狀態。changeOffClicked()模塊外部函數點擊按鈕發送關狀態。addBtnClicked();模塊外部函數點擊按鈕發送升高水溫狀態。subBtnClicked();模塊外部函數點

12、擊按鈕發送降低水溫狀態。Back_clicked模塊外部函數返回上一界面 4.1.3.5窗簾模塊函數名稱函數類型概要說明showSlider( int ti );模塊內部函數顯示窗簾的位置。sliderValue(int a);模塊內部函數讀取窗簾的當前位置。Back_clicked模塊外部函數返回上一界面 4.1.3.6電視模塊函數名稱函數類型概要說明openTvClicked();模塊外部函數點擊按鈕發送電視開的信號。closeTvClicked();模塊外部函數點擊按鈕發送電視關的信號addVmeClicked();模塊外部函數點擊按鈕發送音量+信號subVolumeClicked();

13、模塊外部函數點擊按鈕發送音量減信號addProgramClicked()模塊外部函數點擊按鈕發送節目+信號subProgramClicked();模塊外部函數點擊按鈕發送節目-信號Back_clicked模塊外部函數返回上一界面 4.1.4安防模塊函數名稱函數類型概要說明securityWidget2infraredWidget();模塊外部函數點擊按鈕進入紅外報警。security2LockWidget();模塊外部函數點擊按鈕進入遠程控制門鎖security2SmokeWidget();模塊外部函數點擊按鈕進入煙霧報警Back_clicked模塊外部函數返回上一界面 4.1.4.1紅外報警

14、模塊函數名稱函數類型概要說明showLocation(int a);模塊內部函數顯示觸發的位置changeOnClicked();模塊外部函數點擊按鈕發送紅外開啟信號changeOfficked();模塊外部函數點擊按鈕發送紅外開啟信號Back_clicked模塊外部函數返回上一界面 4.1.4.2煙霧報警模塊函數名稱函數類型概要說明changeSmoke(int);模塊內部函數顯示當前煙霧的濃度。Back_clicked模塊外部函數返回上一界面 4.1.4.3門鎖控制模塊函數名稱函數類型概要說明changeLockState(int );模塊內部函數顯示當前門的鎖的狀態changeOn()模

15、塊外部函數點擊按鈕發送門開的狀態changeOff();模塊外部函數點擊按鈕發送門開的狀態Back_clicked模塊外部函數返回上一界面 4.1.5小工具模塊函數名稱函數類型概要說明toolWidget2calendarWidget();模塊外部函數點擊按鈕進入日歷toolWidget2stopwatchWidget()模塊外部函數點擊按鈕進入秒表toolWidget2cWidget()模塊外部函數點擊按鈕進入計算器toolWidget2alarmWidget()模塊外部函數點擊按鈕進入鬧鐘toolWidget2mianWindow()模塊外部函數點擊按鈕進入畫板toolWidget2gam

16、eWidget()模塊外部函數點擊按鈕進入2048游戲toolWidget2clockWidget()模塊外部函數點擊按鈕進入時鐘 4.1.5.1日歷模塊函數名稱函數類型概要說明selfinfowidget()模塊內部函數顯示醫生個人基本信息,顯示醫生的打卡時間。button_schedual_clicked模塊外部函數點擊按鈕進入日程界面Select_cases模塊外部函數選擇代辦事項,并顯示代辦事項的具體內容Back_clicked模塊外部函數返回上一界面 4.1.5.2時鐘模塊函數名稱函數類型概要說明selfinfowidget()模塊內部函數顯示醫生個人基本信息,顯示醫生的打卡時間。b

17、utton_schedual_clicked模塊外部函數點擊按鈕進入日程界面Select_cases模塊外部函數選擇代辦事項,并顯示代辦事項的具體內容Back_clicked模塊外部函數返回上一界面 4.1.5.3鬧鐘模塊函數名稱函數類型概要說明selfinfowidget()模塊內部函數顯示醫生個人基本信息,顯示醫生的打卡時間。button_schedual_clicked模塊外部函數點擊按鈕進入日程界面Select_cases模塊外部函數選擇代辦事項,并顯示代辦事項的具體內容Back_clicked模塊外部函數返回上一界面 4.1.5.4秒表模塊函數名稱函數類型概要說明startStopw

18、atchClicked()模塊內部函數秒表開始計時resetStopwatchClicked()模塊內部函數秒表重新計時stopStopwatchClicked()模塊內部函數秒表停止計時 4.1.5.5畫板模塊函數名稱函數類型概要說明void open()模塊內部函數打開圖片void save()模塊內部函數保存圖片void penColor()模塊內部函數改變畫筆顏色void penWidth()模塊內部函數改變畫筆寬度void penBrush()模塊內部函數筆刷 4.1.5.6計算器模塊函數名稱函數類型概要說明selfinfowidget()模塊內部函數顯示醫生個人基本信息,顯示醫生的

19、打卡時間。button_schedual_clicked模塊外部函數點擊按鈕進入日程界面Select_cases模塊外部函數選擇代辦事項,并顯示代辦事項的具體內容Back_clicked模塊外部函數返回上一界面 4.1.5.7小游戲模塊函數名稱函數類型概要說明selfinfowidget()模塊內部函數顯示醫生個人基本信息,顯示醫生的打卡時間。resizeEvent(QResizeEvent *)模塊內部函數窗口尺寸改變觸發的事件onScoreInc(int)模塊內部函數處理分數增加信號的槽函數onGameOver()模塊內部函數處理游戲結束信號的槽函數onWin()模塊內部函數處理游戲獲勝信

20、號的槽函數Main.c:#include <QApplication>#include <QTextCodec>#include "head.h"#include "openpassword.h"int sfd;void init_network();int main(int argc, char *argv) QApplication a(argc, argv); QTextCodec:setCodecForCStrings(QTextCodec:codecForName("utf-8"); QTextCod

21、ec:setCodecForLocale(QTextCodec:codecForName("utf-8"); QTextCodec:setCodecForTr(QTextCodec:codecForName("utf-8"); openPassword w; w.show(); init_network(); return a.exec();void init_network() sfd=socket(AF_INET,SOCK_DGRAM,0); if(sfd<0) qDebug("socket()failed!"); retu

22、rn; struct sockaddr_in addr; bzero(&addr,sizeof(addr); addr.sin_family = AF_INET; addr.sin_port=htons(9999); addr.sin_addr.s_addr = htonl(INADDR_ANY); int ret; ret=bind(sfd,(struct sockaddr*)&addr,sizeof(addr); if(ret != 0) qDebug("bind() failed!"); return; #include "mainwidge

23、t.h"#include "ui_mainwidget.h"#include "head.h"#include <QTime>/#include <QTimer>mainWidget:mainWidget(QWidget *parent) : QWidget(parent), ui(new Ui:mainWidget) ui->setupUi(this);ui->dateTimeEdit->setDate(QDate:currentDate();/ ui->dateTimeEdit->set

24、Time(QTime:currentTime();/ QTimer *timer=new QTimer(this); connect(timer,SIGNAL(timeout(),this,SLOT(timeoutslot();/timeoutslot() timer->start(1000); sha = new smartHomeAppliances; sw = new securityWidget; tw = new toolWidget;mainWidget.c:mainWidget:mainWidget() delete ui;void mainWidget:show() QW

25、idget:show(); showFullScreen();void mainWidget:mainWidget2smartHomeAppliances() QPalette palette; palette.setBrush(QPalette:Background,QBrush(QImage( ":/new/prefix1/jiaju.png").scaled(size(), Qt:IgnoreAspectRatio, Qt:SmoothTransformation); sha->setPalette(palette); sha->setAutoFillBa

26、ckground(true); sha->setAutoFillBackground(true); sha->show(); / sha->show();void mainWidget:mainWidget2securityWidget() QPalette palette; palette.setBrush(QPalette:Background,QBrush(QImage( ":/new/prefix1/anfang.png").scaled(size(), Qt:IgnoreAspectRatio, Qt:SmoothTransformation);

27、 sw->setPalette(palette); sw->setAutoFillBackground(true);/ sw->setAutoFillBackground(true); / sha->show(); sw->show();void mainWidget:mainWidget2toolWidget() / tw->show(); QPalette palette; palette.setBrush(QPalette:Background,QBrush(QImage( ":/new/prefix1/tool.png").sca

28、led(size(), Qt:IgnoreAspectRatio, Qt:SmoothTransformation); tw->setPalette(palette); tw->setAutoFillBackground(true); tw->setAutoFillBackground(true); tw->show();void mainWidget:timeoutslot() QDate date = ui->dateTimeEdit->date(); QTime time = ui->dateTimeEdit->time(); QTime

29、time1(23,59,59); if(time = time1) date = date.addDays(1); time = time.addSecs(1); ui->dateTimeEdit->setDate(date); ui->dateTimeEdit->setTime(time)冰箱控制:#include "infraredwidget.h"#include "ui_infraredwidget.h"#include "head.h"infraredWidget:infraredWidget(QWi

30、dget *parent) : QWidget(parent), ui(new Ui:infraredWidget) ui->setupUi(this);infraredWidget:infraredWidget() delete ui;void infraredWidget:show() QWidget:show(); showFullScreen();void infraredWidget:changeOnClicked() struct sockaddr_in peer_addr; bzero(&peer_addr,sizeof(peer_addr); peer_addr.

31、sin_family = AF_INET; peer_addr.sin_port = htons(INFRARED_PORT); peer_addr.sin_addr.s_addr = inet_addr(INFRARED_IP); int a=1; sendto(sfd,&a,sizeof(a),0,(struct sockaddr*)&peer_addr,sizeof(peer_addr); ui->textBrowser->append("");void infraredWidget:changeOffClicked() struct so

32、ckaddr_in peer_addr; bzero(&peer_addr,sizeof(peer_addr); peer_addr.sin_family = AF_INET; peer_addr.sin_port = htons(INFRARED_PORT); peer_addr.sin_addr.s_addr = inet_addr(INFRARED_IP); int a=0; sendto(sfd,&a,sizeof(a),0,(struct sockaddr*)&peer_addr,sizeof(peer_addr); ui->textBrowser-&g

33、t;append("");void infraredWidget:showLocation(int a) if(a=0) ui->textBrowser->append(); if(a=1) ui->textBrowser->append("); 門鎖控制:#include "lockwidget.h"#include "ui_lockwidget.h"#include<QLabel>#include<QAbstractButton>#include"head.h&q

34、uot;lockWidget:lockWidget(QWidget *parent) : QWidget(parent), ui(new Ui:lockWidget) ui->setupUi(this); / rt = new recvThread; /QObject:connect(rt, SIGNAL( lockStateChange(int), / this, SLOT(changeLockState(int); / rt->start();lockWidget:lockWidget() delete ui;void lockWidget:show() QWidget:sho

35、w(); showFullScreen();void lockWidget:changeOn() / ui->btn1->setChecked(true); ui->lineEdit->setText("The gate is ON!"); struct sockaddr_in addr; bzero(&addr, sizeof(addr); addr.sin_family = AF_INET; addr.sin_port = htons(7002); addr.sin_addr.s_addr = inet_addr("192.16

36、8.1.222");/ int kind = 5; / / sendto(sfd, &kind, sizeof(kind), 0, (struct sockaddr*)&addr, sizeof(addr); int bool2=1; sendto(sfd, &bool2, sizeof(bool2), 0, (struct sockaddr*)&addr, sizeof(addr);/ ui->label_2->setText("the GATE is On!");void lockWidget:changeOff()

37、 ui->lineEdit->setText("The gate is OFF!"); / ui->btn2->setChecked(true); / ui->label_2->setText("the Gate is OFF!"); struct sockaddr_in addr; bzero(&addr, sizeof(addr); addr.sin_family = AF_INET; addr.sin_port = htons(7002); addr.sin_addr.s_addr = inet_addr

38、("192.168.1.87");/ int kind = 5; / / sendto(sfd, &kind, sizeof(kind), 0, (struct sockaddr*)&addr, sizeof(addr); int bool2=0; sendto(sfd, &bool2, sizeof(bool2), 0, (struct sockaddr*)&addr, sizeof(addr);void lockWidget:changeLockState(int bool1) if(bool1=0) / ui->setupUi(t

39、his); / ui->Ui_lockWidget; / close(); / show(); /update();/ repaint(); ui->lineEdit->setText("the GATE is OFF!"); / qApp->processEvents(); / this->updateGeometry(); / qDebug("recv1111"); else if (bool1=1) / ui->btn1->setCheckable(true); / ui->btn1->setF

40、ocus(); / ui->btn2->setChecked(false); / ui->btn1->setChecked(true); / ui->label_2->update(); / ui->label_2->setText("the GATE is On!"); / this->changeOff(); / this->changeOn(); / ui->setupUi(this); / ui->retranslateUi(lockWidget); / update(); ui->lin

41、eEdit->setText("the GATE is ON!"); / this->updateGeometry(); / qDebug("recv 2222"); 遠程燈控:#include "lockwidget.h"#include "ui_lockwidget.h"#include<QLabel>#include<QAbstractButton>#include"head.h"lockWidget:lockWidget(QWidget *parent

42、) : QWidget(parent), ui(new Ui:lockWidget) ui->setupUi(this); / rt = new recvThread; /QObject:connect(rt, SIGNAL( lockStateChange(int), / this, SLOT(changeLockState(int); / rt->start();lockWidget:lockWidget() delete ui;void lockWidget:show() QWidget:show(); showFullScreen();void lockWidget:cha

43、ngeOn() / ui->btn1->setChecked(true); ui->lineEdit->setText("The gate is ON!"); struct sockaddr_in addr; bzero(&addr, sizeof(addr); addr.sin_family = AF_INET; addr.sin_port = htons(7002); addr.sin_addr.s_addr = inet_addr("192.168.1.222");/ int kind = 5; / / sendto

44、(sfd, &kind, sizeof(kind), 0, (struct sockaddr*)&addr, sizeof(addr); int bool2=1; sendto(sfd, &bool2, sizeof(bool2), 0, (struct sockaddr*)&addr, sizeof(addr); / ui->label_2->setText("the GATE is On!");void lockWidget:changeOff() ui->lineEdit->setText("The g

45、ate is OFF!"); / ui->btn2->setChecked(true); / ui->label_2->setText("the Gate is OFF!"); struct sockaddr_in addr; bzero(&addr, sizeof(addr); addr.sin_family = AF_INET; addr.sin_port = htons(7002); addr.sin_addr.s_addr = inet_addr("192.168.1.87");/ int kind =

46、5; / / sendto(sfd, &kind, sizeof(kind), 0, (struct sockaddr*)&addr, sizeof(addr); int bool2=0; sendto(sfd, &bool2, sizeof(bool2), 0, (struct sockaddr*)&addr, sizeof(addr);void lockWidget:changeLockState(int bool1) if(bool1=0) / ui->setupUi(this); / ui->Ui_lockWidget; / close();

47、 / show(); /update();/ repaint(); ui->lineEdit->setText("the GATE is OFF!"); / qApp->processEvents(); / this->updateGeometry(); / qDebug("recv1111"); else if (bool1=1) / ui->btn1->setCheckable(true); / ui->btn1->setFocus(); / ui->btn2->setChecked(fal

48、se); / ui->btn1->setChecked(true); / ui->label_2->update(); / ui->label_2->setText("the GATE is On!"); / this->changeOff(); / this->changeOn(); / ui->setupUi(this); / ui->retranslateUi(lockWidget); / update(); ui->lineEdit->setText("the GATE is ON!&

49、quot;); / this->updateGeometry(); / qDebug("recv 2222"); 濕度檢測:#include "humiditywidget.h"#include "ui_humiditywidget.h"#include "head.h"humidityWidget:humidityWidget(QWidget *parent) : QWidget(parent), ui(new Ui:humidityWidget) ui->setupUi(this);humidity

50、Widget:humidityWidget() delete ui;void humidityWidget:show() QWidget:show(); showFullScreen();void humidityWidget:showRh(int rh) ui->lcdNumber->display(rh);void humidityWidget:changeSwitch(int a) if(a=1) ui->closeButton->setChecked(false); ui->openButton->setChecked(true); else if(a=0) ui->openButton->setChecked(false); ui->closeButton->setChecked(true); void humidityWidget:changeOnClicked() struct sockaddr_in peer_addr; bzero(&peer_addr,sizeof(peer_addr); peer_addr.sin_family = AF_INET; peer_addr.sin_port = htons(HUMIDITY_PORT); peer_addr.sin_ad

溫馨提示

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

評論

0/150

提交評論