日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 電源 > 數(shù)字電源
[導(dǎo)讀]摘要:提出一種以AT91SAM9263處理器為核心芯片、采用嵌入式Linux2.6內(nèi)核和MiniGUI3.0圖形系統(tǒng)的數(shù)字加密電話系統(tǒng)GUI的設(shè)計(jì)與實(shí)現(xiàn)方案。采用雙緩沖技術(shù)與多張圖片交替顯示的方式解決了MiniGUI的動(dòng)畫(huà)抖動(dòng)問(wèn)題和屏幕刷

摘要:提出一種以AT91SAM9263處理器為核心芯片、采用嵌入式Linux2.6內(nèi)核和MiniGUI3.0圖形系統(tǒng)的數(shù)字加密電話系統(tǒng)GUI的設(shè)計(jì)與實(shí)現(xiàn)方案。采用雙緩沖技術(shù)與多張圖片交替顯示的方式解決了MiniGUI的動(dòng)畫(huà)抖動(dòng)問(wèn)題和屏幕刷新負(fù)載過(guò)大導(dǎo)致的屏幕抖動(dòng)問(wèn)題。
關(guān)鍵詞:動(dòng)畫(huà)抖動(dòng);雙緩沖技術(shù);MiniGUI;嵌入式

引言
    在需要豐富人機(jī)交互信息的嵌入式系統(tǒng)應(yīng)用中,高精度的動(dòng)態(tài)圖像顯示非常重要。因此,嵌入式系統(tǒng)對(duì)GUI的實(shí)時(shí)性和穩(wěn)定性的要求也越來(lái)越明顯。但是,動(dòng)態(tài)圖像的抖動(dòng)和刷新延遲的問(wèn)題在嵌入式系統(tǒng)中經(jīng)常出現(xiàn),影響系統(tǒng)的顯示效果。
    國(guó)產(chǎn)圖形用戶界面系統(tǒng)MiniGUI提供完備的多窗口機(jī)制和類Win32消息傳遞機(jī)制,便于實(shí)現(xiàn)多個(gè)進(jìn)程間的消息傳遞。而且具有占用內(nèi)存少、可移植性好等特點(diǎn),因此在嵌入式領(lǐng)域中被廣泛應(yīng)用。但在實(shí)際應(yīng)用中,筆者發(fā)現(xiàn)了兩個(gè)問(wèn)題:一是用MiniGUI的animation控件實(shí)現(xiàn)時(shí)出現(xiàn)動(dòng)畫(huà)抖動(dòng),二是顯示較多圖片的窗口刷新時(shí)屏幕閃爍,嚴(yán)重影響屏幕的顯示效果。為解決以上兩個(gè)問(wèn)題,本系統(tǒng)采用MiniGUI的雙緩沖技術(shù)和多張圖片交替顯示的方法,并通過(guò)實(shí)際應(yīng)用證明了該方法的有效性。

1 數(shù)字加密電話系統(tǒng)架構(gòu)
1.1 硬件系統(tǒng)
    數(shù)字加密電話硬件系統(tǒng)的芯片采用ATMEL公司的AT91SAM9263處理器。主頻為200 MHz,2 MB高速Data Flash、64 MB NAND Flash和64 MB SDRAM。核心板的對(duì)外接口包括鍵盤(pán)接口、LCD接口、LED接口、MODEM模塊、電話機(jī)模塊和接口、SD卡接口和USB主從接口等。如圖1所示。


