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

        ?

        半導(dǎo)體激光器驅(qū)動(dòng)電源的嵌入式GUI開(kāi)發(fā)

        2014-10-14 18:21:57王雪麗婁小平劉鋒張蔭民
        現(xiàn)代電子技術(shù) 2014年20期

        王雪麗+婁小平+劉鋒+張蔭民

        摘 要: 嵌入式 GUI 具有高度的可移植性和可裁剪性,基于Qt/Embedded技術(shù)開(kāi)發(fā)嵌入式GUI可以方便地移植到嵌入式操作系統(tǒng)上。介紹了嵌入式硬件設(shè)計(jì)、Linux下Qt/Embedded開(kāi)發(fā)環(huán)境的搭建、Qt應(yīng)用程序的開(kāi)發(fā),以及移植到嵌入式Linux開(kāi)發(fā)板的過(guò)程,提出用Qt/Embedded開(kāi)發(fā)半導(dǎo)體激光器驅(qū)動(dòng)電源的圖形控制界面設(shè)計(jì)方法和思路,并成功實(shí)現(xiàn)了對(duì)半導(dǎo)體激光器驅(qū)動(dòng)電源的圖形界面控制。

        關(guān)鍵詞: 嵌入式GUI; Linux; Qt/Embedded; 半導(dǎo)體激光器

        中圖分類(lèi)號(hào): TN919?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)20?0116?04

        Development of embedded GUI for semiconductor laser driving power supply

        WANG Xue?li, LOU Xiao?ping, LIU Feng, ZHANG Yin?min

        (Beijing Engineering Research Center of Optoelectronic Information and Instrument, Beijing Information Science &Technology University, Beijing 100192, China)

        Abstract: The embedded GUI has high portability and tailoring performance. The embedded GUI based on Qt/Embedded can be transplanted to the embedded operating system expediently. The design of embedded hardware, setup of Qt/ Embedded development environment in Linux, development of Qt application program and process of transplantation to embedded Linux development board are introduced. The method and idea to develop the graphical control interface of semiconductor laser driving power supply by Qt/Embedded are proposed. The graphical interface to control the semiconductor laser driving power supply was realized successfully.

        Keywords: embedded GUI; Linux; Qt/Embedded; semiconductor laser

        0 引 言

        Linux在臺(tái)式機(jī)上的成功,使大家看到了Linux在嵌入式系統(tǒng)領(lǐng)域中的輝煌應(yīng)用前景。嵌入式Linux具有源碼開(kāi)放、硬件需求低、軟件模塊化、可隨意配置免許可、可移植等特點(diǎn),符合工控領(lǐng)域可靠性、實(shí)時(shí)性、穩(wěn)定性等要求。Qt是奇趣(Trolltech)公司開(kāi)發(fā)的一套跨平臺(tái)的應(yīng)用程序開(kāi)發(fā)框架,擁有直觀(guān)、強(qiáng)大的API接口和C++類(lèi)庫(kù)[1],2000年發(fā)布的Qt/Embedded Linux版本可用于Linux嵌入式設(shè)備,Qt/Embedded Linux提供了自己的窗口系統(tǒng),并且可以作為X11的輕量級(jí)替代產(chǎn)品。半導(dǎo)體激光器具有體積小、重量輕、運(yùn)轉(zhuǎn)可靠、耗電少、效率高等優(yōu)點(diǎn),作為一種新穎的激光光源,已經(jīng)廣泛用于軍事、醫(yī)療、通信、工業(yè)等領(lǐng)域,如激光通信、激光雷達(dá)、激光手術(shù)、激光焊接。半導(dǎo)體激光器[2]的特性受驅(qū)動(dòng)電流和溫度的影響,閾值電流隨溫度的升高而增大,當(dāng)達(dá)到閾值電流時(shí)輸出光功率隨注入電流成線(xiàn)性變化,相同注入電流在不同溫度下的輸出光功率也不同,溫度的變化也會(huì)引起中心波長(zhǎng)的漂移,所以,半導(dǎo)體激光器的控制包括對(duì)驅(qū)動(dòng)電流的控制和工作溫度的控制。半導(dǎo)體激光器驅(qū)動(dòng)電源的控制方法多樣,利用Qt/Embedded開(kāi)發(fā)的嵌入式圖形用戶(hù)界面能夠方便地實(shí)現(xiàn)對(duì)驅(qū)動(dòng)源系統(tǒng)的實(shí)時(shí)監(jiān)測(cè)、控制、數(shù)據(jù)存儲(chǔ)等功能。

        1 開(kāi)發(fā)環(huán)境的搭建

        半導(dǎo)體激光器驅(qū)動(dòng)電源的控制核心處理器采用Sitare系列ARM處理器AM3354,其最高運(yùn)行頻率可達(dá)800 MHz,集成了基于ARM Cortex?A8的微處理器單元(MPU),POWERVR SGXTM圖形加速器,可編程實(shí)時(shí)單元和工業(yè)用通信子系統(tǒng),保證系統(tǒng)在低功耗運(yùn)行的同時(shí)擁有高性能。硬件結(jié)構(gòu)如圖1所示,外接256 MB的SDRAM 和2 GB的NANDFLASH;電源管理芯片TPS65217用于處理器的電源管理,它能提供靈活的加電和斷電時(shí)序并擁有電源正常輸出、按鈕監(jiān)視器等附加功能;外接7寸LCD液晶顯示觸摸屏,處理器內(nèi)的LCD控制器集成了LCD接口顯示驅(qū)動(dòng)器控制器,經(jīng)過(guò)驅(qū)動(dòng)電路后可直接連接LCD模塊;AM3354處理器最多可支持6個(gè)UART,系統(tǒng)通過(guò)串口與LD驅(qū)動(dòng)源連接進(jìn)行數(shù)據(jù)的傳輸。

        圖1 LD驅(qū)動(dòng)源控制硬件結(jié)構(gòu)圖

        嵌入式應(yīng)用軟件的開(kāi)發(fā)屬于跨平臺(tái)開(kāi)發(fā),由于目標(biāo)機(jī)CPU和宿主機(jī)CPU擁有不同的架構(gòu),需要構(gòu)建一個(gè)交叉編譯環(huán)境,使在宿主機(jī)上開(kāi)發(fā)出來(lái)的程序經(jīng)過(guò)交叉編譯后能夠在目標(biāo)機(jī)上運(yùn)行。用來(lái)開(kāi)發(fā)的計(jì)算機(jī)稱(chēng)為宿主機(jī),一般運(yùn)行Linux操作系統(tǒng)。嵌入式設(shè)備屬于目標(biāo)機(jī)。這里使用的宿主機(jī)為安裝了Ubuntu操作系統(tǒng)的X86計(jì)算機(jī)(Ubuntu是一個(gè)以桌面應(yīng)用為主的Linux操作系統(tǒng)),目標(biāo)機(jī)為AM3354為處理器的嵌入式主板,操作系統(tǒng)采用嵌入式Linux[3]。由于Qt /Embedded 和 Qt/X11有一樣的API,在開(kāi)發(fā)嵌入式環(huán)境的應(yīng)用程序時(shí),可以先在帶Qt/X11庫(kù)的宿主機(jī)上開(kāi)發(fā)[4]。

        在此安裝的交叉編譯器版本為arm?linux?gcc?4.4.3,支持硬浮點(diǎn)運(yùn)算。解壓到某一目錄下,在系統(tǒng)啟動(dòng)文件/etc/profile設(shè)置交叉編譯器環(huán)境變量,最后導(dǎo)入環(huán)境變量,#arm?linux?gcc ?v命令可以查看編譯器是否添加成功。安裝嵌入式Qt應(yīng)用程序開(kāi)發(fā)庫(kù),解壓Qt/Embedded庫(kù)[5]到相應(yīng)目錄下并編譯。在應(yīng)用程序運(yùn)行時(shí),要正確設(shè)置環(huán)境變量,以使應(yīng)該程序能正確調(diào)用安裝目錄下的庫(kù)文件。

        2 Qt/Embedded應(yīng)用程序軟件設(shè)計(jì)

        Qt/Embedded軟件體系摒棄了X lib庫(kù),將外部輸入設(shè)備抽象為鍵盤(pán)和鼠標(biāo)事件,采用幀緩沖作為底層圖形接口,應(yīng)用程序可以直接寫(xiě)內(nèi)核幀緩沖,避免了使用繁瑣的X lib/Server機(jī)制。系統(tǒng)應(yīng)用程序開(kāi)發(fā)架構(gòu)[6]如圖2所示。

        Qt/Embedded應(yīng)用程序設(shè)計(jì)有兩種方式[7],一種是用集成開(kāi)發(fā)環(huán)境圖形編程方式,一種是代碼編程方式。無(wú)論使用哪種方式都會(huì)涉及元對(duì)象系統(tǒng)。元對(duì)象系統(tǒng)是對(duì)C++進(jìn)行擴(kuò)展的一種機(jī)制,Qt使用這種機(jī)制創(chuàng)建了獨(dú)立的軟件組件,它提供了關(guān)鍵的兩項(xiàng)技術(shù):信號(hào)?槽以及內(nèi)省。內(nèi)省功能對(duì)于實(shí)現(xiàn)信號(hào)和槽是必需的,并且允許應(yīng)用程序的開(kāi)發(fā)人員在運(yùn)行時(shí)獲得有關(guān)QObject子類(lèi)的“元信息”,包括一個(gè)含有對(duì)象的類(lèi)名以及它所支持的信號(hào)和槽的列表。信號(hào)和槽是Qt通信機(jī)制的核心。當(dāng)一個(gè)特殊的事情發(fā)生時(shí)便可以發(fā)射一個(gè)信號(hào),而槽就是一個(gè)函數(shù),它在信號(hào)發(fā)射后被調(diào)用來(lái)響應(yīng)這個(gè)信號(hào),通常一個(gè)信號(hào)對(duì)應(yīng)一個(gè)槽,一個(gè)信號(hào)也可以關(guān)聯(lián)多個(gè)槽,多個(gè)信號(hào)也可以關(guān)聯(lián)到同一個(gè)槽上。

        圖2 系統(tǒng)應(yīng)用程序開(kāi)發(fā)架構(gòu)

        2.1 串口通信的實(shí)現(xiàn)

        在Qt中并沒(méi)有特定的串口控制類(lèi)[8],大部分使用第三方寫(xiě)的qextserialport類(lèi)。該類(lèi)包含兩個(gè)類(lèi):QextSerialBase類(lèi)和Posix_QextSerialPort類(lèi),后者繼承前者,而QextSerialBase類(lèi)又繼承自Qt軟件自帶的QIODevice類(lèi)。在QextSerialBase類(lèi)中涉及到了一個(gè)枚舉變量QueryMode,它有兩個(gè)值Polling和EventDriven ,Polling指的是查詢(xún)方式讀/寫(xiě)串口,EventDriven是事件驅(qū)動(dòng)方式。 事件驅(qū)動(dòng)方式就是使用事件處理串口的讀取,一旦有數(shù)據(jù)到來(lái),就會(huì)發(fā)出readyRead()信號(hào),就可以關(guān)聯(lián)該信號(hào)來(lái)讀取串口的數(shù)據(jù)。

        在事件驅(qū)動(dòng)的方式下,串口的讀/寫(xiě)是異步的,調(diào)用讀/寫(xiě)函數(shù)會(huì)立即返回,它們不會(huì)凍結(jié)調(diào)用線(xiàn)程。而查詢(xún)方式Polling讀/寫(xiě)函數(shù)是同步執(zhí)行的,信號(hào)工作在這種模式下是不起作用的,但這種模式下開(kāi)銷(xiāo)較小,可以建立定時(shí)器來(lái)讀取串口的數(shù)據(jù),并將結(jié)果顯示在Qt的圖形用戶(hù)界面上。這里采用Polling查詢(xún)方式讀/寫(xiě)串口。設(shè)置一個(gè)100 ms的定時(shí)器,通過(guò)Qt特有的信號(hào)與槽機(jī)制,將定時(shí)溢出信號(hào)關(guān)聯(lián)到讀串口槽函數(shù)上,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)采集顯示。

        程序流程如圖3所示。首先新建一個(gè)串口類(lèi),設(shè)置串口通信的屬性,最常見(jiàn)的屬性設(shè)置包括通信端口、波特率、數(shù)據(jù)位、奇偶校驗(yàn)、停止位以及控制流等,然后讀/寫(xiě)串口。

        圖3 串口通信流程圖

        每個(gè)設(shè)備端口在/dev目錄下都有一個(gè)對(duì)應(yīng)的文件,Linux下的文件用文件描述符來(lái)描述,它指向內(nèi)核中每個(gè)進(jìn)程打開(kāi)的文件記錄表。串口資源的文件路徑是/dev/ttyO*,因此對(duì)串口的操作就像對(duì)普通文件的操作一樣,部分操作程序如下:

        struct PortSettings myComSetting = {BAUD9600,DATA_8,PAR_NONE,STOP_1,F(xiàn)LOW_OFF,500};

        QString portName ="/dev/ttyO2";

        myCom=new Posix_QextSerialPort(portName,myComSetting,QextSerialBase::EventDriven);

        myCom?>open(QIODevice::ReadWrite);

        QByteArray temp=myCom?>readAll();

        2.2 軟鍵盤(pán)的調(diào)用

        文中設(shè)計(jì)的軟鍵盤(pán)包括字母、數(shù)字的輸入、大小寫(xiě)字母的切換以及退格、回車(chē)等功能。在Linux環(huán)境的Qt Designer下,創(chuàng)建一個(gè)新的Widget,將Buttons選項(xiàng)中的PushButton按鍵拖入到軟鍵盤(pán)區(qū)域內(nèi),然后根據(jù)需要修改每個(gè)按鍵上面的文本屬性和名字屬性。

        軟鍵盤(pán)的實(shí)現(xiàn)是基于信號(hào)與槽機(jī)制 [9]。利用Qt的多信號(hào)映射機(jī)制,首先使用QSignalMapper類(lèi)來(lái)捆綁不同按鍵所發(fā)送的一系列無(wú)參數(shù)信號(hào),并將其轉(zhuǎn)化為有參數(shù)的信號(hào),實(shí)現(xiàn)一個(gè)函數(shù)可以響應(yīng)不同按鈕的功能;然后需要建立每一鍵值對(duì)應(yīng)的信號(hào)與槽之間的關(guān)系connect(ui?>pushButton, SIGNAL(clicked()),&mapper, SLOT(map()));最后將所有的字母和數(shù)字通過(guò)多信號(hào)映射連接到槽函數(shù)中,將鍵值傳遞給焦點(diǎn)控:connect(&mapper,SIGNAL(mapped(QWidget*)),this,SLOT(buttonClicked(QWidget*))),當(dāng)有按鍵按下時(shí),mapped(QWidget*)信號(hào)會(huì)觸發(fā)buttonClicked槽函數(shù),在buttonClicked函數(shù)中發(fā)送按鍵的ASCII碼值信號(hào)調(diào)用sendCharacter(QChar)槽,從而實(shí)現(xiàn)正確的鍵值輸入。界面設(shè)計(jì)如圖4所示。

        圖4 軟鍵盤(pán)界面

        Qt設(shè)計(jì)師窗口部件簡(jiǎn)單有限,某些情況下要自定義窗口部件。它有兩種方法:改進(jìn)法和插件法。插件法需要?jiǎng)?chuàng)建一個(gè)插件庫(kù),它為可選的額外功能提供了一個(gè)特殊接口。Qt設(shè)計(jì)師運(yùn)行時(shí)可以加載這個(gè)庫(kù),并且利用該庫(kù)創(chuàng)建窗口部件的實(shí)例,本設(shè)計(jì)自定義了三個(gè)窗口部件QMeter、thermometer和led。

        3 程序的移植和發(fā)布

        安裝了交叉工具鏈以及經(jīng)過(guò)交叉編譯的Qt/E庫(kù)后[10],就可以將前面編輯好的應(yīng)用程序進(jìn)行交叉編譯生成可執(zhí)行二進(jìn)制文件,然后發(fā)布到嵌入式控制板中。另外,在發(fā)布之前需要先移植tslib和Qt/E庫(kù),tslib是電阻式觸摸屏用于校準(zhǔn)的一個(gè)軟件庫(kù),是一個(gè)開(kāi)源的程序,能夠?yàn)橛|摸屏驅(qū)動(dòng)獲得的采樣提供諸如濾波、去抖、校準(zhǔn)等功能,通常作為觸摸屏驅(qū)動(dòng)的適配層,為上層的應(yīng)用提供了一個(gè)統(tǒng)一的接口。解壓根文件系統(tǒng)到home路徑下,復(fù)制編譯好的tslib、Qt/E庫(kù)文件到根文件系統(tǒng)中,最后導(dǎo)出相應(yīng)的環(huán)境變量。應(yīng)該程序可以以界面圖標(biāo)的形式運(yùn)行,這時(shí),就需要自己制作啟動(dòng)器文件,在forlinx/web/lighttpd/webpages/apps目錄下新建current.desktop文件,然后編輯該文件:

        #!/usr/bin/env xdg?open

        [Desktop Entry]

        Name=Serial

        GenericName=Demo App

        Icon=/forlinx/web/lighttpd/webpages/apps/images/current.png

        Exec=/forlinx/web/lighttpd/webpages/shell/current.sh

        Type=Application

        ProgramType=gui

        current.png是一個(gè)32×32的PNG圖標(biāo)文件,可根據(jù)自己的需要制作并存于相應(yīng)路徑下。交叉編譯生成的二進(jìn)制文件current放于forlinx/qt/bin目錄中。current.sh是編寫(xiě)的shell腳本,當(dāng)用戶(hù)點(diǎn)擊界面圖標(biāo)時(shí)會(huì)自動(dòng)執(zhí)行腳本文件里的命令:

        #!/bin/sh

        if test ?e /dev/fb0;

        then

        width=′fbset | grep ′geometry′ | awk ′{print $2}′′

        height=′fbset | grep ′geometry′ | awk ′{print $3}′′

        let height=height?38

        geo=′echo $width\x$height+0+0′

        fi

        pidof matrix_gui > /dev/null 2>&1

        if [ $? == 0 ]

        then /forlinx/qt/bin/serial ?geometry $geo$*

        else

        export TSLIB_TSDEVICE=/dev/input/touchscreen0

        export QWS_MOUSE_PROTO=Tslib:/dev/input/touchscreen0

        /forlinx/qt/bin/current ?qws ?geometry $geo$*

        fi

        如果需要開(kāi)機(jī)自動(dòng)運(yùn)行程序,可以編輯啟動(dòng)時(shí)的執(zhí)行文件/etc/init.d/rcS,將啟動(dòng)程序路徑和可執(zhí)行應(yīng)用程序名添加到這里,就可以實(shí)現(xiàn)系統(tǒng)啟動(dòng)時(shí)程序的自動(dòng)運(yùn)行,在嵌入式主板上運(yùn)行效果如圖5所示。

        4 結(jié) 語(yǔ)

        嵌入式系統(tǒng)的實(shí)時(shí)性、高可靠性以及友好高效的GUI被廣泛用于工業(yè)控制當(dāng)中?;赒t/Embedded設(shè)計(jì)的嵌入式控制界面實(shí)現(xiàn)了與單片機(jī)的串口通信、文字的編輯、控件的載入和顯示、數(shù)據(jù)的保存記憶、軟鍵盤(pán)的調(diào)用等功能。本文根據(jù)光纖激光器泵浦源的特點(diǎn),以設(shè)計(jì)泵浦源驅(qū)動(dòng)的人機(jī)交互界面為前提,結(jié)合用戶(hù)需求和Qt/Embedded特點(diǎn)來(lái)開(kāi)發(fā)嵌入式控制面板。詳細(xì)介紹了基于Qt/Embedded的嵌入式應(yīng)用程序的開(kāi)發(fā)過(guò)程,并成功移植到嵌入板中控制LD正常工作。

        圖5 在主板上的運(yùn)行效果圖

        參考文獻(xiàn)

        [1] [加拿大] BLANCHETTE Jasmin, [英] SUMMERFIELD Mark. C++ GUI Qt4編程[M].北京:電子工業(yè)出版社,2010.

        [2] 趙忠偉,吳廣業(yè).半導(dǎo)體激光器驅(qū)動(dòng)電路設(shè)計(jì)[J].中國(guó)電子科學(xué)研究院學(xué)報(bào),2011(6):657?660.

        [3] 陳樂(lè),唐波,盧力.嵌入式環(huán)境下串行幀通信的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2010,33(23):60?62.

        [4] 湯偉,李強(qiáng).Qt/E的嵌入式Linux GUI研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(10):260?263.

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

        [6] 楊柳,岳坤,龐和明,等.Qt/Embedded及嵌入式 Linux 在智能監(jiān)控系統(tǒng)控制中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2010,30(1):289?291.

        [7] 趙瑩,徐大平,呂躍剛.基于Qt/Embedded的嵌入式控制界面開(kāi)發(fā)[J].微計(jì)算機(jī)信息,2009,25(11):36?38.

        [8] 劉依晗,丑武勝,董明杰.基于QT/E串口通信的手持監(jiān)控器[J].現(xiàn)代電子技術(shù),2013,36(20):110?112.

        [9] 謝芬,潘麗,劉守印.基于QT/E的嵌入式Linux系統(tǒng)的軟鍵盤(pán)實(shí)現(xiàn)[J].電子設(shè)計(jì)工程, 2012,20(5):177?179.

        [10] 游燕珍,趙國(guó)鋒,徐川.基于Qt/E的嵌入式GUI的研究及其移植[J].微計(jì)算機(jī)信息,2008,24(14):61?63.

        圖4 軟鍵盤(pán)界面

        Qt設(shè)計(jì)師窗口部件簡(jiǎn)單有限,某些情況下要自定義窗口部件。它有兩種方法:改進(jìn)法和插件法。插件法需要?jiǎng)?chuàng)建一個(gè)插件庫(kù),它為可選的額外功能提供了一個(gè)特殊接口。Qt設(shè)計(jì)師運(yùn)行時(shí)可以加載這個(gè)庫(kù),并且利用該庫(kù)創(chuàng)建窗口部件的實(shí)例,本設(shè)計(jì)自定義了三個(gè)窗口部件QMeter、thermometer和led。

        3 程序的移植和發(fā)布

        安裝了交叉工具鏈以及經(jīng)過(guò)交叉編譯的Qt/E庫(kù)后[10],就可以將前面編輯好的應(yīng)用程序進(jìn)行交叉編譯生成可執(zhí)行二進(jìn)制文件,然后發(fā)布到嵌入式控制板中。另外,在發(fā)布之前需要先移植tslib和Qt/E庫(kù),tslib是電阻式觸摸屏用于校準(zhǔn)的一個(gè)軟件庫(kù),是一個(gè)開(kāi)源的程序,能夠?yàn)橛|摸屏驅(qū)動(dòng)獲得的采樣提供諸如濾波、去抖、校準(zhǔn)等功能,通常作為觸摸屏驅(qū)動(dòng)的適配層,為上層的應(yīng)用提供了一個(gè)統(tǒng)一的接口。解壓根文件系統(tǒng)到home路徑下,復(fù)制編譯好的tslib、Qt/E庫(kù)文件到根文件系統(tǒng)中,最后導(dǎo)出相應(yīng)的環(huán)境變量。應(yīng)該程序可以以界面圖標(biāo)的形式運(yùn)行,這時(shí),就需要自己制作啟動(dòng)器文件,在forlinx/web/lighttpd/webpages/apps目錄下新建current.desktop文件,然后編輯該文件:

        #!/usr/bin/env xdg?open

        [Desktop Entry]

        Name=Serial

        GenericName=Demo App

        Icon=/forlinx/web/lighttpd/webpages/apps/images/current.png

        Exec=/forlinx/web/lighttpd/webpages/shell/current.sh

        Type=Application

        ProgramType=gui

        current.png是一個(gè)32×32的PNG圖標(biāo)文件,可根據(jù)自己的需要制作并存于相應(yīng)路徑下。交叉編譯生成的二進(jìn)制文件current放于forlinx/qt/bin目錄中。current.sh是編寫(xiě)的shell腳本,當(dāng)用戶(hù)點(diǎn)擊界面圖標(biāo)時(shí)會(huì)自動(dòng)執(zhí)行腳本文件里的命令:

        #!/bin/sh

        if test ?e /dev/fb0;

        then

        width=′fbset | grep ′geometry′ | awk ′{print $2}′′

        height=′fbset | grep ′geometry′ | awk ′{print $3}′′

        let height=height?38

        geo=′echo $width\x$height+0+0′

        fi

        pidof matrix_gui > /dev/null 2>&1

        if [ $? == 0 ]

        then /forlinx/qt/bin/serial ?geometry $geo$*

        else

        export TSLIB_TSDEVICE=/dev/input/touchscreen0

        export QWS_MOUSE_PROTO=Tslib:/dev/input/touchscreen0

        /forlinx/qt/bin/current ?qws ?geometry $geo$*

        fi

        如果需要開(kāi)機(jī)自動(dòng)運(yùn)行程序,可以編輯啟動(dòng)時(shí)的執(zhí)行文件/etc/init.d/rcS,將啟動(dòng)程序路徑和可執(zhí)行應(yīng)用程序名添加到這里,就可以實(shí)現(xiàn)系統(tǒng)啟動(dòng)時(shí)程序的自動(dòng)運(yùn)行,在嵌入式主板上運(yùn)行效果如圖5所示。

        4 結(jié) 語(yǔ)

        嵌入式系統(tǒng)的實(shí)時(shí)性、高可靠性以及友好高效的GUI被廣泛用于工業(yè)控制當(dāng)中?;赒t/Embedded設(shè)計(jì)的嵌入式控制界面實(shí)現(xiàn)了與單片機(jī)的串口通信、文字的編輯、控件的載入和顯示、數(shù)據(jù)的保存記憶、軟鍵盤(pán)的調(diào)用等功能。本文根據(jù)光纖激光器泵浦源的特點(diǎn),以設(shè)計(jì)泵浦源驅(qū)動(dòng)的人機(jī)交互界面為前提,結(jié)合用戶(hù)需求和Qt/Embedded特點(diǎn)來(lái)開(kāi)發(fā)嵌入式控制面板。詳細(xì)介紹了基于Qt/Embedded的嵌入式應(yīng)用程序的開(kāi)發(fā)過(guò)程,并成功移植到嵌入板中控制LD正常工作。

        圖5 在主板上的運(yùn)行效果圖

        參考文獻(xiàn)

        [1] [加拿大] BLANCHETTE Jasmin, [英] SUMMERFIELD Mark. C++ GUI Qt4編程[M].北京:電子工業(yè)出版社,2010.

        [2] 趙忠偉,吳廣業(yè).半導(dǎo)體激光器驅(qū)動(dòng)電路設(shè)計(jì)[J].中國(guó)電子科學(xué)研究院學(xué)報(bào),2011(6):657?660.

        [3] 陳樂(lè),唐波,盧力.嵌入式環(huán)境下串行幀通信的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2010,33(23):60?62.

        [4] 湯偉,李強(qiáng).Qt/E的嵌入式Linux GUI研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(10):260?263.

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

        [6] 楊柳,岳坤,龐和明,等.Qt/Embedded及嵌入式 Linux 在智能監(jiān)控系統(tǒng)控制中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2010,30(1):289?291.

        [7] 趙瑩,徐大平,呂躍剛.基于Qt/Embedded的嵌入式控制界面開(kāi)發(fā)[J].微計(jì)算機(jī)信息,2009,25(11):36?38.

        [8] 劉依晗,丑武勝,董明杰.基于QT/E串口通信的手持監(jiān)控器[J].現(xiàn)代電子技術(shù),2013,36(20):110?112.

        [9] 謝芬,潘麗,劉守印.基于QT/E的嵌入式Linux系統(tǒng)的軟鍵盤(pán)實(shí)現(xiàn)[J].電子設(shè)計(jì)工程, 2012,20(5):177?179.

        [10] 游燕珍,趙國(guó)鋒,徐川.基于Qt/E的嵌入式GUI的研究及其移植[J].微計(jì)算機(jī)信息,2008,24(14):61?63.

        圖4 軟鍵盤(pán)界面

        Qt設(shè)計(jì)師窗口部件簡(jiǎn)單有限,某些情況下要自定義窗口部件。它有兩種方法:改進(jìn)法和插件法。插件法需要?jiǎng)?chuàng)建一個(gè)插件庫(kù),它為可選的額外功能提供了一個(gè)特殊接口。Qt設(shè)計(jì)師運(yùn)行時(shí)可以加載這個(gè)庫(kù),并且利用該庫(kù)創(chuàng)建窗口部件的實(shí)例,本設(shè)計(jì)自定義了三個(gè)窗口部件QMeter、thermometer和led。

        3 程序的移植和發(fā)布

        安裝了交叉工具鏈以及經(jīng)過(guò)交叉編譯的Qt/E庫(kù)后[10],就可以將前面編輯好的應(yīng)用程序進(jìn)行交叉編譯生成可執(zhí)行二進(jìn)制文件,然后發(fā)布到嵌入式控制板中。另外,在發(fā)布之前需要先移植tslib和Qt/E庫(kù),tslib是電阻式觸摸屏用于校準(zhǔn)的一個(gè)軟件庫(kù),是一個(gè)開(kāi)源的程序,能夠?yàn)橛|摸屏驅(qū)動(dòng)獲得的采樣提供諸如濾波、去抖、校準(zhǔn)等功能,通常作為觸摸屏驅(qū)動(dòng)的適配層,為上層的應(yīng)用提供了一個(gè)統(tǒng)一的接口。解壓根文件系統(tǒng)到home路徑下,復(fù)制編譯好的tslib、Qt/E庫(kù)文件到根文件系統(tǒng)中,最后導(dǎo)出相應(yīng)的環(huán)境變量。應(yīng)該程序可以以界面圖標(biāo)的形式運(yùn)行,這時(shí),就需要自己制作啟動(dòng)器文件,在forlinx/web/lighttpd/webpages/apps目錄下新建current.desktop文件,然后編輯該文件:

        #!/usr/bin/env xdg?open

        [Desktop Entry]

        Name=Serial

        GenericName=Demo App

        Icon=/forlinx/web/lighttpd/webpages/apps/images/current.png

        Exec=/forlinx/web/lighttpd/webpages/shell/current.sh

        Type=Application

        ProgramType=gui

        current.png是一個(gè)32×32的PNG圖標(biāo)文件,可根據(jù)自己的需要制作并存于相應(yīng)路徑下。交叉編譯生成的二進(jìn)制文件current放于forlinx/qt/bin目錄中。current.sh是編寫(xiě)的shell腳本,當(dāng)用戶(hù)點(diǎn)擊界面圖標(biāo)時(shí)會(huì)自動(dòng)執(zhí)行腳本文件里的命令:

        #!/bin/sh

        if test ?e /dev/fb0;

        then

        width=′fbset | grep ′geometry′ | awk ′{print $2}′′

        height=′fbset | grep ′geometry′ | awk ′{print $3}′′

        let height=height?38

        geo=′echo $width\x$height+0+0′

        fi

        pidof matrix_gui > /dev/null 2>&1

        if [ $? == 0 ]

        then /forlinx/qt/bin/serial ?geometry $geo$*

        else

        export TSLIB_TSDEVICE=/dev/input/touchscreen0

        export QWS_MOUSE_PROTO=Tslib:/dev/input/touchscreen0

        /forlinx/qt/bin/current ?qws ?geometry $geo$*

        fi

        如果需要開(kāi)機(jī)自動(dòng)運(yùn)行程序,可以編輯啟動(dòng)時(shí)的執(zhí)行文件/etc/init.d/rcS,將啟動(dòng)程序路徑和可執(zhí)行應(yīng)用程序名添加到這里,就可以實(shí)現(xiàn)系統(tǒng)啟動(dòng)時(shí)程序的自動(dòng)運(yùn)行,在嵌入式主板上運(yùn)行效果如圖5所示。

        4 結(jié) 語(yǔ)

        嵌入式系統(tǒng)的實(shí)時(shí)性、高可靠性以及友好高效的GUI被廣泛用于工業(yè)控制當(dāng)中?;赒t/Embedded設(shè)計(jì)的嵌入式控制界面實(shí)現(xiàn)了與單片機(jī)的串口通信、文字的編輯、控件的載入和顯示、數(shù)據(jù)的保存記憶、軟鍵盤(pán)的調(diào)用等功能。本文根據(jù)光纖激光器泵浦源的特點(diǎn),以設(shè)計(jì)泵浦源驅(qū)動(dòng)的人機(jī)交互界面為前提,結(jié)合用戶(hù)需求和Qt/Embedded特點(diǎn)來(lái)開(kāi)發(fā)嵌入式控制面板。詳細(xì)介紹了基于Qt/Embedded的嵌入式應(yīng)用程序的開(kāi)發(fā)過(guò)程,并成功移植到嵌入板中控制LD正常工作。

        圖5 在主板上的運(yùn)行效果圖

        參考文獻(xiàn)

        [1] [加拿大] BLANCHETTE Jasmin, [英] SUMMERFIELD Mark. C++ GUI Qt4編程[M].北京:電子工業(yè)出版社,2010.

        [2] 趙忠偉,吳廣業(yè).半導(dǎo)體激光器驅(qū)動(dòng)電路設(shè)計(jì)[J].中國(guó)電子科學(xué)研究院學(xué)報(bào),2011(6):657?660.

        [3] 陳樂(lè),唐波,盧力.嵌入式環(huán)境下串行幀通信的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2010,33(23):60?62.

        [4] 湯偉,李強(qiáng).Qt/E的嵌入式Linux GUI研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2011,28(10):260?263.

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

        [6] 楊柳,岳坤,龐和明,等.Qt/Embedded及嵌入式 Linux 在智能監(jiān)控系統(tǒng)控制中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2010,30(1):289?291.

        [7] 趙瑩,徐大平,呂躍剛.基于Qt/Embedded的嵌入式控制界面開(kāi)發(fā)[J].微計(jì)算機(jī)信息,2009,25(11):36?38.

        [8] 劉依晗,丑武勝,董明杰.基于QT/E串口通信的手持監(jiān)控器[J].現(xiàn)代電子技術(shù),2013,36(20):110?112.

        [9] 謝芬,潘麗,劉守印.基于QT/E的嵌入式Linux系統(tǒng)的軟鍵盤(pán)實(shí)現(xiàn)[J].電子設(shè)計(jì)工程, 2012,20(5):177?179.

        [10] 游燕珍,趙國(guó)鋒,徐川.基于Qt/E的嵌入式GUI的研究及其移植[J].微計(jì)算機(jī)信息,2008,24(14):61?63.

        极品一区二区在线视频| 538亚洲欧美国产日韩在线精品| 国产 字幕 制服 中文 在线| 国内a∨免费播放| 香色肉欲色综合| 无码av在线a∨天堂毛片| 中国免费av网| 国产黄色一级到三级视频| 99久久精品国产91| 午夜被窝精品国产亚洲av香蕉| 精品国偷自产在线视频九色| 精品国产车一区二区三区| 国产精品自产拍在线观看免费| 亚洲 国产 韩国 欧美 在线| 中文字幕久久人妻av| 亚洲中文字幕在线一区| 亚洲av日韩av永久无码下载| 色橹橹欧美在线观看视频高清| 亚洲av无码第一区二区三区| 国产在线丝袜精品一区免费| 第十色丰满无码| 国产成版人性视频免费版| 亚洲日本一区二区在线| 比较有韵味的熟妇无码| 品色永久免费| 国产日韩亚洲欧洲一区二区三区| 8090成人午夜精品无码| 亚洲熟女av在线观看| 国产精品偷窥熟女精品视频| 国产欧美日韩精品专区| 尤物视频在线观看| 日本色噜噜| 级毛片无码av| 一区二区三区蜜桃av| 高清毛茸茸的中国少妇| 久久香蕉国产线熟妇人妻| 国产免费又色又爽又黄软件| 国产资源精品一区二区免费| 加勒比东京热久久综合| 中文字日产幕码三区做法| 综合色就爱涩涩涩综合婷婷|