【正文】
軟件質(zhì)量和縮短開發(fā)周期。 嵌入式軟件技術(shù)面臨挑戰(zhàn)以信息家電為代表的互聯(lián)網(wǎng)時代嵌入式產(chǎn)品,不僅為嵌入式市場展現(xiàn)了美好前景,注入了新的生命;同時也對嵌入式系統(tǒng)技術(shù),特別是軟件技術(shù)提出新的挑戰(zhàn)。因此,利用 Linux 下基于 Qt 的嵌入式終端應(yīng)用程序開發(fā)是一個非常有意義的課題,具有重要的研究和商業(yè)價值。如果舍棄原有軟件而重新開發(fā),將會耗費大量的人力和資金,而且浪費了許多成熟的軟件成果。利用源代碼開放的 Linux 搭建的嵌入式操作系統(tǒng),由于強大的網(wǎng)絡(luò)功能和低成本,近來得到了越來越多的應(yīng)用。其能夠提供全功能的桌面計算,定制非常方便并且支持大多數(shù)嵌入式系統(tǒng)上使用的芯片,包括 Strong ARM,MIPS 和Power PC 等。而 Qt 在源代碼級上實現(xiàn)了跨平臺特性,極大的支持了跨平臺通用軟件的開發(fā)。 嵌入式軟件技術(shù)發(fā)展現(xiàn)狀與未來 標(biāo)志性的嵌入式產(chǎn)品已露頭角全過程自動化產(chǎn)品制造、大范圍電子商務(wù)活動、高度協(xié)同科學(xué)實驗以及現(xiàn)代化家庭起居,為嵌入式產(chǎn)品造就了嶄新而巨大的商機。這主要包括:支持日趨增長的功能密度、靈活的網(wǎng)絡(luò)聯(lián)接、輕便的移動應(yīng)用和多媒體的信息處理,此外,當(dāng)然還需對付更加激烈的市場競爭。(2) 聯(lián)網(wǎng)成為必然趨勢為適應(yīng)嵌入式分布處理結(jié)構(gòu)和應(yīng)用上網(wǎng)需求,面向 21 世紀(jì)的嵌入式系統(tǒng)要求配備標(biāo)準(zhǔn)的一種或多種網(wǎng)絡(luò)通信接口。這就相應(yīng)提高了對嵌入式軟件設(shè)計技術(shù)要求。手寫文字輸入、語音撥號上網(wǎng),收發(fā)電子郵件以及彩色圖形、圖像已取得初步成效。嵌入式 Linux 多種原型的提出,和 GNU 軟件開發(fā)工具軟件的實用化進展,正為我國加快發(fā)展嵌入式軟件技術(shù)提供了極好機遇和條件。IP 核有硬件核、軟件核和固件核,硬件核主要指 8/16/32/64 位 MPU 核或 DSP 核。 課題研究內(nèi)容針對嵌入式產(chǎn)品的高度個性化,其外觀、與用戶交互的界面千差萬別的特點,故而系統(tǒng)的設(shè)計目標(biāo)是意在打造一個能在嵌入式終端運行、通用的、可以方便的支持各種控件、各種圖形格式,具有體積小、可裁剪、可移植的這樣一個面向嵌入式的應(yīng)用程序系統(tǒng),使各種嵌入式設(shè)備也同樣能具有美觀的用戶界面,相對比較豐富的功能,操作起來簡單而又直觀。它們體積小,移植方便,適用于掌上電腦、智能電話及一些高端的嵌入式設(shè)備中。程式源碼全部公開,任何人可以修改并在 GNU 通用公共許可證(GNU General Public License)下發(fā)行(陳英和梁建武, 2022),這樣,開發(fā)人員可以對操作系統(tǒng)進行定制,再也不必?fù)?dān)心像 MS windows 操作系統(tǒng)中 后門 的威脅。Linux 還提供了強大的網(wǎng)絡(luò)功能,有多種可選擇窗口管理器(X windows) 。原型可以在標(biāo)準(zhǔn)平臺上開發(fā)然后移植到具體的硬件上,加快了軟件與硬件的開發(fā)過程。毫無疑問,這會節(jié)省大量的開發(fā)費用。嵌入式產(chǎn)品中選擇什么樣的操作系統(tǒng)極為重要,嵌入式 Linux 由于其開源特性、實時性好、可移植、內(nèi)置網(wǎng)絡(luò)支持等優(yōu)點在嵌入式領(lǐng)域成為主力軍。Qt 支持 Unix 和 Linux 系統(tǒng)以及 Windows 系統(tǒng)。在圖形用戶界面編程中,我們經(jīng)常希望一個窗口部件的一個變化被通知給另一個窗口部件(張娟,張雪蘭,2022)。處理函數(shù)在適當(dāng)?shù)臅r候調(diào)用回調(diào)(倪繼利,2022) 。因此容易造成進程崩潰,另外一個問題是,回調(diào)這種方式緊緊的綁定了圖形用戶接口的功能元素,因而很難把開發(fā)進行獨立的分類。Qt 的窗口部件有很多預(yù)定義的槽,但是通常的習(xí)慣是你可以加入自己的槽,這樣你就可以處理你所感興趣的信號。這就是所有的對象通訊時所做的一切。當(dāng)所有的槽都返回后發(fā)射的信號也將返回。 )因為簽名是一致的,編譯器就可以幫助我們檢測類型不匹配。信號和槽可以使用任何數(shù)量、任何類型的參數(shù)。 (這時,只要第一個信號被發(fā)射時,第二個信號立刻就被發(fā)射。槽同其他函數(shù)一樣也具有訪問權(quán)限,只是槽的訪問權(quán)限決定了誰可以和它相連,如一個 public slots:包含了任何信號都可以相連的槽( Andrew Krause,2022) 。圖 1 信號和槽的連接原理圖Fig. 1 Signal and slot connection scheme(2) Qt 元對象系統(tǒng)Qt 中的元對象系統(tǒng)是用來處理對象間通訊的信號/槽機制、運行時的類型信息和動態(tài)屬性系統(tǒng)。這個生成的源文件可以被類的源文件包含(include)到或者和這個類的實現(xiàn)一起編譯和連接。 (4) setProperty()函數(shù)和 property()函數(shù),這兩個函數(shù)是用來通過名稱動態(tài)設(shè)置和獲得對象屬性的。舉例來說就是,className()將不會返回你的類的實際名稱,返回的是它的這個祖先的名稱。特色是界面語言支持中文、英文、日文三種語言的顯示。(2) 文件名選中顯示功能:在文件列表上被選中的文件名高亮顯示。輸入的文本內(nèi)容多于當(dāng)前屏幕顯示范圍時出現(xiàn)縱向滾動條,隨著文本輸入滾動顯示內(nèi)容。如果文件內(nèi)容多于當(dāng)前屏幕顯示范圍的話,出現(xiàn)縱向滾動條,可以滾動顯示當(dāng)前文件的文件內(nèi)容。選擇刪除文件操作時,會出現(xiàn)確定文件刪除的提示,如果此時放棄刪除操作,則文件不會被刪除,否則文件將會被徹底刪除,即從物理設(shè)備上被刪除。(11) 給用戶提供友好的圖形用戶界面,并合理安排界面元素布局,使其交互性好且方便用戶操作。文件列表中文件以文件創(chuàng)建時間排序,將要進行操作的文件名高亮顯示。界面的最下方左側(cè)為功能按鈕,右側(cè)的是返回按鈕,此界面上分別標(biāo)記為“Option”和“Save”。圖 4 文件打開界面Fig. 4 Documents open interface記事本功能菜單設(shè)計:如圖 5 所示,記事本功能菜單大小要小于記事本主要界面的大小,根據(jù)具體條目的數(shù)量來調(diào)整為合適的大小。消息提示框的顯示區(qū)域顯示提示動畫和提示的內(nèi)容。按鍵布局與物理鍵盤基本一致,按鍵布局美觀,同時鍵盤的邊緣相對寬一些,便于鍵盤的移動。各個界面都有自己的功能菜單,通過調(diào)用自己的功能菜單對當(dāng)前界面進行下一步的操作,如當(dāng)新建文件界面顯示時,可通過菜單進行打開文件操作和軟鍵盤輸入操作;當(dāng)打開文件時在文件內(nèi)容的顯示界面上,可通過菜單進行顯示下一個文件內(nèi)容的操作和軟鍵盤編輯修改文件內(nèi)容的操作,并在文件內(nèi)容修改后,可通過修改文件提示框選擇是否保存修改后的文件內(nèi)容。如果圖片數(shù)量超過當(dāng)前屏幕顯示范圍時,可向下滾動顯示。(4) 瀏覽圖片功能:對選中的圖片可以執(zhí)行瀏覽的功能,若圖片原本大小超過圖片瀏覽區(qū)域(即相框)的大小,則會自動調(diào)整變成適應(yīng)圖片瀏覽區(qū)域的最大尺寸。(6) 圖片縮小功能:在當(dāng)前圖片尺寸大小的基礎(chǔ)上,圖片可逐級縮小。圖片旋轉(zhuǎn)后會自動適應(yīng)窗口大小,完整顯示圖片。(10) 幻燈片模式自動瀏覽功能:可從當(dāng)前選定的圖片開始執(zhí)行自動播放圖片功能,初始設(shè)定播放速度為 3 秒間隔,可以加速或減速播放。中間的顯示區(qū)域以 4*3(即 4 列 3 排)格式對圖片的縮略圖進行排列,被選中的圖片被突出放大顯示。界面的最下方為兩個按鈕,左側(cè)的是功能按鈕,右側(cè)的是返回按鈕,此界面上分別標(biāo)記為“Select” 和“Cancel” 。圖 11 正常顯示圖片瀏覽界面Fig. 11 The normal size picture browsing interface圖 12 放大圖片瀏覽界面Fig. 12 Enlarged picture browsing interface圖 13 縮小圖片瀏覽界面Fig. 13 Minified the image brower interface圖 14 圖片旋轉(zhuǎn)角度瀏覽界面Fig. 14 Image rotation angle browsing interface 電子相冊結(jié)構(gòu)設(shè)計如圖 15 所示,圖片列表界面為電子相冊的入口和出口。而各種模式下的圖片瀏覽界面下,均可以通過功能菜單對其他瀏覽模式進行選擇。NpOpennoteForm 為打開文件的功能實現(xiàn)類。 NpSaveForm 為文件名保存實現(xiàn)類。NpNotepadForm 與 NpfunctionviewForm 成單項關(guān)聯(lián)關(guān)系。NpOpenoptionForm 與 NpDeletenoteForm、MyKeyboard 分別為單向關(guān)聯(lián)。MyTextedit 與 NpNewnoteForm 類和 NpOpennoteForm 為聚合(聚集)關(guān)系。(1) 記事本文件列表的實現(xiàn):首先掃描文件夾下的所有文件,包括隱藏的所有文件名,過濾記事本文件,并將這些記事本文件名根據(jù)創(chuàng)建時間的先后進行排序存儲到文件鏈表中,將文件鏈表中的所有文件顯示在文件列表界面。(3) 新建文件的實現(xiàn):首先提示輸入文件名,并檢查文件名的合法性。流程圖如圖 19。流程圖如圖 20。流程圖如圖21。AlbPicViewForm 和 AlbOptionForm 成雙向關(guān)聯(lián)關(guān)系。值得注意的一點是,此Label 上加載的圖片均為真實圖片的縮略圖,而不是圖片本身。流程圖如圖 23。主要實現(xiàn)流程圖如圖 24 所示。否則,刪除圖片后,被刪除圖片的后一張顯示為選中狀態(tài),且此圖片刪除后,圖片文件鏈表中刪除圖片節(jié)點,其列表界面中圖片的位置要統(tǒng)一向前移動一個位置。開始結(jié)束m d _ C h a n g e S i z e 等于 3N oY e sm d _ C h a n g e S i z e 等于 0 . 5改變菜單條目狀態(tài)調(diào)用 S c a l e ( ) 函數(shù)得出新的 p i x m a p調(diào)用 r e p a i n t ( ) 函數(shù)畫出新的 p i x m a pY e sN o圖 26 圖片的放大功能實現(xiàn)流程圖Fig. 26 Implementation of enlarging function diagram(5) 圖片縮小功能的實現(xiàn):可在圖片的任意大小狀態(tài)下進行縮小,直到圖片縮小到初始打開圖片顯示尺寸的 倍大小。(6) 圖片移動功能實現(xiàn):圖片在放大到 倍以上時,可進行圖片在相框內(nèi)的上下或左右移動顯示。開始取得當(dāng)前鼠標(biāo)坐標(biāo)位置并根據(jù)舊的鼠標(biāo)坐標(biāo)位置 m i _ O l d X 、 m i _ O l d Y計算得出坐標(biāo)移動參數(shù) m i _ N e w X 、m i _ N e w Y結(jié)束m d _ C h a n g e S i z e 小于等于 1 . 0N oY e s邊界調(diào)整 , 修正 m i _ M o v e X 與m i _ M o v e Y 的值記錄下當(dāng)前的鼠標(biāo)坐標(biāo) m i _ O l d X 、m i _ O l d Y調(diào)用 r e p a i n t ( ) 函數(shù)畫出新的 p i x m a p根據(jù) m i _ N e w X 、 m i _ N e w Y 更新m i _ M o v e X 、 m i _ M o v e Y圖 28 圖片移動功能實現(xiàn)流程圖Fig. 28 Implementation of moving function diagram (7) 相框內(nèi)圖片顯示功能的實現(xiàn):不同的選擇下,相框內(nèi)的圖片顯示狀態(tài)是不同的。圖 29 即為圖片顯示功能實現(xiàn)的流程圖。記事本和電子相冊的界面切換中均使用到了蒙版效果,達到視覺上的美化效果,是設(shè)計上的一個特色。記事本和電子相冊軟件經(jīng)過反復(fù)修改驗證,通過了單體測試和結(jié)合測試,均能正常且高效的工作,達到了預(yù)期的目標(biāo)。我們需要做的事情還有很多,例如記事本的界面的整體美化,軟鍵盤的中文輸入法,記事本提醒功能等;電子相冊的界面的列表模式切換,如縮略圖列表、文件名列表等的切換,和電子相冊瀏覽圖片時的切換效果等。s Voice in Open Source) Apress 2nd edition August 3, 2022,256-26722. Matthias Dalheimer Programming with Qt O39。感謝我的班主任倪福川老師,四年來一直默默的為我們的班級導(dǎo)航,將對未來充滿懵懂的我們,慢慢引入各自的發(fā)展領(lǐng)域中,無論從生活上還是學(xué)習(xí)上都給了我們無微不至的關(guān)心和指導(dǎo)。感謝我的母校,給了我一個濃厚的學(xué)習(xí)氛圍,同時給了我們豐富的實驗資源和圖書資源。欽佩他們不僅是淵博的知識,還有高尚的道德情操,祝我所有的老師永遠平安健康快樂。在我的大學(xué)學(xué)習(xí)生活中和本次畢業(yè)設(shè)計中,王老師給予我的鼓勵和耐心指導(dǎo),為我順利完成課題奠定了堅實的基礎(chǔ),并且給了我面對困難和解決困難的勇氣。正是由于這些應(yīng)用需求,促成了本次開發(fā)的設(shè)計和實現(xiàn)。在記事本和電子相冊的設(shè)計中,還存在著許多的不足之處。電子相冊的各種模式(如放大、縮小、順時針旋轉(zhuǎn)、逆時針旋轉(zhuǎn)、全屏顯示、自動播放)下的圖片瀏覽及圖片的刪除等功能也在電子相冊軟件中得到充分的體現(xiàn)。該設(shè)計方案具有低耦合、高內(nèi)聚、可擴展、可移植等良好特點,并在設(shè)計的基礎(chǔ)上將該方案實現(xiàn)。根據(jù)圖片縮放和旋轉(zhuǎn)參數(shù)和檢測到的移動距離,利用矩陣計算出新圖片所需的各個參數(shù),根據(jù)這些參數(shù)生成顯示在相框內(nèi)的圖片。為保證在移動時正確顯示在相