1.2 軟件系統(tǒng)
    操作系統(tǒng):開(kāi)放源碼的Linux操作系統(tǒng)是開(kāi)發(fā)嵌入式產(chǎn)品的首選。本系統(tǒng)采用開(kāi)放源碼的嵌入式Linux系統(tǒng)。它的內(nèi)核版本為2.6.22,是基于default_at91sam9263_config配置的。
    交叉編譯工具鏈:采用arm-linux-XXX。arm-linux-gcc用于交叉編譯源程序,生成執(zhí)行文件;arm-linux-strip用于去掉執(zhí)行文件中的調(diào)試信息,起到減小執(zhí)行文件大小的作用。
    GUI系統(tǒng):MiniGUI是國(guó)產(chǎn)的一款面向嵌入式系統(tǒng)、跨操作系統(tǒng)的輕量級(jí)國(guó)產(chǎn)高級(jí)窗口系統(tǒng)(Windowing System)和圖形用戶界面(Graphi-cal User Interface,GUI)支持系統(tǒng)。經(jīng)過(guò)10余年的發(fā)展,MiniGUI已經(jīng)發(fā)展成為比較成熟、性能優(yōu)良且功能豐富的跨操作系統(tǒng)的嵌入式圖形界面支持系統(tǒng)。MiniGUI可在Linux/μClinux、eCos、μC/OS-II、VxWorks、pSOS、ThreadX等操作系統(tǒng)以及Win32平臺(tái)上運(yùn)行,已廣泛應(yīng)用于手持信息終端、機(jī)頂盒、工業(yè)控制系統(tǒng)、便攜式多媒體播放器等產(chǎn)品中。
    MiniGUI支持BMP、GIF、PNG、JPEG、PCX、TGA等常見(jiàn)圖像文件和位圖、圖標(biāo)、光標(biāo)等Windows資源文件,支持多字符集和多種字體,庫(kù)文件較小且可配置。MiniGUI3.0比其之前的版本,在以下幾方面有新的發(fā)展:
    ①主窗口雙緩沖技術(shù),可以在自定義緩沖區(qū)中獲得整個(gè)窗口的渲染結(jié)果。
    ②外觀渲染器技術(shù),外觀渲染器提供了多種風(fēng)格的主窗口和控件界面外觀,并且應(yīng)用程序可在幾種風(fēng)格之間動(dòng)態(tài)切換。
    ③雙向文本顯示與輸入,增加了對(duì)阿拉伯文和希伯來(lái)文語(yǔ)言的支持,實(shí)現(xiàn)了文本的變形和重排,并提供了阿拉伯文和希伯來(lái)文鍵盤(pán)的支持。
    ④支持不規(guī)則窗口,如圓角矩形、非矩形窗口等。
    ⑤增加了組件mGUtilis,該組件為用戶提供了一些常用的對(duì)話框模板,便于代碼復(fù)用。
    ⑥增加了組件msgplus,該組件是對(duì)MiniGUI圖形繪制接口的一個(gè)擴(kuò)充和增強(qiáng),主要提供對(duì)二維矢量圖形和高級(jí)圖形算法的支持。
    因此,MiniGUI非常適合編寫(xiě)嵌入式圖形用戶界面應(yīng)用程序。[!--empirenews.page--]
1.3 用戶界面設(shè)計(jì)
    數(shù)字加密電話系統(tǒng)需要顯示當(dāng)前的系統(tǒng)狀態(tài)和具體內(nèi)容,以此進(jìn)行系統(tǒng)與用戶之間的信息交流,因此對(duì)界面的穩(wěn)定性和實(shí)時(shí)性要求較高。本系統(tǒng)將整個(gè)屏幕分為3個(gè)區(qū)域,即狀態(tài)區(qū)域、Logo與時(shí)間顯示區(qū)域和主顯示區(qū)域,如圖2所示。狀態(tài)顯示區(qū)主要表示當(dāng)前系統(tǒng)的工作狀
