




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
智能家居平臺應(yīng)用項目化教程第3章環(huán)境監(jiān)測相關(guān)知識介紹項目實施實訓(xùn)項目2項目描述項目描述3項目描述環(huán)境監(jiān)測作為智能家居應(yīng)用的重要基礎(chǔ)功能,其主要用于獲取各傳感器采集的實時數(shù)據(jù),并通過預(yù)處理將其展示在應(yīng)用界面中。其中傳感器類別主要包括溫度傳感器、濕度傳感器、光照傳感器和CO2傳感器等,這些傳感器協(xié)調(diào)工作,將自然界中的各類非電信號轉(zhuǎn)化成電信號,讓用戶能夠全面直觀的了解其周圍的生活環(huán)境。4相關(guān)知識介紹5相關(guān)知識介紹信號和槽是一種高級接口,應(yīng)用于對象之間的通信,它是Qt的核心特性,也是Qt區(qū)別于其它工具包的重要地方。信號和槽是Qt自行定義的一種通信機制,它獨立于標(biāo)準(zhǔn)的C/C++語言,因此要正確的處理信號和槽,必須借助一個稱為moc(MetaObjectCompiler)的Qt工具,該工具是一個C++預(yù)處理程序,它為高層次的事件處理自動生成所需要的附加代碼。Qt支持將很多信號與單個的槽進行連接,也可以將單個的信號與很多的槽進行連接,甚至于將一個信號與另外一個信號相連接也是可能的,這時無論第一個信號什么時候發(fā)射,系統(tǒng)都將立刻發(fā)射第二個信號??傊盘柵c槽構(gòu)造了一個強大的部件編程機制。6信號槽相關(guān)知識介紹信號在Qt中使用信號時有以下幾點注意事項:聲明一個信號需要使用signals關(guān)鍵字做標(biāo)識符,同時在signals關(guān)鍵字前面不允許出現(xiàn)public、private和protected等限定符。信號只是用作聲明,因此在代碼中不需要對其進行定義和實現(xiàn)。信號沒有返回值,只能是void類型。使用信號槽時必須在類聲明的最開始處添加Q_OBJECT宏。信號由moc自動產(chǎn)生,它們不應(yīng)該在.cpp文件中實現(xiàn)。例如,下面定義了三個信號:signals:voidmySignal();voidmySignal(intx);voidmySignalParam(intx,inty);7信號槽相關(guān)知識介紹槽槽是普通的C++成員函數(shù),其可以被正常調(diào)用,它們唯一的特殊性就是很多信號可以與其相關(guān)聯(lián)。當(dāng)與其關(guān)聯(lián)的信號被發(fā)射時,這個槽就會被調(diào)用。槽可以有參數(shù),但槽的參數(shù)不能有缺省值。同普通的C++成員函數(shù)一樣,槽函數(shù)也分為三種類型,即publicslots、privateslots和protectedslots:publicslots:在這個區(qū)內(nèi)聲明的槽意味著任何對象都可將信號與之相連接。這對于組件編程非常有用,開發(fā)者可以根據(jù)需要創(chuàng)建彼此互不了解的對象,將它們的信號與槽進行連接以便信息能夠正確的傳遞。protectedslots:在這個區(qū)內(nèi)聲明的槽意味著當(dāng)前類及其子類可以將信號與之相連接。這適用屬于類實現(xiàn)的一部分,但是其界面接口卻面向外部的槽。privateslots:在這個區(qū)內(nèi)聲明的槽意味著只有類自己可以將信號與之相連接。這適用于聯(lián)系非常緊密的類。8信號槽相關(guān)知識介紹槽槽也能夠聲明為虛函數(shù),這也是非常有用的。槽的聲明也是在頭文件中進行的。例如,下面聲明了三個槽:publicslots:voidmySlot();voidmySlot(intx);voidmySignalParam(intx,inty);9信號槽相關(guān)知識介紹信號與槽的連接所有從QObject或其子類(例如Qwidget)派生的類都能夠包含信號和槽。因為信號與槽的連接是通過QObject的connect()成員函數(shù)來實現(xiàn)的。其代碼使用如下:connect(sender,SIGNAL(signal),receiver,SLOT(slot));其中sender與receiver是指向?qū)ο蟮闹羔槪琒IGNAL()與SLOT()是轉(zhuǎn)換信號與槽的宏。10信號槽相關(guān)知識介紹11QComboBox函數(shù)說明voidaddItems(constQStringList&texts)在QComboBox的最后添加一項,其中texts參數(shù)便是添加的內(nèi)容。intcount()const返回列表項總數(shù)。intcurrentIndex()const當(dāng)前顯示的列表項序號。QStringcurrentText()const返回當(dāng)前顯示的文本。voidinsertItems(intindex,constQStringList&list)插入一項或多項內(nèi)容至序號index處。voidinsertSeparator(intindex)在序號為index的項前插入分隔線。voidsetItemText(intindex,constQString&text)改變序號為index項的文本。ComboBox是QTGUI中的下拉列表框,它用于顯示特定字段的可能值列表,當(dāng)單擊該控件時會顯示與該字段關(guān)聯(lián)的值列表,用戶可選擇其中的一個值。QComboBox類具有如下表所示的常用方法和屬性,運行效果如下圖所示:項目實施12項目實施環(huán)境監(jiān)測作為智能家居應(yīng)用中的重要功能之一,其主要是利用諸如溫度傳感器、濕度傳感器、光照傳感器和CO2傳感器等協(xié)調(diào)工作,將自然界中的各類非電信號轉(zhuǎn)化成電信號,讓用戶能夠全面直觀的了解其周圍的生活環(huán)境。通過本項目的完成,使學(xué)生可以掌握以下技能:能夠完成功能界面的合理布局;能夠理解并靈活使用信號槽及QComboBox控件;能夠利用代碼實現(xiàn)環(huán)境數(shù)據(jù)的實時監(jiān)測功能;能夠通過調(diào)試解決代碼的錯誤提示并保證正常編譯運行。13方案設(shè)計和項目目標(biāo)項目實施在上一章的工程項目基礎(chǔ)上添加SerialThread類,其步驟如下:(1)鼠標(biāo)右擊SmartHome項目,在彈出的工具欄中選擇“添加新文件”,如右圖所示。(2)點擊“添加新文件”后在彈出的“新建文件”對話框中選擇“C++類”,隨后單擊“選擇”按鈕,如右圖所示。14添加C++類文件項目實施(3)在彈出的“C++類向?qū)А苯缑嬷械念惷麑υ捒蜉斎隨erialThread,在基類對話框中輸入QThread,其界面如右圖所示,完成后單擊“下一步”。(4)在彈出的“項目管理”界面單擊“完成”按鈕,至此C++類的添加便已完成,如右圖所示。15添加C++類文件項目實施(5)修改serialthread.h頭文件,在其首部引入其它功能的頭文件,以此實現(xiàn)功能模塊之間的交互,因此在代碼#include<QThread>下一行寫入如下代碼:#include"posix_qextserialport.h"http://導(dǎo)入串口支持類頭文件(6)隨后在以上代碼的下一行聲明zhi[3]和ttys兩個全局變量,其代碼和注釋如下所示:externintzhi[3];//用數(shù)組存儲界面上QComboBox選擇的參數(shù)externQStringttys;//用于存儲與服務(wù)端進行數(shù)據(jù)交換的端口號16添加C++類文件項目實施(7)在classSerialThread:publicQThread函數(shù)的public中聲明Posix_QextSerialPort類實例化的變量,同時在signals:中編寫信號函數(shù),其詳細代碼如下所示:public:explicitSerialThread();Posix_QextSerialPort*m;//實例化串口類
voidrun();signals:voidserialFinished(QByteArraystr);//信號函數(shù),str用于串口返回來的數(shù)據(jù)(8)打開源文件serialthread.cpp,對頭文件serialthread.h中聲明的zhi[3]和ttys兩個全局變量進行初始化,其位置處于#include"serialthread.h"下一行,具體代碼如下:intzhi[3]={0,0,0};QStringttys="";17添加C++類文件項目實施(9)在函數(shù)SerialThread::SerialThread()中輸入功能代碼,其主要用于實現(xiàn)串口數(shù)據(jù)交換的配置,具體代碼如下:
structPortSettingstty;//實例化串口,并對其進行配置
m=newPosix_QextSerialPort("/dev/"+ttys,tty,QextSerialBase::Polling);//定義串口對象,指定串口名和查詢模式
m->open(QIODevice::ReadWrite);//設(shè)置串口讀寫
m->setBaudRate(BaudRateType(zhi[0]));//設(shè)置波特率
m->setDataBits(DataBitsType(zhi[2]));//設(shè)置數(shù)據(jù)位
m->setFlowControl(FLOW_OFF);//數(shù)據(jù)流控制設(shè)置
m->setParity(ParityType(zhi[1]));//設(shè)置校驗位
m->setStopBits(STOP_1);//設(shè)置停止位
m->setTimeout(70);//延時設(shè)置18添加C++類文件項目實施(10)在程序尾部插入頭文件serialthread.h中run()函數(shù)的具體功能實現(xiàn),代碼如下:voidSerialThread::run(){while(1){//對比40ms前后收到的兩段數(shù)據(jù),一直的話即讀取數(shù)據(jù)
intlen=m->bytesAvailable();//把接收到的包賦值
msleep(40);//延遲40msif(len==m->bytesAvailable())//判斷接受到的包是否一致
{QByteArrayt=m->readAll();//讀取串口緩沖區(qū)的所有數(shù)據(jù)給臨時變量temitthis->serialFinished(t);//把serialFinished信號發(fā)射出去
}}}19添加C++類文件項目實施TabWidget控件對上一章中的界面文件smart.ui進行設(shè)計,使用TabWidget控件將其分成四個功能模塊,分別是環(huán)境監(jiān)測、家電控制、自動控制和數(shù)據(jù)可視,因此本部分界面中主要需要注意TabWidget和ComboBox兩個控件。其中TabWidge控件的詳細使用方法如下:(1)選擇找到界面文件,在本項目中以smart.ui為例。雙擊“smart.ui”文件,進入圖形化界面設(shè)計窗體,在窗體的左側(cè)的Containers欄找到TabWidget圖標(biāo),如右圖所示。TabWidget就是Qt開發(fā)中用于頁面切換的控件。20修改界面布局項目實施(2)選中TabWidget圖標(biāo),將它拖拽至界面中,就成功地在界面中添加了一個頁面切換控件了。此時可以將TabWidget中的文本修改成符合項目需求的文本了,在此處就以“環(huán)境監(jiān)測”為例。點擊剛剛拖出來的TabWidget中的需修改文本的某一頁,在右側(cè)的屬性欄中找到currentTabText屬性,在其中輸入文本“環(huán)境監(jiān)測”即可,如圖所示。21修改界面布局項目實施(3)為了在項目以后的開發(fā)過程中,避免控件太多導(dǎo)致的混淆,就需要修改控件的名稱,在右上角的控件列表中找到這個TabWidget,修改它的名稱,在此處就以SmartHome為例,如左圖所示。如果為了修改其中某一頁面的控件名稱,只需按照上述方法將TabWidget下面的該頁面的名稱修改即可,此處以第一個“環(huán)境監(jiān)測”界面為例,將其名稱修改為Environment,修改后的界面如右圖所示。22修改界面布局項目實施(4)如果要在當(dāng)前頁面的基礎(chǔ)上繼續(xù)增加頁面,則只需單擊最后一個頁面,隨后鼠標(biāo)選擇“插入頁”,并在右邊工具欄點擊“在當(dāng)前頁之后”,如左圖所示。插入頁面的結(jié)果如右圖所示,后續(xù)具體操作只需重復(fù)上述步驟即可。23修改界面布局項目實施ComboBox控件對于ComboBox控件的使用方法如下:(1)選擇找到界面文件,在本項目中以smart.ui為例。雙擊“smart.ui”文件,進入圖形化界面設(shè)計窗體,在窗體的左側(cè)的InputWidgets欄找到ComboBox圖標(biāo),如圖右所示。ComboBox就是Qt開發(fā)中的組合框,這個控件是由一個文本輸入控件和一個下拉菜單組成的,可以節(jié)省空間。24修改界面布局項目實施(2)選中ComboBox圖標(biāo),將它拖拽至界面中,就成功地在界面中添加了一個組合框了。此時可以在ComboBox中添加符合項目需求的文本了,在此處就以“光照”為例。雙擊剛剛拖出來的ComboBox控件,在彈出的“編輯組合框”中點擊加號按鈕,及新建文件按鈕,如圖所示。25修改界面布局項目實施(3)在新建的文本框中輸入“關(guān)照”,隨后按照此方法依次添加所需項目,最后單擊“確定”完成組合框選項設(shè)置,如右圖所示。(4)為了在項目以后的開發(fā)過程中,避免控件太多導(dǎo)致的混淆,就需要修改控件的名稱,在右上角的控件列表中找到這個ComboBox,修改它的名稱,在此處就以comboBox為例,如右圖所示。26修改界面布局項目實施對主界面文件smart.ui進行重新設(shè)計,其界面布局效果圖如圖所示:27修改界面布局項目實施控件的詳細信息如表所示:28修改界面布局控件ID控件類別控件內(nèi)容labelQLabel服務(wù)器IP:label_2QLabel端口號::label_3QLabel串口號:label_4QLabel波特率:label_5QLabel校驗位:label_6QLabel數(shù)據(jù)位:label_7QLabel監(jiān)測對象:label_8QLabel溫度:label_9QLabel濕度:label_10QLabel人體:label_11QLabel光照:label_12QLabel煙霧:label_13QLabel燃氣:label_14QLabel氣壓:label_15QLabelPM2.5label_16QLabelCO2:lbServerIPQLabel0.0.0.0lbPortQLabel0控件ID控件類別控件內(nèi)容lbTempQLabel0lbHumidityQLabel0lbRTQLabel無人lbIllQLabel0lbSmokeQLabel0lbGasQLabel0lbAirQLabel0lbPM25QLabel0lbCo2QLabel0cbPortQComboBoxttyUSB0cbBaudQComboBox9600cbFlowQComboBox偶校驗cbDataQComboBox8cbQJQComboBox光照btnLinkQPushButton打開串口btnLinkServerQPushButton連接服務(wù)器btnListenQPushButton監(jiān)聽btnCloseQPushButtonleMaxQLineEdit最大值:項目實施
環(huán)境監(jiān)測功能主要是用于實時讀取傳感器采集的環(huán)境參數(shù),并利用數(shù)值的形式展示給用戶,使其對周圍環(huán)境有一個量化的了解。該模塊功能主要由頭文件smart.h和源文件smart.cpp實現(xiàn)。其中smart.h的具體編寫步驟如下:(1)打開頭文件smart.h并修改,在其首部引入其它功能的頭文件,以此實現(xiàn)功能模塊之間的交互,因此在代碼#include<QDialog>下一行寫入如下代碼:#include"login.h"http://導(dǎo)入登錄功能頭文件#include"command.h"http://導(dǎo)入?yún)?shù)命令頭文件#include"configure.h"http://導(dǎo)入配置功能頭文件#include"log.h"http://導(dǎo)入日志功能頭文件#include"sql.h"http://導(dǎo)入數(shù)據(jù)庫功能頭文件#include"tcpclientthread.h"http://導(dǎo)入環(huán)境參數(shù)傳遞至服務(wù)器操作的客戶端線程類頭文件#include"tcpserver.h"http://導(dǎo)入網(wǎng)絡(luò)服務(wù)端類頭文件29修改環(huán)境監(jiān)測功能頭文件和源文件項目實施30修改環(huán)境監(jiān)測功能頭文件和源文件(2)隨后在以上代碼的下一行聲明各環(huán)境參數(shù)的全局變量,其代碼如下所示:externQStringIllumination_Value;//光照度externQStringTemp_Value;//溫度值externQStringHumidity_Value;//濕度值externQStringCO2_Value;//CO2externQStringAirPressure_Value;//氣壓externQStringSmoke_Value;//煙霧externQStringGas_Value;//燃氣externQStringPM25_Value;//PM2.5externvolatileunsignedintStateHumanInfrared;//人體紅外,1:有人。0:無人externvolatileunsignedintconfigboardnumberAir;externvolatileunsignedintconfigboardnumberCo2;項目實施31修改環(huán)境監(jiān)測功能頭文件和源文件externvolatileunsignedintconfigboardnumberCurtain;externvolatileunsignedintconfigboardnumberFan;externvolatileunsignedintconfigboardnumberGasSensor;externvolatileunsignedintconfigboardnumberHumanInfrared;externvolatileunsignedintconfigboardnumberHumidity;externvolatileunsignedintconfigboardnumberIllumination;externvolatileunsignedintconfigboardnumberInfrared;externvolatileunsignedintconfigboardnumberLamp;externvolatileunsignedintconfigboardnumberPM25;externvolatileunsignedintconfigboardnumberRFID;externvolatileunsignedintconfigboardnumberSmoke;externvolatileunsignedintconfigboardnumberWarningLight;externvolatileunsignedintconfigboardnumbertemp;項目實施32修改環(huán)境監(jiān)測功能頭文件和源文件(3)在classSmart:publicQDialog函數(shù)的public中聲明變量,同時在privateslots中對各個事件函數(shù)進行聲明,其詳細代碼如下所示:public:explicitSmart(QWidget*parent=0);~Smart();Configureconfg;commanddatas;//串口
TcpClientThread*Mytcp;//客戶端
TcpServerServer;//服務(wù)器
SQLsql;Loglog;QTimer*ReadTimer;//定時器
intReadDataNum;項目實施33修改環(huán)境監(jiān)測功能頭文件和源文件floatSmokeMax,IllMax;//煙霧和光照最大值
privateslots:voidon_btnClose_clicked();//關(guān)閉按鈕事件
voidcloseEvent(QCloseEvent*);//關(guān)閉服務(wù)器
voidReadData();//數(shù)據(jù)更新
voidhq(QByteArraystr);//接收數(shù)據(jù)并判斷、更新
voidon_btnLinkServer_clicked();//連接服務(wù)器按鈕事件
voidon_btnListen_clicked();//監(jiān)聽按鈕事件
voidon_btnLink_clicked();//連接按鈕事件
voidconfigure(QStringUserName,QStringPasswd,QStringIP,QStringMask,QStringGetway,QStringMac,QStringServerIp);//更新數(shù)據(jù)庫項目實施對于登錄功能源文件smart.cpp的具體操作如下:(1)打開源文件smart.cpp并修改,在函數(shù)Smart::Smart(QWidget*parent)中輸入功能代碼,其主要用于實現(xiàn)傳感器信息配置和客戶端實例化,具體代碼如下:
setWindowFlags(Qt::FramelessWindowHint);//去除界面標(biāo)題欄
//傳感器接口配置
configboardnumberAir=3;configboardnumberCo2=13;configboardnumberCurtain=10;configboardnumberFan=12;configboardnumberGasSensor=7;configboardnumberHumanInfrared=2;configboardnumberHumidity=4;configboardnumberIllumination=5;configboardnumberInfrared=1;configboardnumberLamp=11;34修改環(huán)境監(jiān)測功能頭文件和源文件項目實施35修改環(huán)境監(jiān)測功能頭文件和源文件configboardnumberPM25=8;configboardnumberRFID=14;configboardnumberSmoke=6;configboardnumberWarningLight=9;configboardnumbertemp=4;Mytcp=newTcpClientThread();//實例化客戶端
datas.SerialOpen();//打開串口
connect(&datas,SIGNAL(serialFinish(QByteArray)),this,SLOT(hq(QByteArray)));//信號和槽的鏈接格式信號處理對象信號區(qū)域槽函數(shù)(執(zhí)行的動作)
ReadTimer=newQTimer(this);//計時器實例化要分配地址,必須是指針
connect(ReadTimer,SIGNAL(timeout()),this,SLOT(ReadData()));項目實施36修改環(huán)境監(jiān)測功能頭文件和源文件configboardnumberPM25=8;ReadTimer->start(3000);//3秒讀一次,保證能正確接受到各個板子的信息
connect(&Server,SIGNAL(bytesArrived(QString,QString,QString,QString,QString,QString,QString)),this,SLOT(configure(QString,QString,QString,QString,QString,QString,QString)));//將接受到的配置網(wǎng)關(guān)的信號關(guān)聯(lián)到槽
ui->lbServerIP->setText(ServerIP);ui->lbPort->setText(exPort);ui->SmartHome->setStyleSheet("QTabWidget:pane{border-top:0pxsolid#e8f3f9;background:transparent;}");//設(shè)置QTabWidget背景透明項目實施(3)在程序尾部插入按鈕事件實現(xiàn)函數(shù),這些函數(shù)均與頭文件smart.h中privateslots中聲明的函數(shù)一一對應(yīng),其中on_btnClose_clicked()函數(shù)用于關(guān)閉客戶端線程和退出界面;ReadData()函數(shù)通過遍歷以讀取節(jié)點板數(shù)據(jù);hq(QByteArraystr)函數(shù)用于對接收的包數(shù)據(jù)進行解析和采集;configure()函數(shù)用于將信息寫入數(shù)據(jù)庫,查看IP是否配置成功;on_btnLinkServer_clicked()函數(shù)用于啟動客戶端線程并連接服務(wù)器;on_btnListen_clicked()函數(shù)用于監(jiān)聽端口;on_btnLink_clicked()用于管理串口的開啟和關(guān)閉。具體代碼如下:/**函數(shù)名稱:on_btnClose_clicked()*函數(shù)功能:關(guān)閉程序*返回值:空*/voidSmart::on_btnClose_clicked(){Server.close();Mytcp->exit();this->close();}37修改環(huán)境監(jiān)測功能頭文件和源文件項目實施38修改環(huán)境監(jiān)測功能頭文件和源文件/**函數(shù)名稱:ReadData()*函數(shù)功能:讀取節(jié)點板數(shù)據(jù)*返回值:空*/voidSmart::ReadData(){ReadDataNum++;if(ReadDataNum<=28){datas.ReadNodeData(ReadDataNum);}else{ReadTimer->stop();}}
項目實施39修改環(huán)境監(jiān)測功能頭文件和源文件/**函數(shù)名稱:hq(QByteArraystr)*函數(shù)功能:信息采集*返回值:空*/voidSmart::hq(QByteArraystr){if(str.length()>=5&&str.length()<=300)//對比包長度
{if(str[0]!=0&&str[1]!=0)//判斷協(xié)議是否正確
{datas.ReceiveHandle(str);//包解析
//將讀取的數(shù)據(jù)顯示在界面上
ui->lbAir->setText(AirPressure_Value);項目實施40修改環(huán)境監(jiān)測功能頭文件和源文件ui->lbCo2->setText(CO2_Value);ui->lbGas->setText(Gas_Value);ui->lbHumidity->setText(Humidity_Value);ui->lbIll->setText(Illumination_Value);ui->lbPM25->setText(PM25_Value);ui->lbRT->setText(StateHumanInfrared?"有人":"無人");ui->lbSmoke->setText(Smoke_Value);ui->lbTemp->setText(Temp_Value);if(IllMax<Illumination_Value.toFloat()){IllMax=Illumination_Value.toFloat();}if(SmokeMax<Smoke_Value.toFloat()){SmokeMax=Smoke_Value.toFloat();}項目實施41修改環(huán)境監(jiān)測功能頭文件和源文件switch(ui->cbQJ->currentIndex())//監(jiān)測光照數(shù)據(jù)和煙霧數(shù)據(jù)的最大值并顯示在界面上
{case0:ui->leMax->setText("最大值:"+QString::number(IllMax));break;case1:ui->leMax->setText("最大值:"+QString::number(SmokeMax));break;}}}}項目實施42修改環(huán)境監(jiān)測功能頭文件和源文件/**函數(shù)名稱:closeEvent(QCloseEvent*)*函數(shù)功能:closeEvent重載*返回值:空*/voidSmart::closeEvent(QCloseEvent*)//關(guān)閉服務(wù)器,自帶關(guān)閉事件{Server.close();Mytcp->exit();}/*
/**函數(shù)名稱:configure(QStringUserName,QStringPasswd,QStringIP,QStringMask,QStringGetway,QStringMac,QStringServerIp)*函數(shù)功能:寫入數(shù)據(jù)庫,查看IP是否配置成功*返回值:空*/
項目實施43修改環(huán)境監(jiān)測功能頭文件和源文件voidSmart::configure(QStringUserName,QStringPasswd,QStringIP,QStringMask,QStringGetway,QStringMac,QStringServerIp){if(sql.SqlQueryCount()==1){if(!sql.SqlAddRecord(UserName,Passwd,IP,Mask,Getway,Mac,ServerIp))//數(shù)據(jù)庫增加記錄log.WriteLog("AddRecordfailure");}項目實施44修改環(huán)境監(jiān)測功能頭文件和源文件elseif(sql.SqlQueryCount()==2)//否則更新數(shù)據(jù)庫{if(!sql.SqlUpdateRecord(UserName,Passwd,IP,Mask,Getway,Mac,ServerIp))log.WriteLog("UpdateRecordfailure");}if(!confg.ConfigureIP())//配置網(wǎng)關(guān)ip{log.WriteLog("ConfigureIPfailure");}elseQProcess::execute(QString("reboot"));//實現(xiàn)重啟}項目實施45修改環(huán)境監(jiān)測功能頭文件和源文件/**函數(shù)名稱:on_btnLinkServer_clicked()*函數(shù)功能:連接服務(wù)器*返回值:空*/voidSmart::on_btnLinkServer_clicked(){Mytcp->start();ui->btnLinkServer->setText("已連接服務(wù)器");}項目實施46修改環(huán)境監(jiān)測功能頭文件和源文件/**函數(shù)名稱:on_btnListen_clicked()*函數(shù)功能:端口監(jiān)聽*返回值:空*/voidSmart::on_btnListe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全生產(chǎn)指導(dǎo)標(biāo)準(zhǔn)試題及答案
- 無人機環(huán)境影響評估試題及答案
- 如何增強團組織的教育引導(dǎo)功能試題及答案
- 新手入門:無人機駕駛員執(zhí)照試題及答案
- 2024年度審計師考試備考建議試題及答案
- 解析CAD工程師認證考試常見問題試題及答案
- 領(lǐng)域新認識的Adobe設(shè)計師試題及答案
- 酒店顧客互動與服務(wù)體驗提升中的策略與實踐研究試題及答案
- 紡織機械工作現(xiàn)場的安全生產(chǎn)管理與風(fēng)險防控策略試題及答案
- 紡織機械高速運轉(zhuǎn)注意事項試題及答案
- 《零售促銷策略》課件
- 美甲店工作分工合同協(xié)議
- 天一大聯(lián)考2024-2025學(xué)年(下)高三第二次四省聯(lián)考★物理+答案
- 法院書記員招聘2023年筆試考試必做題有答案
- 2024年北京大興國際機場臨空經(jīng)濟區(qū)幼兒園招聘教師考試真題
- 《刑法學(xué)課件 》課件各章節(jié)內(nèi)容-第十章 共同犯罪
- 雅禮新苗杯試題及答案
- 2025神農(nóng)科技集團有限公司第一批校園招聘17人(山西)筆試參考題庫附帶答案詳解
- 醫(yī)院地震安全培訓(xùn)
- 2025-2030中國低壓電器行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 2025上海海事大學(xué)輔導(dǎo)員考試題庫
評論
0/150
提交評論