欧美成人毛片_我要看特级黄色片_黄色一区二区三区四区_老师洗澡让我吃她胸视频_亚州中文字幕_快猫成人在线观看

用QtE實(shí)現(xiàn)SBC一241OX上的LED控制

來源:電子工程世界 更新日期:2011-03-15 作者:佚名

    引言

    近年來,由于ARM(Advanced RISC Machines)在性能、功耗、成本和體積上的優(yōu)勢,使得它在嵌入式系統(tǒng)中的發(fā)展如日中天,它在工業(yè)控制、航空航天、軍事領(lǐng)域、消費(fèi)電子、智能家電和視頻監(jiān)控等方面都發(fā)揮了重大的作用。很多人都迫切地想學(xué)習(xí)ARM,以筆者的經(jīng)驗(yàn),從最基本的LED控制學(xué)起,是一個(gè)不錯(cuò)的選擇。

    如果不熟悉Linux,可能對(duì)QtE的概念知之甚少,它是挪威Trolltech公司為各種系統(tǒng)設(shè)計(jì)的圖形用戶界面工具包,采用c++語言編程。QtE的優(yōu)點(diǎn)有:跨平臺(tái),可以方便的連接數(shù)據(jù)庫,可以將程序與Java集成等。其實(shí),QtE在一些高端的移動(dòng)手持設(shè)備中早已深入人心,Troll—tech公司在QtE的基礎(chǔ)上開發(fā)了一個(gè)應(yīng)用環(huán)境Qtopia,目前已有很多公司采用Qtopia來開發(fā)他們的主流PDA。當(dāng)然,Qt也有它的缺點(diǎn),既不能提供IDE(集成開發(fā)環(huán)境),但這個(gè)缺點(diǎn)在強(qiáng)大的Linux下顯得微不足道。使用gcc/g++,加上Qt的開發(fā)工具:Qt Designer,tmake/qmake,UIC等,開發(fā)可視化程序?qū)⒆兊檬秩菀住?/P>

    要學(xué)習(xí)ARM,選擇一款好的開發(fā)板是必不可少的。SBC一2410X是廣州友善之臂公司設(shè)計(jì)的一款基于ARM9的開發(fā)板,操作系統(tǒng)是韓國的mizi-linux。SBC-2410X不同于uClinux,它的接口豐富,且支持MMU、QtE2.3.7,同時(shí)提供了控制LED的命令行方式。

    1 系統(tǒng)需求

    完全安裝RedHat9.0。

    在Linux下建立QtE編譯環(huán)境。

    開發(fā)板上已經(jīng)加載LED設(shè)備驅(qū)動(dòng)程序。

    注意:你所建立的QtE版本必須與開發(fā)板所支持的版本一致。

    2 程序設(shè)計(jì)

    在Linux下,用系統(tǒng)自帶的Qt Designer來編寫程序。Qt Designer是一個(gè)優(yōu)秀的可視化開發(fā)工具,用它來設(shè)計(jì)十分容易。它的界面類似于Delphi,但使用C++語言編寫應(yīng)用程序。Qt程序設(shè)計(jì)里的一個(gè)亮點(diǎn)就是SignaI-_Slot機(jī)制,它有點(diǎn)類似于VC++里的消息機(jī)制。當(dāng)一個(gè)組件發(fā)出Signal時(shí),其他一個(gè)組件或多個(gè)組件可以通過Slot接收發(fā)來的SignaI,組件本身也可以接收自己的Signal,這樣處理一個(gè)事件將變得非常容易。Qt Designer的優(yōu)點(diǎn)不僅在于它可以十分方便的設(shè)計(jì)圖形用戶界面,還表現(xiàn)在可以用連接工具很容易的把Signals和Slots連接起來。用戶自己設(shè)計(jì)的程序添加在**.ui.h中。

    打開Qt Deslgner,選擇File/new C++Project,命名為led.pro并保存。接著選擇File/new-Dialog,并在此設(shè)計(jì)自己的用戶界面。最后選擇File/new C++Main—File,系統(tǒng)自動(dòng)生成一個(gè)main.cpp文件。圖形用戶界面如圖1所示,Initlalize按鈕主要完成LED設(shè)備的打開,定時(shí)器的關(guān)閉和其他一些初始化工作;Begim按鈕則針對(duì)LED Display Mode的開始;Exit按鈕為退出應(yīng)用程序。左面的組合框包括4個(gè)RadioButton,對(duì)應(yīng)4個(gè)LED的亮或滅;右面的組合框包括6個(gè)RadioButton(對(duì)應(yīng)不同的閃爍模式和閃爍快慢)和1個(gè)LCDNumber(用來顯示閃爍的時(shí)間間隔)。本程序建立的Signal—S1ot連接有許多,下面對(duì)幾個(gè)重要的連接和函數(shù)進(jìn)行說明。

    (1)connect(initPushButton.SIGNAL(clicked()),this.SLOT(initial()))

    當(dāng)Initialize按鈕按下時(shí),LedForm對(duì)話框接收此信號(hào),并執(zhí)行initial()函數(shù)。Linux操作系統(tǒng)把所有的設(shè)備都看成文件,因此對(duì)設(shè)備的操作控制可以通過open()、ioctl()等函數(shù)實(shí)現(xiàn)。在initial()函數(shù)中就是調(diào)用了open()函數(shù)來打開LED設(shè)備的。

    (2)connect(okPushButton,SIGNAL(clicked()),this,SLOT(modeSel()))

    當(dāng)Begin按鈕按下時(shí),LedForm對(duì)話框接收此信號(hào),并執(zhí)行modeSel()函數(shù)。在modeSel()函數(shù)中開啟定時(shí)器,并創(chuàng)建另外一個(gè)連接用來循環(huán)顯示LED。在命令行方式中,LED的循環(huán)顯示要用到死循環(huán),并用鍵盤中斷來控制循環(huán);而在Qt或其他可視化語言中,則要用到定時(shí)器來控制循環(huán)。

    (3)函數(shù)open()

    在<fcntl.h>中聲明,含義為打開設(shè)備文件。打開成功返回0;失敗返回一1。

    (4)函數(shù)ioctl()

    在<sys/ioctl.h>中聲明,控制I/O端口。例如:

    Int fd=open(”/dev/leds”,0);

    ioctl(fd,0,3); //讓LED4滅

    (5)函數(shù)select()

    在<sys/select.h>中聲明,含義為經(jīng)過多長時(shí)間訪問一次設(shè)備。

    3 程序移植與運(yùn)行

    要想使程序運(yùn)行在開發(fā)板的Qtopia中,則必須在建立的QtE環(huán)境下編譯,并設(shè)置好環(huán)境變量。終端進(jìn)入所建立的QtE目錄后,環(huán)境變量或運(yùn)行環(huán)境變量和腳本設(shè)置如下:

    export QTDIR=$PWD/qt

    export QPEDlR=$PWD/qtopia

    export TMAKEDIR=$PWD/tmake

    export TMAKEPATH=$TMAKEDIR/lib/qws/linux-armg++

    export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/

    bin:$PATH

    值得注意的一點(diǎn)是:用Linux自帶的Qt Designer創(chuàng)建的工程文件只適用于qmake,而筆者建立的QtE環(huán)境只能用tmake來生成makefile,因此需要修改led.pro文件,讓它適用于tmake,修改如下:

    TEMPLATE =app

    CoNFIG +=qtopia warn_on release

    SoURCES +=main.epp

    INTERFACES =led.ui

    TARGET =led

    以上的工作做完后,就可以編譯了。編譯成功后生成可執(zhí)行的二進(jìn)制文件led,然而要使程序運(yùn)行在開發(fā)板上的qtopia桌面上,還需要一個(gè)桌面文件led.desktop和自定義的一個(gè)圖標(biāo)led.png。桌面文件如下:

    [Desktop Entry]

    Comment=a LED Control Program

    Exee=led

    Icon=led

    Type=Application

    Name=LED Control

    然后,把led復(fù)制到SBC-2410X下/opt/qtopia/bin目錄下,led.png復(fù)制到/opt/qtopia/pics目錄下,led.desktop復(fù)制到/0pt/qtopia/apps/Applications目錄下。最后,用ehmod a+X led改變文件led的權(quán)限,重新啟動(dòng)系統(tǒng),便可看到led.png的圖標(biāo)顯示在qtopia桌面上,點(diǎn)擊此圖標(biāo)就可運(yùn)行程序了。

    4 部分源程序及注釋

    由于源程序代碼比較長,這里就不全部列出了,僅給出重要部分的代碼及注釋,以供讀者參考。

    (1) 程序的初始化

    int fd: //LED設(shè)備文件句柄

    int type=1; //默認(rèn)方式為計(jì)數(shù)器

    double period=0.2; //默認(rèn)時(shí)間間隔

    QTimer*t=new QTimer(Q″timer″);//創(chuàng)建定時(shí)器

    void LedForm::initial(){

    fd=open(″/dev/leds″,0); //打開LED設(shè)備

    其他一些初始化語句

    一>stop(); //關(guān)閉定時(shí)器

    (2) LED顯示方式的設(shè)置

    void LedForm::push-leds(void){

    static unsigned step;

    unsigned led—bitmap;

    inti;

    switch(type){

    case 0: //方式0:跑馬燈

    if(step>=14){step=0;}

    if(step<7){led_bitmap=1<<step;}

    else{led_bitmap=1<<(14一step);}

    break;

    case 1: //方式1:計(jì)數(shù)器

    if(step>255){step=0;)

    Ied_bitmap=step!

    break;

    case 2: //方式2:停止

    led_bitmap=0:

    break;

    step十十;

    for(i=0;i<8;l++){

    ioctl(fd,led_bitmap&1,i);

    led_bitmap>>=1;

    (3) LED設(shè)備的讀取及調(diào)用LED顯示程序

    void LedForm::ledDisplay(){

    fd_set rds;

    struct timeval step;

    FD_ZERO(&rds);

    step.tv_sec=period;

    step.tv_usec=(pefiod—step.W_sec)*1000000L;

    select(fd,&rds,NULL,NULL,&step);

    push_leds();

    (4)循環(huán)顯示的實(shí)現(xiàn)

    void LedForm::modeSel(){

    t-->start(O);//啟動(dòng)定時(shí)器,并立即發(fā)出Signal- timeout()

    connect(t,SIGNAL(timeout()),this.SLOT(1edDisplay()));

    結(jié) 語

    隨著通信行業(yè)的迅猛發(fā)展,移動(dòng)手持設(shè)備必將成為人們工作、學(xué)習(xí)和生活的主流,用Qt設(shè)計(jì)移動(dòng)手持設(shè)備的GUI有著得天獨(dú)厚的優(yōu)勢。目前,Qt應(yīng)用于全世界上百個(gè)軟件開發(fā)項(xiàng)目中。在我國,Qt的發(fā)展也有星星之火可以燎原之勢。

   

   

 標(biāo)簽:工控 技術(shù)介紹
廣告聯(lián)系:010-82755684 | 010-82755685 手機(jī)版:m.pjtime.com官方微博:weibo.com/pjtime官方微信:pjtime
Copyright (C) 2007 by PjTime.com,投影時(shí)代網(wǎng) 版權(quán)所有 關(guān)于投影時(shí)代 | 聯(lián)系我們 | 歡迎來稿 | 網(wǎng)站地圖
返回首頁 網(wǎng)友評(píng)論 返回頂部 建議反饋
快速評(píng)論
驗(yàn)證碼: 看不清?點(diǎn)一下
發(fā)表評(píng)論
主站蜘蛛池模板: 精品人妻AV区波多野结衣 | 99久女女精品视频在线观看 | 鲍鱼av在线 | 黑人强伦姧人妻日韩那庞大的 | 人人妻人人澡人人爽精品日本 | 国产亚洲精品BT天堂精选 | 亚洲小说在线图片色 | 欧美视频在线观看不卡 | 日韩成人视屏 | 亚洲人成网站18禁止无码 | 99热福利| 亚洲国产欧美在线人成大黄瓜 | 精品91一区二区三区 | 最近MV中文字幕国语免费 | 免费视频三区 | 少妇与黑人xoyyyyy视频 | 国产精品va视频 | 夜射av| 欧美momsxxx| 日本丰满少妇无码AⅤ波多 视色视频在线观看 | 老熟女一区二区免费 | 亚洲第一页在线播放 | 色婷婷成人做爰视频免费 | 亚洲AV色香蕉一区二区三区 | 黄色高清免费网站 | 风间由美大战黑人3连炮 | 久夜蜜汁av玖潮碰撩尤物 | 色婷婷久久99综合精品jk白丝 | 国产噜噜噜噜噜久久久久久久久 | 成人黄色免费视频网站 | 大陆少妇xxxx做受 | 国产精品乱码毛片在线人与 | 夜夜狂射影院欧美极品 | 男人的天堂视频网站 | 日日摸日日搞日日 | 国产精品美女爽爽爽 | 欧美图一区| 日韩成人免费视频 | 在线视频福利 | 久久精品国内一区二区三区 | www久久|