小雪你好紧好烫好爽_k频道导航入口国产精品_91成人爽a毛片一区二区_羞羞漫画入口在线观看

    歡迎進(jìn)入上海陽(yáng)合供應(yīng)鏈管理有限公司!
  •  13472705338 

  • “視聽(tīng)+云倉(cāng)儲(chǔ)+精準(zhǔn)扶貧”電商模式的脫貧經(jīng)驗(yàn)探討
  • 倉(cāng)儲(chǔ)型物流企業(yè)的經(jīng)營(yíng)模式創(chuàng)新
  • 現(xiàn)代倉(cāng)儲(chǔ)管理中條形碼技術(shù)的運(yùn)用
  • 基于IOS平臺(tái)的小型倉(cāng)儲(chǔ)管理系統(tǒng)設(shè)計(jì)
  • 用6S管理注入倉(cāng)儲(chǔ)管理系統(tǒng)內(nèi)涵推升倉(cāng)儲(chǔ)運(yùn)營(yíng)水準(zhǔn)
  • 基于第三方物流的倉(cāng)儲(chǔ)成本控制研究
  • 物流公司倉(cāng)儲(chǔ)管理案例分析
  • 第三方物流企業(yè)倉(cāng)儲(chǔ)貨位系統(tǒng)優(yōu)化分析
  • 鄭州航空物流倉(cāng)儲(chǔ)合理化研究
  • 新形勢(shì)下深化完善國(guó)有糧食倉(cāng)儲(chǔ)企業(yè)內(nèi)控機(jī)制的實(shí)踐與思考
  • 企業(yè)智能倉(cāng)儲(chǔ)作業(yè)流程分析——以徐州新沂百世云倉(cāng)公司為例
  • 醫(yī)藥物流邁向云倉(cāng)多倉(cāng)聯(lián)動(dòng)
  • RFID技術(shù)在銅仁地區(qū)煙草倉(cāng)儲(chǔ)物流管理系統(tǒng)中的應(yīng)用
  • 淺談糧情測(cè)控遠(yuǎn)程監(jiān)管系統(tǒng)在倉(cāng)儲(chǔ)管理中的應(yīng)用
  • 淺談石油物資倉(cāng)儲(chǔ)管理部門(mén)入庫(kù)驗(yàn)收管理
  • 多層倉(cāng)儲(chǔ)式數(shù)據(jù)中心建筑設(shè)計(jì)研究
  • 煙葉倉(cāng)儲(chǔ)害蟲(chóng)綜合治理研究進(jìn)展
  • 無(wú)線(xiàn)智能倉(cāng)儲(chǔ)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  • 靜電粉末與殺蟲(chóng)劑混用對(duì)倉(cāng)儲(chǔ)甲蟲(chóng)的殺蟲(chóng)效果及谷物品質(zhì)的影響
  • 關(guān)于云計(jì)算技術(shù)物聯(lián)網(wǎng)倉(cāng)儲(chǔ)管理系統(tǒng)設(shè)計(jì)
  • 當(dāng)前位置:首頁(yè) >>   新聞資訊新聞資訊

    基于C++/Qt的倉(cāng)儲(chǔ)環(huán)境監(jiān)控客戶(hù)端應(yīng)用設(shè)計(jì)

      信息來(lái)源:   發(fā)布時(shí)間:2021-10-23  點(diǎn)擊數(shù):

    隨著我國(guó)儲(chǔ)運(yùn)行業(yè)的不斷發(fā)展和人們對(duì)于儲(chǔ)運(yùn)環(huán)節(jié)的關(guān)注度不斷提高, 安全可靠的監(jiān)控系統(tǒng)對(duì)現(xiàn)代化倉(cāng)儲(chǔ)管理系統(tǒng)十分必要。隨著多種各樣的監(jiān)控設(shè)備及其安防預(yù)警系統(tǒng)這些硬件逐步發(fā)展地越來(lái)越智能化, 意味著軟件上的設(shè)計(jì)要同步跟上硬件的發(fā)展需求。同時(shí)我國(guó)的自動(dòng)化、智能化的檢測(cè)水平也在不斷提高, 在這種良好的社會(huì)環(huán)境下, 基于C++/Qt的倉(cāng)儲(chǔ)環(huán)境監(jiān)控系統(tǒng)將逐步被廣泛采用, 并將實(shí)現(xiàn)普及, 從而將我國(guó)的儲(chǔ)運(yùn)行業(yè)的環(huán)境監(jiān)管提高到更安全的標(biāo)準(zhǔn)。

    Qt由奇趣科技在90年代研制的集編輯、編譯、調(diào)試與一起的集成開(kāi)發(fā)環(huán)境。簡(jiǎn)單點(diǎn)說(shuō)Qt就是設(shè)計(jì)圖形界面的軟件, 當(dāng)然它自己本身也是一個(gè)圖形界面。由于Qt底層是C++代碼實(shí)現(xiàn), 它不同于C語(yǔ)言, C++是面向?qū)ο缶幊? 相對(duì)于C語(yǔ)言面試過(guò)程編程, Qt更具有貼近用戶(hù)的思想。Qt的優(yōu)勢(shì)在于具有優(yōu)秀的跨平臺(tái)特性、繼承了C++面向?qū)ο蟮某绦蛟O(shè)計(jì)思想、豐富的API接口供應(yīng)用層調(diào)用。跨平臺(tái)特性是指Qt支持包括Windows、Linux在內(nèi)的大部分操作系統(tǒng);由于Qt底層實(shí)質(zhì)是C++編程, 所以C++具有的面向?qū)ο缶幊趟枷朐赒t編程里能夠得到更好的體現(xiàn);Qt包含了多達(dá)250個(gè)以上的C++類(lèi)庫(kù), 可以這樣說(shuō)Qt其實(shí)就是一個(gè)大型的C++函數(shù)庫(kù), 這樣豐富的API幾乎可以實(shí)現(xiàn)操作人員對(duì)界面設(shè)計(jì)的大部分想法。最重要的一點(diǎn)是Qt是開(kāi)源的, 這一點(diǎn)對(duì)于界面開(kāi)發(fā)者來(lái)說(shuō)是最吸引的, 開(kāi)源意味著你可以隨時(shí)看到底層源碼, 可以更改源碼設(shè)計(jì)出自己的界面。

    1 倉(cāng)儲(chǔ)監(jiān)控系統(tǒng)框架

    1.1 嵌入式的概念

    倉(cāng)儲(chǔ)監(jiān)控系統(tǒng)是嵌入式具體應(yīng)用的方向之一, 嵌入式系統(tǒng)最廣泛的定義為:主要把中心放在貼近用戶(hù)的需求, 同時(shí)要求以通用PC技術(shù)為基礎(chǔ), 在軟件和硬件的設(shè)計(jì)上要盡可能的模塊化, 需要更多的應(yīng)用設(shè)計(jì)的時(shí)候可以擴(kuò)大其軟硬件的功能;在不需要一些功能的時(shí)候可以剪裁部分功能以滿(mǎn)足嵌入式系統(tǒng)的功耗小、體積小的要求。本設(shè)計(jì)主要在嵌入式硬件基礎(chǔ)上的軟件開(kāi)發(fā)設(shè)計(jì)。嵌入式發(fā)展空間相對(duì)較大, 嵌入式系統(tǒng)是當(dāng)前社會(huì)發(fā)展必不可少的技術(shù)要求, 主要應(yīng)用在現(xiàn)代化發(fā)展地方方面面, 小到我們平常使用的mp3、手機(jī)等電子設(shè)備, 大到一些汽車(chē)電子、工廠設(shè)備、航天航空設(shè)備。總之, 嵌入式系統(tǒng)與我們平常使用的通用PC系統(tǒng)不一樣, 嵌入式設(shè)備更像一個(gè)專(zhuān)用計(jì)算機(jī)系統(tǒng), 在總的性能方面可能沒(méi)有PC機(jī)那么強(qiáng)大, 但是在個(gè)別功能方面卻比通用PC的性能強(qiáng)大很多。

    1.2 Qt網(wǎng)絡(luò)編程機(jī)制

    Qt的網(wǎng)絡(luò)編程和Windows下的網(wǎng)絡(luò)編程機(jī)制很相似, 都是基于C/S網(wǎng)絡(luò)編程模型。網(wǎng)絡(luò)編程套接字是通信端點(diǎn)的一種抽象, 它有兩種形式:流式套接字和數(shù)據(jù)報(bào)文套接字。本實(shí)驗(yàn)采用的是面向連接的流式套接字, 它采用的是傳輸控制協(xié)議TCP。如圖1所示, 采用TCP協(xié)議的服務(wù)器端程序框架圖;如圖2所示是客戶(hù)端程序框架圖。

    在概述里我們說(shuō)到Qt包含了多達(dá)250個(gè)C++類(lèi)庫(kù), 在Qt客戶(hù)端設(shè)計(jì)程序里建立和服務(wù)器的連接我們需要使用QTcp Socket類(lèi)。這里我們用到Qt里的信號(hào)與槽機(jī)制, 信號(hào)與槽機(jī)制和Windows下的消息機(jī)制十分類(lèi)似, 消息機(jī)制是基于回調(diào)函數(shù), Qt中用信號(hào)與槽來(lái)代替函數(shù)指針, 使程序安全簡(jiǎn)潔。信號(hào)與槽機(jī)制是Qt的核心機(jī)制, 可以讓編程人員將互不關(guān)心的對(duì)象綁定在一起, 實(shí)現(xiàn)對(duì)象之間的通信。客戶(hù)端在創(chuàng)建和服務(wù)器連接之前首先我們需要?jiǎng)?chuàng)建QTcp Socket類(lèi)的對(duì)象socket, 然后通過(guò)信號(hào)與槽機(jī)制的connect函數(shù)連接服務(wù)器。

    圖1 C/S模型服務(wù)器端程序框架圖

    圖1 C/S模型服務(wù)器端程序框架圖   下載原圖


    圖2 C/S模型客戶(hù)器端程序框架圖

    圖2 C/S模型客戶(hù)器端程序框架圖   下載原圖


    1.3 客戶(hù)端登錄信息監(jiān)測(cè)

    客戶(hù)端程序啟動(dòng)之前做的任務(wù)是和服務(wù)器建立連接, 當(dāng)客戶(hù)端連接上服務(wù)器之后出現(xiàn)如圖3所示的客戶(hù)端登錄界面, 我們?cè)谟脩?hù)名和密碼的編輯框中輸入信息, 點(diǎn)擊立即登錄后, Qt中的轉(zhuǎn)到槽機(jī)制啟動(dòng), 程序會(huì)去調(diào)用相應(yīng)的登錄函數(shù), 該函數(shù)里主要是把用戶(hù)名和密碼欄的信息提取出來(lái), 放在一個(gè)自定義結(jié)構(gòu)體中, 在結(jié)構(gòu)體前面加上協(xié)議頭發(fā)送到服務(wù)器。服務(wù)器讀取客戶(hù)端發(fā)送的信息先去提取協(xié)議頭出來(lái), 然后判斷消息類(lèi)型, 如果是登錄請(qǐng)求, 服務(wù)器再去把用戶(hù)名和密碼信息提取出來(lái)。服務(wù)器通過(guò)和My SQL數(shù)據(jù)庫(kù)中的信息比對(duì)來(lái)確認(rèn)登錄信息的正確性。

    數(shù)據(jù)庫(kù) (DB) 嚴(yán)格的說(shuō)是按照一定的數(shù)據(jù)結(jié)構(gòu)來(lái)管理數(shù)據(jù)的倉(cāng)庫(kù), 數(shù)據(jù)庫(kù)的種類(lèi)有很多, 比如目前流行的My SQL、sqlite等都是數(shù)據(jù)庫(kù)的一種。相對(duì)sqlite來(lái)說(shuō)My SQL是比較適合本設(shè)計(jì)的一種數(shù)據(jù)庫(kù), 優(yōu)勢(shì)在于My SQL比sqlite更具有完善的服務(wù)器數(shù)據(jù)庫(kù), 功能相比而言更全面, 而sqlite更適合于手機(jī)端開(kāi)發(fā)的數(shù)據(jù)庫(kù)。前面我們提取了用戶(hù)名和密碼, 將這些信息傳入到我們編寫(xiě)的一個(gè)API函數(shù)里, 函數(shù)內(nèi)部主要調(diào)用了一些My SQL語(yǔ)句來(lái)檢測(cè)信息在不在數(shù)據(jù)庫(kù)中。如果用戶(hù)信息在服務(wù)器的數(shù)據(jù)庫(kù)中, 則Qt界面就會(huì)跳轉(zhuǎn)到控制臺(tái)控制界面。

    圖3 監(jiān)控系統(tǒng)客戶(hù)端登錄界面

    圖3 監(jiān)控系統(tǒng)客戶(hù)端登錄界面   下載原圖


    1.4 Qt的多線(xiàn)程實(shí)現(xiàn)多任務(wù)并發(fā)設(shè)計(jì)

    客戶(hù)端控制臺(tái)界面起來(lái)后相當(dāng)于一個(gè)主程序, 獨(dú)立運(yùn)行的主程序也叫進(jìn)程, 這個(gè)主進(jìn)程在運(yùn)行的時(shí)候可以拆分多個(gè)不同的執(zhí)行路徑, 每個(gè)路徑嚴(yán)格上應(yīng)該稱(chēng)為線(xiàn)程, 每個(gè)線(xiàn)程都是相對(duì)獨(dú)立的, 一個(gè)線(xiàn)程崩潰不會(huì)影響到其他進(jìn)程甚至是主進(jìn)程的運(yùn)行。如今任何一個(gè)系統(tǒng)都是多線(xiàn)程或者多進(jìn)程設(shè)計(jì)的, 由于多進(jìn)程設(shè)計(jì)的程序在系統(tǒng)調(diào)度和資源回收上要占用太多的CPU, 所以想對(duì)于多進(jìn)程設(shè)計(jì)的客戶(hù)端, 多線(xiàn)程設(shè)計(jì)的客戶(hù)端很少產(chǎn)生卡頓甚至死機(jī)的情況。如今的軟件設(shè)計(jì)行業(yè)已經(jīng)很多是單進(jìn)程處理任務(wù)事件了。單進(jìn)程意味著你在接收?qǐng)D片信息的同時(shí)不能去發(fā)送控制室內(nèi)設(shè)備的命令了, 這在現(xiàn)實(shí)監(jiān)控客戶(hù)端應(yīng)用來(lái)說(shuō)是難以想象的。

    Qt的C++類(lèi)庫(kù)提供了一些線(xiàn)程相關(guān)的類(lèi), 本程序中我們使用的是QThread類(lèi), 它提供了開(kāi)始一個(gè)新線(xiàn)程的方法。如圖4所示是控制臺(tái)控制界面, 此界面采用的是信號(hào)與槽機(jī)制中最簡(jiǎn)單的轉(zhuǎn)到槽機(jī)制, 通俗的來(lái)說(shuō)當(dāng)我們點(diǎn)擊任何一個(gè)按鈕時(shí), 此機(jī)制就會(huì)運(yùn)行該按鈕對(duì)應(yīng)的槽函數(shù)。

    圖4 監(jiān)控系統(tǒng)客戶(hù)端控制界面

    圖4 監(jiān)控系統(tǒng)客戶(hù)端控制界面   下載原圖


    控制臺(tái)界面中主程序負(fù)責(zé)向服務(wù)器發(fā)送獲取溫濕度和光照度的請(qǐng)求。此外, 當(dāng)點(diǎn)擊控制界面開(kāi)始錄制的按鈕時(shí), Qt的信號(hào)與槽機(jī)制啟動(dòng)與此相關(guān)的槽函數(shù), 在這個(gè)槽函數(shù)里我們開(kāi)辟一個(gè)新線(xiàn)程用于錄制視頻信息保存到電腦上位機(jī)中。Qt創(chuàng)建一個(gè)新線(xiàn)程其實(shí)很簡(jiǎn)單, 首先我們需要通過(guò)QThread類(lèi)創(chuàng)建一個(gè)對(duì)象, 與此同時(shí), 需要重寫(xiě)編寫(xiě)里面的run () 函數(shù), 程序示例如下:



    接著需要建立上面線(xiàn)程實(shí)例對(duì)象, 這時(shí)需要調(diào)用QThread::start () 函數(shù)。程序執(zhí)行到start () 函數(shù)時(shí), 創(chuàng)建的新的線(xiàn)程就會(huì)去執(zhí)行run () 函數(shù)。在run函數(shù)中, 我們實(shí)現(xiàn)的就是保存視頻圖片的操作代碼。正是因?yàn)榫€(xiàn)程的特點(diǎn), 本設(shè)計(jì)才可以在保存視頻圖片的同時(shí)還可以去做其他任務(wù), 比如我們可以在保存信息的同時(shí)可以向服務(wù)器發(fā)送控制LED燈開(kāi)的命令, 服務(wù)器通過(guò)Zig Bee協(xié)議向室內(nèi)終端發(fā)送LED燈開(kāi)控制命令。當(dāng)保存視頻圖像的線(xiàn)程崩潰了并不會(huì)影響客戶(hù)端向服務(wù)器發(fā)送控制命令。

    本GUI界面程序中我們使用了兩個(gè)線(xiàn)程, 第一個(gè)線(xiàn)程就是上述的保存視頻圖片的線(xiàn)程, 第二個(gè)線(xiàn)程我們創(chuàng)建用于獲取服務(wù)器端發(fā)送來(lái)的圖片信息之后通過(guò)QPixmap類(lèi)將圖片顯示到視頻加載框中。多線(xiàn)程并發(fā)執(zhí)行是可以提高CPU運(yùn)行效率, 但凡事都有利弊, 帶來(lái)便利的同時(shí), 如何控制線(xiàn)程間的同步就是需要解決的問(wèn)題之一。

    QMutex, QRead Write Lcok等是用于同步線(xiàn)程的類(lèi)庫(kù)。同步簡(jiǎn)單點(diǎn)說(shuō)就是任務(wù)執(zhí)行的需要按照設(shè)定好的流程來(lái)執(zhí)行, 就像我們走路一樣邁完左腳邁右腳, 不可能邁完左腳后還邁左腳, 這樣一來(lái)我們右腳一直不動(dòng), 是不可能完成任務(wù)設(shè)定的要求的。我們?cè)诔绦蛑惺褂镁€(xiàn)程主要是用來(lái)控制多個(gè)任務(wù)并發(fā)的執(zhí)行, 所以控制多個(gè)任務(wù)執(zhí)行的順序即我們需要控制的同步。假如兩個(gè)不同的線(xiàn)程同時(shí)訪問(wèn)一個(gè)全局變量 (線(xiàn)程通信的方式之一) , 這個(gè)時(shí)候問(wèn)題就產(chǎn)生了, 線(xiàn)程一在執(zhí)行過(guò)程中使用這個(gè)全局變量, 而線(xiàn)程二在線(xiàn)程一執(zhí)行過(guò)程中去更改該全局變量在內(nèi)存中的變量值, 線(xiàn)程一會(huì)前后使用的值不一樣會(huì)造成程序崩潰。所以我們需要上面的控制線(xiàn)程同步的類(lèi)來(lái)實(shí)現(xiàn)整個(gè)進(jìn)程安全高效的運(yùn)行。

    2 模型應(yīng)用與分析

    圖5 監(jiān)控系統(tǒng)項(xiàng)目框架圖

    圖5 監(jiān)控系統(tǒng)項(xiàng)目框架圖   下載原圖


    整個(gè)項(xiàng)目框架圖如圖5所示, 用戶(hù)登錄時(shí)向服務(wù)器發(fā)送登錄用戶(hù)名和密碼, 服務(wù)器調(diào)用My SQL接口檢測(cè)用戶(hù)名和密碼是否正確, 成功則登錄界面會(huì)關(guān)閉, 控制臺(tái)界面會(huì)展現(xiàn)出來(lái)。控制臺(tái)界面布滿(mǎn)顯示倉(cāng)儲(chǔ)環(huán)境的控制按鈕, 通過(guò)點(diǎn)擊相應(yīng)的Button向服務(wù)器發(fā)送控制室內(nèi)換氣扇、LED開(kāi)關(guān)的命令, 同時(shí)客戶(hù)端控制臺(tái)界面還可以獲取室內(nèi)溫濕度和光照度的信息顯示到控制臺(tái)相應(yīng)的QLine Edit類(lèi)的對(duì)象中。線(xiàn)程一、二分別向服務(wù)器獲取圖片視頻和保存圖片視頻信息到本地備份。

    通過(guò)具體的模型分析與設(shè)計(jì)應(yīng)用, 該客戶(hù)端在電腦上位機(jī)中可以正常運(yùn)行, 本設(shè)計(jì)的不足之處在于客戶(hù)端的局限性只能在電腦上運(yùn)行。要實(shí)現(xiàn)隨時(shí)隨地的去監(jiān)控倉(cāng)儲(chǔ)環(huán)境信息我們需要利用Qt的Webkit集成與Qt Network模塊, Qt Webkit模塊使得Qt widget能夠通過(guò)HTML的object標(biāo)簽加入到web頁(yè)面中, 并通過(guò)Java Script代碼進(jìn)行訪問(wèn), 而Qt對(duì)象也能相應(yīng)的訪問(wèn)web頁(yè)面元素。

    3 結(jié)束語(yǔ)

    本文就目前熱門(mén)的倉(cāng)儲(chǔ)環(huán)境監(jiān)控系統(tǒng)提供了一種客戶(hù)端設(shè)計(jì)方案。考慮到單進(jìn)程系統(tǒng)在運(yùn)行和調(diào)度的局限性, 這里我們采用了多線(xiàn)程設(shè)計(jì)客戶(hù)端, 很大程度上提高了客戶(hù)端在與服務(wù)器交互過(guò)程中的實(shí)時(shí)性和高效性。通過(guò)移植My SQL數(shù)據(jù)庫(kù)來(lái)檢測(cè)用戶(hù)登錄信息的正確性, 保證了整個(gè)監(jiān)控系統(tǒng)的安全性和可控性。鑒于本設(shè)計(jì)主要闡述了客戶(hù)端的設(shè)計(jì)和應(yīng)用細(xì)節(jié), 所以對(duì)服務(wù)終端只提及了少量和客戶(hù)端交互的協(xié)議和過(guò)程, 這里是本文的有待改進(jìn)之處。這里我們基本實(shí)現(xiàn)了一個(gè)監(jiān)控系統(tǒng)所具備的所有因素要求, 獲取視頻代碼實(shí)現(xiàn)就是每一秒中向服務(wù)器申請(qǐng)十張圖片的信息, 能夠?qū)崟r(shí)快速的對(duì)倉(cāng)儲(chǔ)環(huán)境的變化做出應(yīng)對(duì), 保證了整個(gè)嵌入式系統(tǒng)穩(wěn)定高效的運(yùn)行。

    權(quán)所有©:上海陽(yáng)合儲(chǔ)運(yùn)
    專(zhuān)業(yè)承接上海倉(cāng)庫(kù)租賃、上海倉(cāng)儲(chǔ)配送物流、上海電商倉(cāng)儲(chǔ)企業(yè)服務(wù)與微笑同在"的先進(jìn)理念不斷發(fā)展壯大。 

    友情鏈接: 消防車(chē)  分析儀器  北京拓展訓(xùn)練    雞排加盟   恒溫振蕩器  別墅泳池設(shè)備  外貿(mào)論壇    檔案管理系統(tǒng)    酒精測(cè)試儀    旋轉(zhuǎn)火鍋設(shè)備  假山制作   煙臺(tái)裝修  地坪漆    實(shí)心輪胎   垃圾車(chē) 位移傳感器     貨運(yùn)管理軟件   鋼制暖氣片  濟(jì)南雕刻機(jī)  羅斯蒙特3051  影像測(cè)量?jī)x
       食品級(jí)軟管     鶴管    三相電表   AGV叉車(chē)  切削液  有限元分析
    機(jī)房監(jiān)控   數(shù)控銑床  原子熒光光譜儀   移動(dòng)廁所
    滬公網(wǎng)安備 31011402008344號(hào) 滬ICP備14036201號(hào)-32