【正文】
Window 上的 Motif, Openwin, GTK 等圖形界面庫(kù)和 Windows 平臺(tái)上的 MFC, OWL, VCL, ATL 是同類型的東西,但是 QT 具有下列優(yōu)點(diǎn) : (1)優(yōu)良的跨平臺(tái)特性 : QT 支持下列操作系統(tǒng) : Microsoft Windows 95/98,Microsoft Windows NT, Linux, Sun OS, HPUX,等等。 Qtopia Qtopia 是為采用嵌入式 Linux 操作系統(tǒng)的消費(fèi)電子設(shè)備而開發(fā)的綜合應(yīng)用平臺(tái) , Qtopia 包含完整的應(yīng)用層、靈活的用戶界面、窗口操作系統(tǒng)、應(yīng)用程序啟動(dòng)程序以及開發(fā)框架。 高 級(jí) 語(yǔ) 言 編 寫 的源 文 件主 機(jī) 系 統(tǒng)目 標(biāo) 處 理 器 匯 編語(yǔ) 言 編 寫 的 源 文件交 叉 編 譯 器交 叉 匯 編 器目 標(biāo) 文 件目 標(biāo) 文 件鏈 接 器二 進(jìn) 制 可 執(zhí)行 文 件目標(biāo)系統(tǒng) 圖 交叉編譯過(guò)程 東北大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 第 2 章 相關(guān)技術(shù)簡(jiǎn)介 7 本章小結(jié) 本章等待先對(duì)嵌入式 Linux 開發(fā)環(huán)境進(jìn)行了簡(jiǎn)單介紹,以及當(dāng)今嵌入式開發(fā)流行的原因;介紹了 QT 系統(tǒng)、如何建立 QT/Embedded 開發(fā)環(huán)境、 QT 的優(yōu)勢(shì)以及Qtopia 開發(fā)平臺(tái);同時(shí)介紹了交叉編譯開發(fā)環(huán)境。 系統(tǒng)實(shí)現(xiàn)目標(biāo) 在火車載重檢測(cè)過(guò)程中,首先分別在空 /重( K/Z)情況下,對(duì)火車車廂四軸彈簧壓縮情況進(jìn)行測(cè)量,數(shù)據(jù)采集、錄入、保存 ,通過(guò)系統(tǒng)計(jì)算,將計(jì)算結(jié)果與標(biāo)重( BZ)比較,檢測(cè)車輛是否超偏超重。檢測(cè)人員作為整個(gè)系統(tǒng)的操作者,系統(tǒng)的信息通過(guò)檢測(cè)人員的采集和錄入,通過(guò)卡尺采集到的數(shù)據(jù)也必須快速傳達(dá)給系統(tǒng),同時(shí),要保證得到的數(shù)據(jù)的可靠性。 功能性需求描述 在面向?qū)ο蟮南到y(tǒng)分析中,獲取功能需求的最常用的技術(shù)就是用例建模技術(shù)。它是在特定條件下,為了達(dá)到某種目的,系統(tǒng)和用戶之間進(jìn)行交互的一個(gè)序列。 基本事件流: 東北大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 第 3 章 需求分析 11 1)檢測(cè)人員選擇信息,包括空 /重( K/Z)、車型( c50121/k1023/w8110/w8010)等,對(duì)車輛進(jìn)行數(shù)據(jù)采集。 系統(tǒng)進(jìn)行查詢,反饋結(jié)果,查詢方式為按日期查詢時(shí),可以查到當(dāng)天的多個(gè)記錄。 2)管理人員聯(lián)絡(luò)收貨人完成提貨操作。 非功能性需求描述 非功能性需求在整個(gè)系統(tǒng)中占有非常重要的位置,對(duì)系統(tǒng)的非功能性需求的滿足是系統(tǒng)成功的基礎(chǔ),下面列出本系統(tǒng)的非功能性需求: (1) 系統(tǒng)能夠長(zhǎng)時(shí)間的持續(xù)工作。 因?yàn)闄z測(cè)人員隨身攜帶本檢測(cè)系 統(tǒng),當(dāng)需要進(jìn)行大量的數(shù)據(jù)測(cè)量與檢測(cè)時(shí),要保證 ARM 機(jī)本身能夠提供足夠大的存儲(chǔ)空間,至少要達(dá)到 100 條記錄,一次檢測(cè)工程結(jié)束后,可以將當(dāng)前檢測(cè)到的通過(guò)聯(lián)機(jī)上傳給宿主機(jī),清空存儲(chǔ)空間。 從本章的需求分析中可以得出,系統(tǒng)的非功能性需求相對(duì)來(lái)說(shuō)比較易于實(shí)現(xiàn),而功能性需求比較嚴(yán)格。為了降低系統(tǒng)的成本,系統(tǒng)中各個(gè)模塊都采用開源項(xiàng)目中的組件完成。所以需要軟件在設(shè)計(jì)的過(guò)程中 積極遵循各種規(guī)范,保證后期維護(hù)和開發(fā)人員能夠快速理解系統(tǒng)。 系統(tǒng)總體設(shè)計(jì) 系統(tǒng)主要是為鐵路檢測(cè)人員提供好的檢測(cè)設(shè)備,所以簡(jiǎn)單快捷實(shí)用是根本出發(fā)點(diǎn)。首先在 ARM 機(jī)上點(diǎn)擊系統(tǒng)啟動(dòng),進(jìn)入系統(tǒng),輸入登錄密碼,才允許進(jìn)行下一步操作;同樣的,在一次檢測(cè)結(jié)束之后,輸入退出密碼,才能退出系統(tǒng)。 lineEditshow()。 對(duì)輸入錯(cuò)誤的數(shù)字進(jìn)行“清除”,以便重新輸入 btClear = new QPushButton(codectoUnicode(清除 , strlen(清除 )) , 東北大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 第 4 章 系統(tǒng) 設(shè)計(jì) 15 this, 0)。 函數(shù) btLoginClicked()是將輸入的密碼和系統(tǒng)已設(shè)置的登陸密碼進(jìn)行比較,若輸入正確,允許進(jìn)入,否則顯示“密碼錯(cuò)誤”,不能進(jìn)入檢測(cè)系統(tǒng)??梢酝ㄟ^(guò)主窗口進(jìn)入到四個(gè)功能模塊(開始檢測(cè)、計(jì)算打印、查詢修改、聯(lián)機(jī)上傳)。 函數(shù) showSubWin()可以進(jìn)入子窗口下進(jìn)行下一步具體操作。 函數(shù) btConnectPCClicked()是進(jìn)入到聯(lián)機(jī)上傳的子窗口,在此窗口下可以將已寫入 的記錄上傳給宿主機(jī),并選擇是否將全部記錄刪除,以減少ARM內(nèi)存空間。 cmbEmptyOrLoadsetGeometry(QRect(()+colSpace50, () + 3, btWidth , btHeight))。 str = Z。 lbZ1_1setGeometry(QRect((), () + rowSpan + rowSpace, btWidth, btHeight))。 leZ1_1show()。 portsetParity(PAR_NONE)。 設(shè)計(jì)車號(hào)的窗口,點(diǎn)擊窗口,切換到數(shù)字 09的窗口,要車號(hào)寫入(要求車號(hào)必須為 7位數(shù)字) 設(shè)計(jì)日期的窗口,日期是系統(tǒng)是通過(guò)自己的函數(shù) getdata()得到(要求日期為 6 位顯示,即年年月月日日)。 函數(shù) leZ1_1Clicked()與函數(shù) receiveMsg()有聯(lián)系, leZ1_1Clicked()中指東北大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 第 4 章 系統(tǒng) 設(shè)計(jì) 19 定 axis 的數(shù)值將直接影響 receiveMsg()中的 switch 語(yǔ)句的選擇,關(guān)系到串口寫入的數(shù)據(jù)送往哪一車軸存儲(chǔ)區(qū)。保存成功后,會(huì)彈出窗口,提示保存成功。 Myquery 設(shè)計(jì) 可以對(duì)已存儲(chǔ)的數(shù)據(jù)進(jìn)行查詢,查到后可以對(duì)數(shù)據(jù)進(jìn)行修改,保證數(shù)據(jù)的可靠性和結(jié)果的準(zhǔn)確性。 A x i s 是 否 為 0開 始判 斷 四 個(gè) 車 軸有 無(wú) 空 數(shù) 據(jù)是否無(wú)輸 入 數(shù) 據(jù)有車 號(hào) 沖 突返 回寫 入 d a t a . t x t文 件否數(shù) 據(jù) 重 寫是打 印是 否 圖 save 流程圖 東北大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 第 4 章 系統(tǒng) 設(shè)計(jì) 20 函數(shù) btMeasureReturnClicked()可以回到主窗口下,退出本窗口,或進(jìn)入到其他窗口進(jìn)行操作。 函數(shù) getdate()是實(shí)現(xiàn)系統(tǒng)對(duì)日期的獲取,因?yàn)?ARM 機(jī)系統(tǒng)本身帶有時(shí)間裝置,所以檢測(cè)系統(tǒng)只需要獲取 ARM 機(jī)本身的時(shí)間即可。 設(shè)計(jì) 返回的按鈕,點(diǎn)擊返回,可以返回到上一層窗口。 portsetStopBits(STOP_1)。 portsetBaudRate(BAUD4800)。 leZ1_1setGeometry(QRect(() + colSpace 50 , () + rowSpan + rowSpace , btWidth, btHeight))。 東北大學(xué)本科畢業(yè)設(shè)計(jì)(論文) 第 4 章 系統(tǒng) 設(shè)計(jì) 18 對(duì)于車型的選擇,是通過(guò)讀取文件來(lái)進(jìn)行的 QFile file(/opt/Qtopia/bin/)。 str = K。對(duì) Measure 做出類圖構(gòu)造如下: + b t L o g o u t C l i c k e d ( )+ s h o w S u b W i n ( )+ b t S e a c h N R e v i s e C l i c k e d ( )+ b t C a l c P r i n t C l i c k e d ( )+ b t S t a r t M e a s u r e C l i c k e d ( )+ s u b d l g R e t u r n H a n d l e ( )+ b t Q u i t C l i c k e d ( )+ r e s i z e E v e n t ( )+ c l o s e E v e n t ( )+ m o u s e R e l e a s e E v e n t ( )+ s h o w A f t e r L o g i n ( ) b t H e i g h t b t W i d t h r o w S p a n r o w S p a c e 元 類 M a i n D l g+ r e s i z e E v e n t ( )+ c l o s e E v e n t ( )+ r e c e i v e M s g ( )+ l e Z 2 _ 1 C l i c k e d ( )+ l e V e h i c l e N u m C l i c k e d ( )+ g e t d a t e ( )+ r e s e t ( )+ b t S a v e C l i c k e d ( )+ k e y R e t u r n C l i c k e d ( )+ b t M e a s u r e R e t u r n C l i c k e d ( )+ b t C l e a r C l i c k e d ( )+ m o u s e R e l e a s e E v e n t ( ) b t H e i g h t b t W i d t h r o w S p a n r o w S p a c e c o l S p a c e M e a s u r e+ s e t I n f o ( )+ b t P r i n t C l i c k e d ( )+ b t R e t u r n C l i c k e d ( ) b t H e i g h t b t W i d t h r o w S p a n r o w S p a c e c o l S p a c eP r i n t+ b t 2 C h a r C l i c k e d ( )+ b t 2 N u m C l i c k e d ( )+ j u d g e I n p u t ( )+ p a r s e I n u t W e i g h t ( )+ p a r s e D a t e N u m ( )+ p a r s e V e h i c l e N u m ( )+ s e t T i t l e ( )+ p a r s e V e h i c l e S t y l e ( )+ s e t I n p u t T y p e ( )+ s e t I n p u t S t r ( )+ p a r s e D a t e F o r m a t ( )+ p a r s V e h i c l e N u m F o r m a t ( )+ j u d g e I n p u t 4 b t C o n f i r m ( )+ b t C l e a r C l i c k e d ( )+ b t C o n f i r m C l i c k e d ( ) b t H e i g h t b t W i d t h r o w S p a c e c o l S p a c ek e y+ p a r s e R o w ( )+ r o w 2 S t r ( )+ r e a d L i n e 4 U p l o a d ( )+ r e a d B y D a t e ( )+ r e a d A l l ( )+ r e a d B y C H ( )+ a p p e n d R o w ( )+ c l e a r F i l e ( )+ m o d i f y R o w ( )+ p a r s e P w d ( )+ r e a d P a s s w d ( )d a t a i fq e x t s e r i a l p o r t 圖 measure 類圖 設(shè)計(jì)空 /重和車型的下拉菜單,檢測(cè)人員可以對(duì)信息進(jìn)行選擇,因?yàn)橐謩e在車廂空載和載重情況下的數(shù)據(jù)采集,以及車型的選擇,菜單是實(shí)現(xiàn)選擇的最好形式。 函數(shù) btCalcPrintClicked()是進(jìn)入到計(jì)算打印的子窗口,在此窗口下可以對(duì)數(shù)據(jù)進(jìn)行查找,若存在,則可對(duì)數(shù)據(jù)進(jìn)行超偏超重的檢測(cè),并可以將得到的結(jié)果打印出來(lái)。 QObject::connect(btStartMeasure, SIGNAL(clicked()), this, SLOT(btStartMeasureClicked()))。 函數(shù) btClearClicked()是對(duì)輸入有誤的數(shù)字進(jìn)行清除。 btClearsetGeometry(QRect(() + colSpace * 2, () + rowSpace, btWidth, btHeight))。 QO