張志成+錢(qián)慧芳+程誠(chéng)
摘要:基于C++/Qt的倉(cāng)儲(chǔ)環(huán)境監(jiān)控系統(tǒng)近年來(lái)在倉(cāng)儲(chǔ)環(huán)境監(jiān)測(cè)領(lǐng)域發(fā)揮著越來(lái)越重要的作用。該文使用Qt的多線程編程實(shí)現(xiàn)了監(jiān)控系統(tǒng)的圖形用戶界面的設(shè)計(jì),多線程設(shè)計(jì)在任務(wù)并發(fā)執(zhí)行的操作系統(tǒng)中是不可或缺的,它通過(guò)宏觀并行,微觀串行來(lái)實(shí)現(xiàn)多任務(wù)并發(fā)。嵌入式系統(tǒng)中圖形用戶界面使操作人員在不必理解嵌入式底層實(shí)現(xiàn)的條件下更好去操作一些嵌入式設(shè)備。該文還移植了MySQL數(shù)據(jù)庫(kù),通過(guò)檢測(cè)登錄的信息大大提升了嵌入式系統(tǒng)設(shè)計(jì)的安全性。
關(guān)鍵詞:嵌入式;Qt;多線程;數(shù)據(jù)庫(kù)
中圖分類(lèi)號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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
隨著我國(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更具有貼近用戶的思想。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)最廣泛的定義為:主要把中心放在貼近用戶的需求,同時(shí)要求以通用PC技術(shù)為基礎(chǔ),在軟件和硬件的設(shè)計(jì)上要盡可能的模塊化,需要更多的應(yīng)用設(shè)計(jì)的時(shí)候可以擴(kuò)大其軟硬件的功能;在不需要一些功能的時(shí)候可以剪裁部分功能以滿足嵌入式系統(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è)專用計(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所示是客戶端程序框架圖。
在概述里我們說(shuō)到Qt包含了多達(dá)250個(gè)C++類(lèi)庫(kù),在Qt客戶端設(shè)計(jì)程序里建立和服務(wù)器的連接我們需要使用QTcpSocket類(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ì)象之間的通信??蛻舳嗽趧?chuàng)建和服務(wù)器連接之前首先我們需要?jiǎng)?chuàng)建QTcpSocket類(lèi)的對(duì)象socket,然后通過(guò)信號(hào)與槽機(jī)制的connect函數(shù)連接服務(wù)器。endprint