態(tài)和設(shè)備的狀態(tài)。比如是掛機(jī)態(tài)還是摘機(jī)態(tài),是加密還是非加密態(tài),是否插入U(xiǎn)盤(pán),當(dāng)前的數(shù)據(jù)傳輸率為多少等。不同的狀態(tài)需要用不同的圖片來(lái)顯示。從一個(gè)狀態(tài)過(guò)渡到另一個(gè)狀態(tài),需要用一個(gè)動(dòng)畫(huà)來(lái)表示。主顯示區(qū)域主要顯示表示當(dāng)前系統(tǒng)的工作情況的動(dòng)畫(huà)或文字提示。比如表示普通語(yǔ)音電話的動(dòng)畫(huà)、表示正在加密傳輸?shù)膭?dòng)畫(huà),也可以顯示其他信息,如系統(tǒng)功能選擇界面、選文件界面、日志管理界面等。Logo及時(shí)間顯示區(qū)顯示公司的Logo與當(dāng)前系統(tǒng)時(shí)間。對(duì)于本系統(tǒng)的界面設(shè)計(jì)來(lái)說(shuō),最重要的是各種動(dòng)畫(huà)的顯示要流暢。



2 實(shí)現(xiàn)GUI時(shí)存在的兩個(gè)問(wèn)題
    本系統(tǒng)GUI的實(shí)現(xiàn)問(wèn)題主要是各種圖片的顯示、動(dòng)畫(huà)和選擇功能界面的實(shí)現(xiàn)。圖片的顯示方法很簡(jiǎn)單,因此,在下面只介紹動(dòng)畫(huà)和選擇功能界面的實(shí)現(xiàn)方法及存在的問(wèn)題。
2.1 動(dòng)畫(huà)的實(shí)現(xiàn)方法及存在的問(wèn)題
    MiniGUI為實(shí)現(xiàn)動(dòng)畫(huà),已提供了animation控件,用animation控件實(shí)現(xiàn)動(dòng)畫(huà)的過(guò)程非常簡(jiǎn)單:
    ①準(zhǔn)備動(dòng)畫(huà)文件,文件格式應(yīng)該是GIF格式,GIF格式的動(dòng)畫(huà)文件可以用Flash和PhotoShop生成。
    ②用函數(shù)CreateAnimationFromGIF89aFile()讀入GIF文件。
    ③用CreateWindow()創(chuàng)建動(dòng)畫(huà)顯示窗口。
    ④用SendMessage()函數(shù)控制動(dòng)畫(huà),該函數(shù)的第2個(gè)參數(shù)為ANM_STARTPLAY表示啟動(dòng)動(dòng)畫(huà),參數(shù)為ANM_PLAYSTOP表示暫停動(dòng)畫(huà)。也可以用函數(shù)SendMessage(GetDlgItem(hInitface,IDC_MAINANIMATION),ANM_SETANIMATION,0,(LPARAM)anim)實(shí)現(xiàn)更換動(dòng)畫(huà)文件。但是,在嵌入式環(huán)境下,使用該方法播放動(dòng)畫(huà)時(shí),在狀態(tài)顯示區(qū)和主顯示區(qū)內(nèi)都產(chǎn)生嚴(yán)重的抖動(dòng)現(xiàn)象。而且屏幕越大抖動(dòng)就越明顯,分辨率為480×640時(shí)的抖動(dòng)現(xiàn)象比240×320時(shí)更明顯。減少動(dòng)畫(huà)的幀數(shù)或延長(zhǎng)每一幀的播放時(shí)間,抖動(dòng)仍然存在,嚴(yán)重影響屏幕的顯示效果。
2.2 功能選擇界面的實(shí)現(xiàn)及存在的問(wèn)題
    功能選擇界面一般由多個(gè)圖片來(lái)組成,各表示不同的系統(tǒng)功能,用上下左右鍵選擇不同的功能,按Enter鍵運(yùn)行相應(yīng)程序,即打開(kāi)另一個(gè)窗口,完成相應(yīng)功能。當(dāng)關(guān)閉窗口時(shí)重新顯示功能顯示界面。為區(qū)別被選中功能和未選中功能,放大或下沉顯示當(dāng)前被選中的功能圖片,而前一個(gè)被選中功能圖片恢復(fù)成原來(lái)的大小,如圖3所示。每次用上下左右鍵選擇功能時(shí)和關(guān)閉功能窗口時(shí),都要重新刷新背景,并重繪窗口客戶區(qū)的各個(gè)圖片。因?yàn)镸iniGUI不保存被覆蓋區(qū)域的內(nèi)容,因此在MSG_PAINT消息中需要重繪的內(nèi)容較多,重繪圖片的常用方法是用FillB-oxWithBitmap()函數(shù)填充相應(yīng)圖片區(qū)域,但是這種方法加重了屏幕刷新負(fù)載,引起屏幕明顯地閃爍。

