久久精品国产69国产精品亚洲_日韩欧美亚洲一区_免费观看污网站_欧美在线一

    歡迎進入上海陽合供應鏈管理有限公司!
  •  13472705338 

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

    基于C++/Qt的倉儲環境監控客戶端應用設計

      信息來源:   發布時間:2021-10-23  點擊數:

    隨著我國儲運行業的不斷發展和人們對于儲運環節的關注度不斷提高, 安全可靠的監控系統對現代化倉儲管理系統十分必要。隨著多種各樣的監控設備及其安防預警系統這些硬件逐步發展地越來越智能化, 意味著軟件上的設計要同步跟上硬件的發展需求。同時我國的自動化、智能化的檢測水平也在不斷提高, 在這種良好的社會環境下, 基于C++/Qt的倉儲環境監控系統將逐步被廣泛采用, 并將實現普及, 從而將我國的儲運行業的環境監管提高到更安全的標準。

    Qt由奇趣科技在90年代研制的集編輯、編譯、調試與一起的集成開發環境。簡單點說Qt就是設計圖形界面的軟件, 當然它自己本身也是一個圖形界面。由于Qt底層是C++代碼實現, 它不同于C語言, C++是面向對象編程, 相對于C語言面試過程編程, Qt更具有貼近用戶的思想。Qt的優勢在于具有優秀的跨平臺特性、繼承了C++面向對象的程序設計思想、豐富的API接口供應用層調用。跨平臺特性是指Qt支持包括Windows、Linux在內的大部分操作系統;由于Qt底層實質是C++編程, 所以C++具有的面向對象編程思想在Qt編程里能夠得到更好的體現;Qt包含了多達250個以上的C++類庫, 可以這樣說Qt其實就是一個大型的C++函數庫, 這樣豐富的API幾乎可以實現操作人員對界面設計的大部分想法。最重要的一點是Qt是開源的, 這一點對于界面開發者來說是最吸引的, 開源意味著你可以隨時看到底層源碼, 可以更改源碼設計出自己的界面。

    1 倉儲監控系統框架

    1.1 嵌入式的概念

    倉儲監控系統是嵌入式具體應用的方向之一, 嵌入式系統最廣泛的定義為:主要把中心放在貼近用戶的需求, 同時要求以通用PC技術為基礎, 在軟件和硬件的設計上要盡可能的模塊化, 需要更多的應用設計的時候可以擴大其軟硬件的功能;在不需要一些功能的時候可以剪裁部分功能以滿足嵌入式系統的功耗小、體積小的要求。本設計主要在嵌入式硬件基礎上的軟件開發設計。嵌入式發展空間相對較大, 嵌入式系統是當前社會發展必不可少的技術要求, 主要應用在現代化發展地方方面面, 小到我們平常使用的mp3、手機等電子設備, 大到一些汽車電子、工廠設備、航天航空設備。總之, 嵌入式系統與我們平常使用的通用PC系統不一樣, 嵌入式設備更像一個專用計算機系統, 在總的性能方面可能沒有PC機那么強大, 但是在個別功能方面卻比通用PC的性能強大很多。

    1.2 Qt網絡編程機制

    Qt的網絡編程和Windows下的網絡編程機制很相似, 都是基于C/S網絡編程模型。網絡編程套接字是通信端點的一種抽象, 它有兩種形式:流式套接字和數據報文套接字。本實驗采用的是面向連接的流式套接字, 它采用的是傳輸控制協議TCP。如圖1所示, 采用TCP協議的服務器端程序框架圖;如圖2所示是客戶端程序框架圖。

    在概述里我們說到Qt包含了多達250個C++類庫, 在Qt客戶端設計程序里建立和服務器的連接我們需要使用QTcp Socket類。這里我們用到Qt里的信號與槽機制, 信號與槽機制和Windows下的消息機制十分類似, 消息機制是基于回調函數, Qt中用信號與槽來代替函數指針, 使程序安全簡潔。信號與槽機制是Qt的核心機制, 可以讓編程人員將互不關心的對象綁定在一起, 實現對象之間的通信。客戶端在創建和服務器連接之前首先我們需要創建QTcp Socket類的對象socket, 然后通過信號與槽機制的connect函數連接服務器。

    圖1 C/S模型服務器端程序框架圖

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


    圖2 C/S模型客戶器端程序框架圖

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


    1.3 客戶端登錄信息監測

    客戶端程序啟動之前做的任務是和服務器建立連接, 當客戶端連接上服務器之后出現如圖3所示的客戶端登錄界面, 我們在用戶名和密碼的編輯框中輸入信息, 點擊立即登錄后, Qt中的轉到槽機制啟動, 程序會去調用相應的登錄函數, 該函數里主要是把用戶名和密碼欄的信息提取出來, 放在一個自定義結構體中, 在結構體前面加上協議頭發送到服務器。服務器讀取客戶端發送的信息先去提取協議頭出來, 然后判斷消息類型, 如果是登錄請求, 服務器再去把用戶名和密碼信息提取出來。服務器通過和My SQL數據庫中的信息比對來確認登錄信息的正確性。

    數據庫 (DB) 嚴格的說是按照一定的數據結構來管理數據的倉庫, 數據庫的種類有很多, 比如目前流行的My SQL、sqlite等都是數據庫的一種。相對sqlite來說My SQL是比較適合本設計的一種數據庫, 優勢在于My SQL比sqlite更具有完善的服務器數據庫, 功能相比而言更全面, 而sqlite更適合于手機端開發的數據庫。前面我們提取了用戶名和密碼, 將這些信息傳入到我們編寫的一個API函數里, 函數內部主要調用了一些My SQL語句來檢測信息在不在數據庫中。如果用戶信息在服務器的數據庫中, 則Qt界面就會跳轉到控制臺控制界面。

    圖3 監控系統客戶端登錄界面

    圖3 監控系統客戶端登錄界面   下載原圖


    1.4 Qt的多線程實現多任務并發設計

    客戶端控制臺界面起來后相當于一個主程序, 獨立運行的主程序也叫進程, 這個主進程在運行的時候可以拆分多個不同的執行路徑, 每個路徑嚴格上應該稱為線程, 每個線程都是相對獨立的, 一個線程崩潰不會影響到其他進程甚至是主進程的運行。如今任何一個系統都是多線程或者多進程設計的, 由于多進程設計的程序在系統調度和資源回收上要占用太多的CPU, 所以想對于多進程設計的客戶端, 多線程設計的客戶端很少產生卡頓甚至死機的情況。如今的軟件設計行業已經很多是單進程處理任務事件了。單進程意味著你在接收圖片信息的同時不能去發送控制室內設備的命令了, 這在現實監控客戶端應用來說是難以想象的。

    Qt的C++類庫提供了一些線程相關的類, 本程序中我們使用的是QThread類, 它提供了開始一個新線程的方法。如圖4所示是控制臺控制界面, 此界面采用的是信號與槽機制中最簡單的轉到槽機制, 通俗的來說當我們點擊任何一個按鈕時, 此機制就會運行該按鈕對應的槽函數。

    圖4 監控系統客戶端控制界面

    圖4 監控系統客戶端控制界面   下載原圖


    控制臺界面中主程序負責向服務器發送獲取溫濕度和光照度的請求。此外, 當點擊控制界面開始錄制的按鈕時, Qt的信號與槽機制啟動與此相關的槽函數, 在這個槽函數里我們開辟一個新線程用于錄制視頻信息保存到電腦上位機中。Qt創建一個新線程其實很簡單, 首先我們需要通過QThread類創建一個對象, 與此同時, 需要重寫編寫里面的run () 函數, 程序示例如下:



    接著需要建立上面線程實例對象, 這時需要調用QThread::start () 函數。程序執行到start () 函數時, 創建的新的線程就會去執行run () 函數。在run函數中, 我們實現的就是保存視頻圖片的操作代碼。正是因為線程的特點, 本設計才可以在保存視頻圖片的同時還可以去做其他任務, 比如我們可以在保存信息的同時可以向服務器發送控制LED燈開的命令, 服務器通過Zig Bee協議向室內終端發送LED燈開控制命令。當保存視頻圖像的線程崩潰了并不會影響客戶端向服務器發送控制命令。

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

    QMutex, QRead Write Lcok等是用于同步線程的類庫。同步簡單點說就是任務執行的需要按照設定好的流程來執行, 就像我們走路一樣邁完左腳邁右腳, 不可能邁完左腳后還邁左腳, 這樣一來我們右腳一直不動, 是不可能完成任務設定的要求的。我們在程序中使用線程主要是用來控制多個任務并發的執行, 所以控制多個任務執行的順序即我們需要控制的同步。假如兩個不同的線程同時訪問一個全局變量 (線程通信的方式之一) , 這個時候問題就產生了, 線程一在執行過程中使用這個全局變量, 而線程二在線程一執行過程中去更改該全局變量在內存中的變量值, 線程一會前后使用的值不一樣會造成程序崩潰。所以我們需要上面的控制線程同步的類來實現整個進程安全高效的運行。

    2 模型應用與分析

    圖5 監控系統項目框架圖

    圖5 監控系統項目框架圖   下載原圖


    整個項目框架圖如圖5所示, 用戶登錄時向服務器發送登錄用戶名和密碼, 服務器調用My SQL接口檢測用戶名和密碼是否正確, 成功則登錄界面會關閉, 控制臺界面會展現出來。控制臺界面布滿顯示倉儲環境的控制按鈕, 通過點擊相應的Button向服務器發送控制室內換氣扇、LED開關的命令, 同時客戶端控制臺界面還可以獲取室內溫濕度和光照度的信息顯示到控制臺相應的QLine Edit類的對象中。線程一、二分別向服務器獲取圖片視頻和保存圖片視頻信息到本地備份。

    通過具體的模型分析與設計應用, 該客戶端在電腦上位機中可以正常運行, 本設計的不足之處在于客戶端的局限性只能在電腦上運行。要實現隨時隨地的去監控倉儲環境信息我們需要利用Qt的Webkit集成與Qt Network模塊, Qt Webkit模塊使得Qt widget能夠通過HTML的object標簽加入到web頁面中, 并通過Java Script代碼進行訪問, 而Qt對象也能相應的訪問web頁面元素。

    3 結束語

    本文就目前熱門的倉儲環境監控系統提供了一種客戶端設計方案。考慮到單進程系統在運行和調度的局限性, 這里我們采用了多線程設計客戶端, 很大程度上提高了客戶端在與服務器交互過程中的實時性和高效性。通過移植My SQL數據庫來檢測用戶登錄信息的正確性, 保證了整個監控系統的安全性和可控性。鑒于本設計主要闡述了客戶端的設計和應用細節, 所以對服務終端只提及了少量和客戶端交互的協議和過程, 這里是本文的有待改進之處。這里我們基本實現了一個監控系統所具備的所有因素要求, 獲取視頻代碼實現就是每一秒中向服務器申請十張圖片的信息, 能夠實時快速的對倉儲環境的變化做出應對, 保證了整個嵌入式系統穩定高效的運行。

    權所有©:上海陽合儲運
    專業承接上海倉庫租賃、上海倉儲配送物流、上海電商倉儲企業服務與微笑同在"的先進理念不斷發展壯大。 

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