張志成+錢慧芳+程誠
摘要:基于C++/Qt的倉儲環(huán)境監(jiān)控系統(tǒng)近年來在倉儲環(huán)境監(jiān)測領(lǐng)域發(fā)揮著越來越重要的作用。該文使用Qt的多線程編程實(shí)現(xiàn)了監(jiān)控系統(tǒng)的圖形用戶界面的設(shè)計(jì),多線程設(shè)計(jì)在任務(wù)并發(fā)執(zhí)行的操作系統(tǒng)中是不可或缺的,它通過宏觀并行,微觀串行來實(shí)現(xiàn)多任務(wù)并發(fā)。嵌入式系統(tǒng)中圖形用戶界面使操作人員在不必理解嵌入式底層實(shí)現(xiàn)的條件下更好去操作一些嵌入式設(shè)備。該文還移植了MySQL數(shù)據(jù)庫,通過檢測登錄的信息大大提升了嵌入式系統(tǒng)設(shè)計(jì)的安全性。
關(guān)鍵詞:嵌入式;Qt;多線程;數(shù)據(jù)庫
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)26-0056-03
Abstract: The storage environment surveillance system Based on C++/Qt has played an increasingly important role in the storage environment in recent years.This article uses Qt multithreaded programming to realize the monitoring and control system for the design of the graphical user interface, multi-threaded design in task concurrently operating system is indispensable, it through macro parallel, microscopic serial to implement multitasking concurrency.The graphical user interface in embedded system enables operators to manipulate embedded devices better without having to understand the embedded underlying implementation.This paper also ported MySQL database, which greatly enhanced the security of embedded system design by detecting the login information.
Key words:the embedded system;Qt;multithreading;database
隨著我國儲運(yùn)行業(yè)的不斷發(fā)展和人們對于儲運(yùn)環(huán)節(jié)的關(guān)注度不斷提高,安全可靠的監(jiān)控系統(tǒng)對現(xiàn)代化倉儲管理系統(tǒng)十分必要。隨著多種各樣的監(jiān)控設(shè)備及其安防預(yù)警系統(tǒng)這些硬件逐步發(fā)展地越來越智能化,意味著軟件上的設(shè)計(jì)要同步跟上硬件的發(fā)展需求。同時(shí)我國的自動化、智能化的檢測水平也在不斷提高,在這種良好的社會環(huán)境下,基于C++/Qt的倉儲環(huán)境監(jiān)控系統(tǒng)將逐步被廣泛采用,并將實(shí)現(xiàn)普及,從而將我國的儲運(yùn)行業(yè)的環(huán)境監(jiān)管提高到更安全的標(biāo)準(zhǔn)。
Qt由奇趣科技在90年代研制的集編輯、編譯、調(diào)試與一起的集成開發(fā)環(huán)境。簡單點(diǎn)說Qt就是設(shè)計(jì)圖形界面的軟件,當(dāng)然它自己本身也是一個(gè)圖形界面。由于Qt底層是C++代碼實(shí)現(xiàn),它不同于C語言,C++是面向?qū)ο缶幊蹋鄬τ贑語言面試過程編程,Qt更具有貼近用戶的思想。Qt的優(yōu)勢在于具有優(yōu)秀的跨平臺特性、繼承了C++面向?qū)ο蟮某绦蛟O(shè)計(jì)思想、豐富的API接口供應(yīng)用層調(diào)用。跨平臺特性是指Qt支持包括Windows、Linux在內(nèi)的大部分操作系統(tǒng);由于Qt底層實(shí)質(zhì)是C++編程,所以C++具有的面向?qū)ο缶幊趟枷朐赒t編程里能夠得到更好的體現(xiàn);Qt包含了多達(dá)250個(gè)以上的C++類庫,可以這樣說Qt其實(shí)就是一個(gè)大型的C++函數(shù)庫,這樣豐富的API幾乎可以實(shí)現(xiàn)操作人員對界面設(shè)計(jì)的大部分想法。最重要的一點(diǎn)是Qt是開源的,這一點(diǎn)對于界面開發(fā)者來說是最吸引的,開源意味著你可以隨時(shí)看到底層源碼,可以更改源碼設(shè)計(jì)出自己的界面。
1 倉儲監(jiān)控系統(tǒng)框架
1.1 嵌入式的概念
倉儲監(jiān)控系統(tǒng)是嵌入式具體應(yīng)用的方向之一,嵌入式系統(tǒng)最廣泛的定義為:主要把中心放在貼近用戶的需求,同時(shí)要求以通用PC技術(shù)為基礎(chǔ),在軟件和硬件的設(shè)計(jì)上要盡可能的模塊化,需要更多的應(yīng)用設(shè)計(jì)的時(shí)候可以擴(kuò)大其軟硬件的功能;在不需要一些功能的時(shí)候可以剪裁部分功能以滿足嵌入式系統(tǒng)的功耗小、體積小的要求。本設(shè)計(jì)主要在嵌入式硬件基礎(chǔ)上的軟件開發(fā)設(shè)計(jì)。嵌入式發(fā)展空間相對較大,嵌入式系統(tǒng)是當(dāng)前社會發(fā)展必不可少的技術(shù)要求,主要應(yīng)用在現(xiàn)代化發(fā)展地方方面面,小到我們平常使用的mp3、手機(jī)等電子設(shè)備,大到一些汽車電子、工廠設(shè)備、航天航空設(shè)備??傊度胧较到y(tǒng)與我們平常使用的通用PC系統(tǒng)不一樣,嵌入式設(shè)備更像一個(gè)專用計(jì)算機(jī)系統(tǒng),在總的性能方面可能沒有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所示是客戶端程序框架圖。
在概述里我們說到Qt包含了多達(dá)250個(gè)C++類庫,在Qt客戶端設(shè)計(jì)程序里建立和服務(wù)器的連接我們需要使用QTcpSocket類。這里我們用到Qt里的信號與槽機(jī)制,信號與槽機(jī)制和Windows下的消息機(jī)制十分類似,消息機(jī)制是基于回調(diào)函數(shù),Qt中用信號與槽來代替函數(shù)指針,使程序安全簡潔。信號與槽機(jī)制是Qt的核心機(jī)制,可以讓編程人員將互不關(guān)心的對象綁定在一起,實(shí)現(xiàn)對象之間的通信。客戶端在創(chuàng)建和服務(wù)器連接之前首先我們需要創(chuàng)建QTcpSocket類的對象socket,然后通過信號與槽機(jī)制的connect函數(shù)連接服務(wù)器。endprint