[!--empirenews.page--]

3 關(guān)鍵問(wèn)題的解決方法
3.1 動(dòng)畫(huà)抖動(dòng)問(wèn)題的解決
    產(chǎn)生動(dòng)畫(huà)抖動(dòng)的主要原因是,用animation控件實(shí)現(xiàn)動(dòng)畫(huà)時(shí),頻繁地產(chǎn)生MSG_PAINT消息,加重了屏幕刷新的請(qǐng)求。MiniGUI通過(guò)判斷窗口是否含有無(wú)效區(qū)域來(lái)確定是否需要重繪窗口。如果需要重繪就向應(yīng)用程序發(fā)送MSG_PAINT消息。窗口的重繪任務(wù)需由應(yīng)用程序自己完成,因?yàn)镸iniGUI不保存被覆蓋區(qū)域的內(nèi)容。MiniGUI的窗口在響應(yīng)MSG_PAINT消息的時(shí)候進(jìn)行復(fù)雜的圖形處理,尤其是在刷新時(shí),對(duì)圖像的擦除和重寫(xiě)造成了圖像顏色的反差。當(dāng)繪圖消息的響應(yīng)很頻繁時(shí),這種反差也就越發(fā)明顯,于是我們就看到了動(dòng)畫(huà)抖動(dòng)的現(xiàn)象。為了解決動(dòng)畫(huà)抖動(dòng)的問(wèn)題,系統(tǒng)采用了雙緩沖技術(shù)和多個(gè)圖片交替顯示的方法。并在實(shí)際應(yīng)用中證明了該方法是行之有效的。雙緩沖技術(shù)要比直接操作顯存速度更快,因此可以解決抖動(dòng)現(xiàn)象。
    采用雙緩沖技術(shù)實(shí)現(xiàn)動(dòng)畫(huà)的基本思路是這樣的,首先在系統(tǒng)內(nèi)存中建立一個(gè)類似顯示內(nèi)存的內(nèi)存設(shè)備上行文,然后將待顯示圖片填充到該內(nèi)存設(shè)備上行文中,最后再通過(guò)位拷貝方式復(fù)制到顯示內(nèi)存中。為了達(dá)到動(dòng)畫(huà)的效果,將多個(gè)圖片循環(huán)顯示,即設(shè)定定時(shí)器和靜態(tài)變量,每當(dāng)定時(shí)器觸發(fā)時(shí),根據(jù)靜態(tài)變量的值顯示不同的圖片,靜態(tài)變量由0到MAX循環(huán)。實(shí)現(xiàn)動(dòng)畫(huà)的詳細(xì)流程如圖4所示。定時(shí)器的時(shí)間間隔和圖片的數(shù)量可以根據(jù)具體情況任意調(diào)整。本系統(tǒng)的主顯示區(qū)動(dòng)畫(huà)采用這種方法實(shí)現(xiàn)后,動(dòng)畫(huà)效果流暢,不再有抖動(dòng)現(xiàn)象。


