亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Linux與Qt4的網(wǎng)絡(luò)數(shù)碼相框?qū)崿F(xiàn)

        2014-09-26 03:48:30張紅雨
        電子設(shè)計(jì)工程 2014年2期
        關(guān)鍵詞:嵌入式信號(hào)功能

        童 凱,張紅雨

        (成都電子科技大學(xué) 電子工程學(xué)院,四川 成都 611731)

        在這個(gè)數(shù)字時(shí)代,數(shù)碼相機(jī)及各種電子拍照設(shè)備走入千家萬戶,越來越多的家庭都擁有自己美好的“數(shù)字回憶”,怎樣回顧這些讓人難忘的記憶呢?傳統(tǒng)的方式是將相片沖洗成實(shí)物,或者將數(shù)字資源上傳到PC觀看。但是這些數(shù)字資源往往數(shù)量巨大,沖洗成實(shí)物浪費(fèi)資源,且使用起來極不方便。數(shù)碼相框以其便捷,可重復(fù)使用等特點(diǎn),極大的滿足了人們?cè)谶@一方面應(yīng)用的需求。本設(shè)計(jì)提出了一種實(shí)現(xiàn)數(shù)碼相框的方案,并加強(qiáng)了網(wǎng)絡(luò)功能。

        1 技術(shù)方案

        目前數(shù)碼相機(jī)生產(chǎn)的圖片格式大多為.jpg文件,顯示這些圖片需要進(jìn)行JPEG解碼處理,同時(shí)為了顯示的流暢性,對(duì)圖片處理實(shí)時(shí)性有較高的要求。結(jié)合功能需求與性價(jià)比考慮,選用低功耗、高性能的32位ARM處理器S3C2440。

        基于ARM920T體系結(jié)構(gòu)的S3C2440嵌入式微處理器具有如下特點(diǎn):16/32bit處理字長(zhǎng),ARM920T內(nèi)核,擁有MMU與CACHE,IIS總線控制器,LCD控制器,ADC控制器,最高工作頻率達(dá)到400MHz,運(yùn)算能力為440MIPS,能夠勝任圖像的處理任務(wù);LCD控制器、ADC控制器為使用觸摸屏設(shè)備提供了方便,簡(jiǎn)化了外圍電路的設(shè)計(jì)[1]。所以,硬件部分采用在S3C2440基礎(chǔ)上構(gòu)建的一個(gè)具有網(wǎng)絡(luò)功能的嵌入式平臺(tái)。

        軟件部分選擇較新的Linux2.6.30操作系統(tǒng),Linux操作系統(tǒng)屬于開源免費(fèi)的,可大大降低產(chǎn)品的開發(fā)成本。Linux操作系統(tǒng)遵守GPL開發(fā)原則,可找到豐富的驅(qū)動(dòng)程序源碼以及庫函數(shù),該系統(tǒng)還支持TCP/IP協(xié)議棧,可以有效降低開發(fā)難度,縮短開發(fā)周期[2]。完全滿足Web數(shù)碼相框的設(shè)計(jì)要求。

        Qt是一個(gè)使用廣泛的面向?qū)ο缶幊痰目缙脚_(tái)圖形界面開發(fā)工具,擁有豐富的類庫、清晰的開發(fā)文檔。Qt/Embedded的API和Qt的API有著類似的接口,但是有針對(duì)嵌入式開發(fā)的特點(diǎn)進(jìn)行的改進(jìn),包括手寫識(shí)別、選擇板和虛擬鍵盤等等。本設(shè)計(jì)使用Qt的QFtp類實(shí)現(xiàn)FTP客戶端用于傳輸圖片,使用QPixmap和QPainter類實(shí)現(xiàn)圖片的顯示以及調(diào)整。

        2 硬件設(shè)計(jì)

        2.1 觸摸屏接口電路

        觸摸屏接口電路主要包括兩部分,一是LCD顯示電路,二是 ADC轉(zhuǎn)換電路。本設(shè)計(jì)采用 480×272的 TFT LCD,S3C2440 LCD控制器能夠?yàn)門FT屏提供必要的控制信號(hào),比如幀同步信號(hào)VFRAME,行同步信號(hào) VLINE,時(shí)鐘信號(hào)VCLK等。圖2是LCD控制器的框圖,其中REGBANK是LCD控制寄存器組,包括了17個(gè)LCD控制寄存器以及一款256×16的調(diào)色板內(nèi)存;LCDCDMA是其專用的DMA通道,可以自發(fā)地從總線上獲取圖片的數(shù)據(jù);VIDPRCS將LCDCDMA中傳輸過來的數(shù)據(jù)轉(zhuǎn)換成特定的格式;TIMEGEN與LPC3600,LCC3600協(xié)調(diào)產(chǎn)生LCD屏所需的控制時(shí)序。S3C2440與LCD的硬件連線如圖3所示。

        圖1 硬件系統(tǒng)方案圖Fig.1 Hardware system diagram

        圖4 DM9000連線示意圖Fig.4 DM9000 connection diagram

        圖2 S3C2440 LCD控制器框圖Fig.2 S3C2440 LCD controller

        圖3 S3C2440與LCD的硬件連線圖Fig.3 S3C2440 with LCD’s hardware diagram

        S3C2440提供了觸摸屏的觸控接口,向外提供4個(gè)控制信號(hào)引腳:nYPON、YMON 、nXPON、XMON,以及兩個(gè)中斷信號(hào):INT_ADC,表示 AD轉(zhuǎn)換完成;INT_TC,表示觸摸屏被按下或拿起。通過這兩個(gè)信號(hào)的不同組合,可以表達(dá)出不同的觸摸動(dòng)作,在應(yīng)用程序端可以識(shí)別并進(jìn)行處理。

        2.2 網(wǎng)卡芯片DM9000接口電路

        網(wǎng)絡(luò)接口設(shè)計(jì)采用目前常見的DM9000芯片。該芯片是一款高度集成的,低成本的單片快速以太網(wǎng)控制器,包含10M/100M物理層,16KB SDRAM以及通用的處理器接口,支持遠(yuǎn)端喚醒。S3C2440與DM9000之間采用地址線和數(shù)據(jù)線復(fù)用的方式,使用CMD信號(hào)來分辨他們。DM9000的訪問基址為 0x20000000(BANK4的基址)。nOE、nWE 分別控制讀/寫操作使能。完成一次數(shù)據(jù)的讀寫產(chǎn)一個(gè)中斷信號(hào),接到EINT7。網(wǎng)絡(luò)接口設(shè)計(jì)如圖4所示。

        3 軟件設(shè)計(jì)

        3.1 在S3C2440嵌入式平臺(tái)上搭建Linux系統(tǒng)簡(jiǎn)介

        Linux的低成本、強(qiáng)大的定制功能(內(nèi)核可裁剪,網(wǎng)絡(luò)功能強(qiáng)大)以及良好的移植性能,使得Linux在嵌入式系統(tǒng)方面得到廣泛應(yīng)用。搭建一個(gè)嵌入式linux系統(tǒng)通常需要以下幾個(gè)步驟:移植Bootloader;移植內(nèi)核;構(gòu)建根文件系統(tǒng)[3]。

        3.1.1 移植Bootloader

        使用Bootloader是為了在系統(tǒng)上電時(shí),完成部分硬件設(shè)備的初始化,準(zhǔn)備好軟件環(huán)境,最后調(diào)用操作系統(tǒng)。U-BOOT是一款常用的Bootloader,可以引導(dǎo)多種操作系統(tǒng),支持多種架構(gòu)的CPU。本設(shè)計(jì)采用的U-BOOT版本為1.1.6,主要完成的工作包括:修改SMDK2410板的系統(tǒng)時(shí)鐘、SDRAM時(shí)鐘設(shè)置方式,使其支持S3C2440芯片;新建nand_flash.c文件,修改對(duì)nand flash命令的支持,加入型號(hào)為 K9F1208U0B的nand flash的信息,添加配置的宏定義,然后在cpu/arm920t/s3c24x0/Makefile中的COBJS添加nand_flash.o項(xiàng)。

        3.1.2 移植內(nèi)核

        內(nèi)核移植的工作很多,這里只提出和本設(shè)計(jì)重點(diǎn)相關(guān)的幾個(gè)配置,配置LCD驅(qū)動(dòng)寄存器;設(shè)置Bufferframe;添加對(duì)DM9000驅(qū)動(dòng)的支持;選擇支持input子系統(tǒng)和yaffs子文件系統(tǒng)等,然后對(duì)該源碼進(jìn)行針對(duì)目標(biāo)平臺(tái)的交叉編譯(armlinux-),生成內(nèi)核鏡像文件,最后將鏡像文件燒寫到目標(biāo)平臺(tái)中。

        3.1.3 構(gòu)建根文件系統(tǒng)

        根文件系統(tǒng)存放著Linux操作系統(tǒng)啟動(dòng)必須的文件與程序,比如提供用于界面的shell程序,應(yīng)用程序使用的庫,配置文件等等。通常使用工具集來構(gòu)建根文件系統(tǒng)[4]。使用busybox工具集創(chuàng)建根文件系統(tǒng)主要包括以下步驟:獲取源代碼;配置,busybox中包含了數(shù)百個(gè)系統(tǒng)命令,嵌入式系統(tǒng)并不會(huì)完全使用到這些命令,可以篩選命令以減少根文件系統(tǒng)的大??;編譯,安裝;創(chuàng)建必要的目錄與文件,主要是etc目錄下對(duì)系統(tǒng)進(jìn)行整體配置的文件inittab,默認(rèn)啟動(dòng)腳本rcS,掛載文件系統(tǒng)需要的fstab文件以及dev目錄下的設(shè)備文件。隨后使用mkyaffs2工具將整個(gè)根文件系統(tǒng)制作成yaffs映像文件。

        3.2 Qt/Embedded編程

        3.2.1 通過QFtp類實(shí)現(xiàn)FTP客戶端功能

        QFtp類提供了實(shí)現(xiàn)FTP通信的底層函數(shù):connectToHost(), login(), close(), list(), cd(), get(), put(), remove(),mkdir(), rmdir(), rename()和 rawCommand(),以異步方式工作,當(dāng)某個(gè)操作不能立即執(zhí)行完的時(shí)候,馬上返回繼續(xù)執(zhí)行下一條指令,通過發(fā)送signals來對(duì)執(zhí)行結(jié)果進(jìn)行通知。使用時(shí)封裝一個(gè)自己的FtpWindow類,然后將QFtp類作為private成員,這樣就可以調(diào)用QFtp類中的底層函數(shù)來實(shí)現(xiàn)FTP 通信[5]。

        在FtpWindow類的構(gòu)造函數(shù) FtpWindow::FtpWindow()中設(shè)置GUI,設(shè)置好的客戶端界面如下所示:

        圖5 FTP客戶端界面Fig.5 FTP client interface

        然后通過信號(hào)與槽機(jī)制,設(shè)置按下各個(gè)功能按鈕后進(jìn)行的操作。

        connect (progressDialog, SIGNAL (canceled ()), this,SLOT(cancelDownload()));//取消下載

        connect(connectButton, SIGNAL(clicked()), this, SLOT(connectToFtp()));//連接 FTP 服務(wù)器

        connect (cdToParentButton, SIGNAL (clicked ()), this,SLOT(cdToParent()));//返回上層目錄

        connect (downloadButton, SIGNAL (clicked ()), this,SLOT(downloadFile()));//下載文件

        connect (quitButton, SIGNAL (clicked ()), this, SLOT(close()));//退出

        輸入ftp服務(wù)器地址,調(diào)用connectToFtp函數(shù),創(chuàng)建一個(gè)新的QFtp對(duì)象ftp,使用信號(hào)與槽機(jī)制,關(guān)聯(lián)listInfo信號(hào)與addToList函數(shù):

        connect (ftp, SIGNAL (listInfo (QUrlInfo)), this, SLOT(addToList(QUrlInfo)));

        將輸入的服務(wù)器地址作為參數(shù)傳遞給QUrl對(duì)象,QUrl類含有對(duì)url地址進(jìn)行解析的函數(shù)。它默認(rèn)的ftp有效地址結(jié)構(gòu)如下所示。

        圖6 Ftp有效地址結(jié)構(gòu)Fig.6 Ftp valid address structure

        將解析出的參數(shù)傳遞給QFtp::connetToHost函數(shù),連接主機(jī)。如果url中指定用戶名與密碼,使用QFtp::login(url.user(),url.password())進(jìn)行登錄。登錄后,QFtp::list()將查詢服務(wù)器上的目錄,發(fā)出listInfo(const QUrlInfo&)信號(hào)觸發(fā)addToList函數(shù)為目錄下的每個(gè)文件及目錄創(chuàng)建一個(gè)QTreeWidgetItem對(duì)象,利用 QUrlInfo型參數(shù)對(duì)QTreeWidgetItem對(duì)象進(jìn)行設(shè)置,完成后添加至FtpWindow::QTreeWidget對(duì)象filelist。在GUI界面就可以看到這些目錄項(xiàng)了。

        當(dāng)一個(gè)目錄項(xiàng)被雙擊時(shí),將調(diào)用FtpWindow::processItem(),查詢isDirectory里關(guān)于該項(xiàng)的記錄,如果是目錄,就改變當(dāng)前路徑,進(jìn)入到新目錄,更新filelist。下載文件時(shí),downloadFile()函數(shù)使用 QFtp::get()函數(shù)下載文件。FtpWindow::QTreeWidget對(duì)象獲取選定文件的文件名,在客戶端建立一個(gè)QFile對(duì)象使用該文件名作為參數(shù),在本地目錄建立文件。

        3.2.2 圖片顯示

        Qt畫圖機(jī)制為屏幕顯示提供了統(tǒng)一的API接口,主要分為 3類:QPainter類,QPaintDevice類和 QPaintEngine類。QPainter類提供了畫圖操作的各種接口;QPaintDevie類提供了用于畫圖的空間,是所有可以用QPainter類進(jìn)行繪圖的類的基類;QPaintEngine類類則是內(nèi)部使用的抽象接口,是前面兩種類的橋梁[6]。

        常用的畫圖容器有QPixmap,QImage。QPixmap是針對(duì)熒幕顯示圖像而設(shè)計(jì)并最佳化,依賴于所在平臺(tái)的原生繪圖引擎,所以一些效果的展現(xiàn)(比如反鋸齒),在不同的平臺(tái)上可能會(huì)有不一致的結(jié)果,并且無法提供個(gè)別像素的存取。QImage使用Qt自身的繪圖引擎,可在不同平臺(tái)上顯示相同的圖像效果,并可透過 setPixpel()、pixel()等方法,直接存取指定的像素。本設(shè)計(jì)采用的是QPixmap。

        圖片顯示主要實(shí)現(xiàn)的功能包括:圖片顯示,縮放,翻轉(zhuǎn)。在圖片顯示主界面設(shè)置toolbar,設(shè)置相應(yīng)功能的圖標(biāo),當(dāng)我們按下這些圖標(biāo)的時(shí)候,就可以通過信號(hào)與槽機(jī)制,調(diào)用到相應(yīng)的功能函數(shù),實(shí)現(xiàn)圖片的切換,縮放,翻轉(zhuǎn)功能。

        顯示圖片:編譯Qt/Embedded時(shí),在configure中指定我們需要顯示jpg,jpeg格式,就由Qt自身實(shí)現(xiàn)圖片的編解碼,而不需要借助第三方的軟件。調(diào)用QPainter::drawPixmap(int x,int y, int width, int height, const QPixmap&pixmap) 繪制需要的圖片,繪制時(shí)參數(shù)有多種。上述的參數(shù)表使用x,y指定顯示位置,width、height限定顯示的大小。可通過(QPixmap::load())::size()獲取加載圖片的尺寸可以進(jìn)行優(yōu)化設(shè)置。pixmap是繪圖容器,pixmap.load()從本地文件夾里加載需要顯示的圖片。

        縮放:在播放圖片的時(shí)候,會(huì)因?yàn)楸壤头直媛实膯栴}而導(dǎo)致圖片不能全屏顯示,為了更好的展示圖片的細(xì)節(jié),設(shè)計(jì)了圖片縮放功能。本設(shè)計(jì)指定,每按一次放大/縮小按鈕,邊框變化10%。以放大為例:

        圖7 pixmap縮放模式Fig.7 Pixmap scale mode

        Qt::IgnoreAspectRatio:忽略長(zhǎng)寬比,按指定的大小縮放;

        Qt::KeepAspectRatio:保持長(zhǎng)寬比,并讓圖片在指定外框內(nèi)盡量縮放;

        Qt::KeepAspectRatioByExpanding:保持長(zhǎng)寬比,以邊框的最小長(zhǎng)度作為寬度進(jìn)行縮放。

        圖片的翻轉(zhuǎn)通過改變QPainter的作圖坐標(biāo)系實(shí)現(xiàn),常規(guī)情況下,QPainter作圖參照的坐標(biāo)系是顯示器上的像素點(diǎn)。通過 QPainter::rotate(qreal angle)函數(shù)實(shí)現(xiàn)翻轉(zhuǎn),angle 大于 0,順時(shí)鐘方向旋轉(zhuǎn);小于0,逆時(shí)針方向旋轉(zhuǎn)。

        4 結(jié)束語

        本設(shè)計(jì)方案是基于Qt/Embedded的一種網(wǎng)絡(luò)數(shù)碼相框?qū)崿F(xiàn),使用QT類實(shí)現(xiàn)了數(shù)碼相框顯示圖片的功能,另外,本設(shè)計(jì)可通過FTP客戶端從服務(wù)器端實(shí)時(shí)更新資源,解決了嵌入式產(chǎn)品內(nèi)存小帶來的不便。使用Qt/Embedded做開發(fā),擁有大量的可用庫和清晰的指導(dǎo)文檔,便于實(shí)現(xiàn)功能的擴(kuò)展。

        [1]Samsung.S3C2440A 32-Bit CMOS Microcontroller User’s Manual[C]//Revision 1 Publication Number:21-S3-C2440A-072004,2004.

        [2]徐英慧,馬忠梅,王磊,等.ARM9嵌入式系統(tǒng)設(shè)計(jì)---基于S3C2410與Linux[M].北京:北京航空航天大學(xué)出版社,2007.

        [3]天嵌科技.基于天嵌科技的SKY2440/TQ2440的Linux系統(tǒng)移植手冊(cè)V4.5.2010.6.5[EB/OL].http://www.armbbs.net/forum.php mod=viewthread&tid=630&extra=page%3D2.

        [4]韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊(cè)[M].北京:人民郵電出版社,2008.

        [5]Jasmin Blanchette, Mark Summerfield.C ++ GUI Programming with Qt4[M].Pretice Hall Ptr,2007.

        [6]周潔.基于Qtopia的數(shù)碼相框軟件開發(fā) [J].華東交通大學(xué)學(xué)報(bào),2012,29(2):88-93.

        ZHOU Jie.Digital album software development based on Qtopia[J].Journal of East China Jiaotong University,2012,29(2):88-93.

        猜你喜歡
        嵌入式信號(hào)功能
        也談詩的“功能”
        中華詩詞(2022年6期)2022-12-31 06:41:24
        信號(hào)
        鴨綠江(2021年35期)2021-04-19 12:24:18
        完形填空二則
        基于FPGA的多功能信號(hào)發(fā)生器的設(shè)計(jì)
        電子制作(2018年11期)2018-08-04 03:25:42
        搭建基于Qt的嵌入式開發(fā)平臺(tái)
        關(guān)于非首都功能疏解的幾點(diǎn)思考
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        基于LabVIEW的力加載信號(hào)采集與PID控制
        Altera加入嵌入式視覺聯(lián)盟
        中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
        国产黄色一级到三级视频| 中文字幕久无码免费久久| 天堂网www在线资源| 日韩精品视频在线观看免费| 久久国产精品亚洲我射av大全| 久久精品网站免费观看| 好日子在线观看视频大全免费动漫| 国产精品成人嫩妇| 国产啪啪视频在线观看| 精品人妻一区三区蜜桃| 天美传媒一区二区| 精品视频在线观看免费无码| 精品蜜桃在线观看一区二区三区| 亚洲精品国产一二三区| 蜜臀av 国内精品久久久| 国产AV国片精品有毛| 国产又色又爽的视频在线观看91| 亚洲国产精品久久精品| 成人黄色网址| 欧美激情国产一区在线不卡| 一区二区三区在线观看视频精品 | 色综合av综合无码综合网站| 麻豆国产人妻欲求不满| 国产不卡在线免费视频| 亚洲国产丝袜久久久精品一区二区 | av网页在线免费观看| 极品av一区二区三区| 亚洲av无码专区在线播放中文| 国产又色又爽又刺激视频| 久久精品一区二区三区夜夜| 亚洲色一区二区三区四区| 国产suv精品一区二人妻| 无码中文字幕av免费放| 99青青草视频在线观看| 六月丁香综合在线视频| 久久网视频中文字幕综合| 亚洲一区二区视频蜜桃| 我和丰满妇女激情视频| 亚洲av无码专区电影在线观看| 中文字幕人成人乱码亚洲| 高清国产国产精品三级国产av|