3.2 功能選擇界面閃爍問(wèn)題的解決
    功能選擇界面閃爍的主要原因是屏幕內(nèi)容過(guò)多,刷新負(fù)載過(guò)大。本系統(tǒng)采用雙緩沖技術(shù)和MiniGUI.cfg配置文件的設(shè)置方法,實(shí)現(xiàn)只刷新屏幕的局部,解決了功能選擇界面閃爍問(wèn)題。每次按上下左右鍵或關(guān)閉功能窗口時(shí),用以下3個(gè)步驟實(shí)現(xiàn)重繪屏幕無(wú)效區(qū)域(以圖3為例)。
    ①A區(qū)用小圖標(biāo)恢復(fù),用函數(shù)StretchBlt(hdcmem,0,0,0,0,hdc,WIN_LEFT,WIN_TOP,WIDTH,HIGHT,(DWORD)0)實(shí)現(xiàn),其中hdcmem是內(nèi)存設(shè)備上下文,是用CreateCompatibleDCEx()函數(shù)創(chuàng)建的。該內(nèi)存設(shè)備上行文中已經(jīng)存有圖3下圖中的A區(qū)域信息(第一次是在窗口的MSG_ CREATE消息中保存的,第二次開(kāi)始是在第二步驟保存的)。
    ②將B的圖片區(qū)域(小圖片)復(fù)制到內(nèi)存設(shè)備上下文,用函數(shù)StretchBlt(hdc,WIN_LEFT,WIN_TOP,WIDTH,HIGHT,hdcmem,0,0,0,0,(DWORD)0)實(shí)現(xiàn)。
    ③B區(qū)域的圖片放大顯示,通過(guò)函數(shù)FillBoxWithBitmap(hdc,WIN_LEFT,WIN_TOP,WIDTH,HIGHT,DESKIMAGE,&bitmap)實(shí)現(xiàn)。
    其中,WIN_LEFT、WIN_TOP、WIDTH和HIGHT分別表示圖片放大顯示區(qū)域的左、上坐標(biāo)和寬、高。左、上坐標(biāo)的定位公式如下:
    WIN_LEFT=水平基準(zhǔn)坐標(biāo)+(i%DESKCOLS)×(BLTWIDTH+水平間隔)
    WIN_TOP=垂直基準(zhǔn)坐標(biāo)+(i/DESKCOLS)×(BLTHIGHT+垂直間隔)
    式中,i表示第幾個(gè)圖片,DESKCOLS表示每一行的圖片個(gè)數(shù),BLTWIDTH和BLTHIGHT各表示圖片區(qū)域的寬和高。為了減少屏幕刷新負(fù)載,不在MSG_PAINT消息中刷新背景,而是用MiniGUI.cfg配置文件中的bgpicture參數(shù)指定背景圖,并在指定的目錄中存放背景圖文件。該參數(shù)在MiniGUI的4種渲染器中都有,即在不同的渲染器中,都可以用該方法,無(wú)需用代碼去實(shí)現(xiàn)背景圖的刷新。

結(jié)語(yǔ)
    本文詳細(xì)地描述了基于MiniGUI的嵌入式系統(tǒng)用戶界面關(guān)鍵問(wèn)題的解決方案,即無(wú)抖動(dòng)動(dòng)畫(huà)的實(shí)現(xiàn)方案和功能選擇界面閃爍問(wèn)題的解決方案。當(dāng)需要實(shí)現(xiàn)動(dòng)畫(huà),而且動(dòng)畫(huà)文件較大時(shí),可以采用雙緩沖技術(shù)解決動(dòng)畫(huà)抖動(dòng)的問(wèn)題。但是雙緩沖技術(shù)需要額外的內(nèi)存設(shè)備上下文,所以簡(jiǎn)單的動(dòng)畫(huà)效果可以用SendMessage(窗口句柄,STM_SETIMAGE,pngmap,0)函數(shù)更換圖片的方式實(shí)現(xiàn)較好。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

濟(jì)南2025年8月12日 /美通社/ -- 近年來(lái),國(guó)家大力推進(jìn)信創(chuàng)產(chǎn)業(yè)發(fā)展,明確要求關(guān)鍵行業(yè)信息系統(tǒng)實(shí)現(xiàn) "自主可控、安全可靠",老年教育領(lǐng)域作為民生服務(wù)的重要陣地,其信息化建設(shè)的國(guó)產(chǎn)化適配已成為行...

關(guān)鍵字: 全棧 BSP 數(shù)據(jù)庫(kù) 加密

6月5日消息,日前,北京量子信息科學(xué)研究院宣布,我國(guó)科研團(tuán)隊(duì)首次完成星地量子直接通信系統(tǒng)模塊級(jí)驗(yàn)證。

關(guān)鍵字: 量子安全 加密

6月2日消息,據(jù)央視新聞報(bào)道,近日我國(guó)科研團(tuán)隊(duì)創(chuàng)新提出長(zhǎng)距離大規(guī)??蓴U(kuò)展全連接量子直接通信理論架構(gòu),并成功實(shí)現(xiàn)四節(jié)點(diǎn)間300公里級(jí)量子直接通信網(wǎng)絡(luò),相關(guān)研究成果發(fā)表于《科學(xué)通報(bào)》(Science Bulletin)。

關(guān)鍵字: 量子安全 加密

5月22日消息,近日,全國(guó)首條400G量子安全OTN智算加密專線業(yè)務(wù)開(kāi)通,實(shí)現(xiàn)“大帶寬傳輸”與“量子級(jí)安全”的完美兼容。

關(guān)鍵字: 量子安全 加密

北京2025月2月25日 /美通社/ -- 隨著數(shù)字技術(shù)的蓬勃發(fā)展,企業(yè)經(jīng)營(yíng)過(guò)程中產(chǎn)生的各類數(shù)據(jù)信息已然成為當(dāng)今數(shù)字經(jīng)濟(jì)和信息社會(huì)的基礎(chǔ),同時(shí)也面臨著日益嚴(yán)峻的安全挑戰(zhàn)。近日,從國(guó)家知識(shí)產(chǎn)權(quán)局傳來(lái)喜訊,眾合云科集團(tuán)一項(xiàng)信...

關(guān)鍵字: 信息安全 加密 ISO 安全管理

倫敦, Feb. 23, 2023 (GLOBE NEWSWIRE) -- 英國(guó)一家領(lǐng)先的超級(jí)跑車租賃公司剛剛推出一種加密貨幣支付系統(tǒng),服務(wù)全球最出眾的超級(jí)跑車租賃業(yè)務(wù)。 目前,客戶可以選擇以比特幣、以太坊加密貨幣或英鎊...

關(guān)鍵字: CLASSIC 加密 AD WIRE

倫敦, Nov. 25, 2022 (GLOBE NEWSWIRE) -- Tusk Inc. Limited是一家于 2012 年在英國(guó)和吉隆坡作為資本管理公司啟動(dòng)的公司。作為一家當(dāng)下處于領(lǐng)先地位的電氣解決方案公司...

關(guān)鍵字: INNOVATION 加密 COM LIMIT

近日,東航、南航、海航等多家航空公司宣布恢復(fù)并加密多條國(guó)際航線。10月17日,東方航空官宣,計(jì)劃于10月底恢復(fù)多條國(guó)際航線,包括上海—曼谷—青島、杭州/青島/南京/昆明—東京成田、青島...

關(guān)鍵字: 加密 MDASH

新加坡航空公司將于2022年10月11日開(kāi)通成都往返新加坡(航班號(hào):SQ843/SQ842)的客運(yùn)航班服務(wù),航班采用空客A350-900遠(yuǎn)程客機(jī)執(zhí)飛,每逢周二運(yùn)營(yíng)。與此同時(shí),新航深圳往返新加坡(航班號(hào):SQ847/SQ8...

關(guān)鍵字: 新加坡 加密

倫敦, Aug. 31, 2022 (GLOBE NEWSWIRE) -- Meco Limited(Mecobit)于2020年8月在香港科技局舉行的精英發(fā)布活動(dòng)上發(fā)布了備受期待的終極太陽(yáng)能發(fā)電系統(tǒng)(一套具有驚人備份和...

關(guān)鍵字: LIMIT 加密 太陽(yáng)能 電力
關(guān)閉