999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

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

摘 要: 嵌入式 GUI 具有高度的可移植性和可裁剪性,基于Qt/Embedded技術(shù)開發(fā)嵌入式GUI可以方便地移植到嵌入式操作系統(tǒng)上。介紹了嵌入式硬件設(shè)計(jì)、Linux下Qt/Embedded開發(fā)環(huán)境的搭建、Qt應(yīng)用程序的開發(fā),以及移植到嵌入式Linux開發(fā)板的過程,提出用Qt/Embedded開發(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)體激光器

中圖分類號(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具有源碼開放、硬件需求低、軟件模塊化、可隨意配置免許可、可移植等特點(diǎn),符合工控領(lǐng)域可靠性、實(shí)時(shí)性、穩(wěn)定性等要求。Qt是奇趣(Trolltech)公司開發(fā)的一套跨平臺(tái)的應(yīng)用程序開發(fā)框架,擁有直觀、強(qiáng)大的API接口和C++類庫[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í)輸出光功率隨注入電流成線性變化,相同注入電流在不同溫度下的輸出光功率也不同,溫度的變化也會(huì)引起中心波長(zhǎng)的漂移,所以,半導(dǎo)體激光器的控制包括對(duì)驅(qū)動(dòng)電流的控制和工作溫度的控制。半導(dǎo)體激光器驅(qū)動(dòng)電源的控制方法多樣,利用Qt/Embedded開發(fā)的嵌入式圖形用戶界面能夠方便地實(shí)現(xiàn)對(duì)驅(qū)動(dòng)源系統(tǒng)的實(shí)時(shí)監(jiān)測(cè)、控制、數(shù)據(jù)存儲(chǔ)等功能。

1 開發(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)過驅(qū)動(dòng)電路后可直接連接LCD模塊;AM3354處理器最多可支持6個(gè)UART,系統(tǒng)通過串口與LD驅(qū)動(dòng)源連接進(jìn)行數(shù)據(jù)的傳輸。

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

嵌入式應(yīng)用軟件的開發(fā)屬于跨平臺(tái)開發(fā),由于目標(biāo)機(jī)CPU和宿主機(jī)CPU擁有不同的架構(gòu),需要構(gòu)建一個(gè)交叉編譯環(huán)境,使在宿主機(jī)上開發(fā)出來的程序經(jīng)過交叉編譯后能夠在目標(biāo)機(jī)上運(yùn)行。用來開發(fā)的計(jì)算機(jī)稱為宿主機(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,在開發(fā)嵌入式環(huán)境的應(yīng)用程序時(shí),可以先在帶Qt/X11庫的宿主機(jī)上開發(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)用程序開發(fā)庫,解壓Qt/Embedded庫[5]到相應(yīng)目錄下并編譯。在應(yīng)用程序運(yùn)行時(shí),要正確設(shè)置環(huán)境變量,以使應(yīng)該程序能正確調(diào)用安裝目錄下的庫文件。

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

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

Qt/Embedded應(yīng)用程序設(shè)計(jì)有兩種方式[7],一種是用集成開發(fā)環(huán)境圖形編程方式,一種是代碼編程方式。無論使用哪種方式都會(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)用程序的開發(fā)人員在運(yùn)行時(shí)獲得有關(guān)QObject子類的“元信息”,包括一個(gè)含有對(duì)象的類名以及它所支持的信號(hào)和槽的列表。信號(hào)和槽是Qt通信機(jī)制的核心。當(dāng)一個(gè)特殊的事情發(fā)生時(shí)便可以發(fā)射一個(gè)信號(hào),而槽就是一個(gè)函數(shù),它在信號(hào)發(fā)射后被調(diào)用來響應(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)用程序開發(fā)架構(gòu)

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

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

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

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

圖3 串口通信流程圖

每個(gè)設(shè)備端口在/dev目錄下都有一個(gè)對(duì)應(yīng)的文件,Linux下的文件用文件描述符來描述,它指向內(nèi)核中每個(gè)進(jìn)程打開的文件記錄表。串口資源的文件路徑是/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 軟鍵盤的調(diào)用

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

軟鍵盤的實(shí)現(xiàn)是基于信號(hào)與槽機(jī)制 [9]。利用Qt的多信號(hào)映射機(jī)制,首先使用QSignalMapper類來捆綁不同按鍵所發(fā)送的一系列無參數(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ù)字通過多信號(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 軟鍵盤界面

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

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

安裝了交叉工具鏈以及經(jīng)過交叉編譯的Qt/E庫后[10],就可以將前面編輯好的應(yīng)用程序進(jìn)行交叉編譯生成可執(zhí)行二進(jìn)制文件,然后發(fā)布到嵌入式控制板中。另外,在發(fā)布之前需要先移植tslib和Qt/E庫,tslib是電阻式觸摸屏用于校準(zhǔn)的一個(gè)軟件庫,是一個(gè)開源的程序,能夠?yàn)橛|摸屏驅(qū)動(dòng)獲得的采樣提供諸如濾波、去抖、校準(zhǔn)等功能,通常作為觸摸屏驅(qū)動(dòng)的適配層,為上層的應(yīng)用提供了一個(gè)統(tǒng)一的接口。解壓根文件系統(tǒng)到home路徑下,復(fù)制編譯好的tslib、Qt/E庫文件到根文件系統(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是編寫的shell腳本,當(dāng)用戶點(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

如果需要開機(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é) 語

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

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

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

安裝了交叉工具鏈以及經(jīng)過交叉編譯的Qt/E庫后[10],就可以將前面編輯好的應(yīng)用程序進(jìn)行交叉編譯生成可執(zhí)行二進(jìn)制文件,然后發(fā)布到嵌入式控制板中。另外,在發(fā)布之前需要先移植tslib和Qt/E庫,tslib是電阻式觸摸屏用于校準(zhǔn)的一個(gè)軟件庫,是一個(gè)開源的程序,能夠?yàn)橛|摸屏驅(qū)動(dòng)獲得的采樣提供諸如濾波、去抖、校準(zhǔn)等功能,通常作為觸摸屏驅(qū)動(dòng)的適配層,為上層的應(yīng)用提供了一個(gè)統(tǒng)一的接口。解壓根文件系統(tǒng)到home路徑下,復(fù)制編譯好的tslib、Qt/E庫文件到根文件系統(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是編寫的shell腳本,當(dāng)用戶點(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

如果需要開機(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é) 語

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

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

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

安裝了交叉工具鏈以及經(jīng)過交叉編譯的Qt/E庫后[10],就可以將前面編輯好的應(yīng)用程序進(jìn)行交叉編譯生成可執(zhí)行二進(jìn)制文件,然后發(fā)布到嵌入式控制板中。另外,在發(fā)布之前需要先移植tslib和Qt/E庫,tslib是電阻式觸摸屏用于校準(zhǔn)的一個(gè)軟件庫,是一個(gè)開源的程序,能夠?yàn)橛|摸屏驅(qū)動(dòng)獲得的采樣提供諸如濾波、去抖、校準(zhǔn)等功能,通常作為觸摸屏驅(qū)動(dòng)的適配層,為上層的應(yīng)用提供了一個(gè)統(tǒng)一的接口。解壓根文件系統(tǒng)到home路徑下,復(fù)制編譯好的tslib、Qt/E庫文件到根文件系統(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是編寫的shell腳本,當(dāng)用戶點(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

如果需要開機(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é) 語

嵌入式系統(tǒng)的實(shí)時(shí)性、高可靠性以及友好高效的GUI被廣泛用于工業(yè)控制當(dāng)中。基于Qt/Embedded設(shè)計(jì)的嵌入式控制界面實(shí)現(xiàn)了與單片機(jī)的串口通信、文字的編輯、控件的載入和顯示、數(shù)據(jù)的保存記憶、軟鍵盤的調(diào)用等功能。本文根據(jù)光纖激光器泵浦源的特點(diǎn),以設(shè)計(jì)泵浦源驅(qū)動(dòng)的人機(jī)交互界面為前提,結(jié)合用戶需求和Qt/Embedded特點(diǎn)來開發(fā)嵌入式控制面板。詳細(xì)介紹了基于Qt/Embedded的嵌入式應(yīng)用程序的開發(fā)過程,并成功移植到嵌入板中控制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] 陳樂,唐波,盧力.嵌入式環(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)用開發(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的嵌入式控制界面開發(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)的軟鍵盤實(shí)現(xiàn)[J].電子設(shè)計(jì)工程, 2012,20(5):177?179.

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

主站蜘蛛池模板: 欧美无专区| AV不卡无码免费一区二区三区| 三级毛片在线播放| 亚洲最大福利网站| 这里只有精品在线播放| 欧美精品亚洲精品日韩专| 全部无卡免费的毛片在线看| 一本一道波多野结衣一区二区| 日本色综合网| 亚洲精品中文字幕无乱码| 日韩AV无码免费一二三区| 国产在线一区二区视频| 日韩美一区二区| 久久这里只精品国产99热8| 91网在线| 欧美色视频在线| 97在线观看视频免费| 日韩毛片视频| 亚洲人成色77777在线观看| Jizz国产色系免费| 亚洲第一区精品日韩在线播放| 亚洲欧洲日韩综合色天使| 亚洲国产成人久久精品软件| 99草精品视频| 久久人人妻人人爽人人卡片av| 国产午夜不卡| 欧洲亚洲欧美国产日本高清| 久久黄色小视频| 国产97公开成人免费视频| 精品国产女同疯狂摩擦2| 国产激爽大片高清在线观看| 久操线在视频在线观看| 日韩精品毛片| 国产一区二区福利| 久久99国产综合精品女同| 一级一级特黄女人精品毛片| 91成人在线观看| 欧美日本中文| 午夜三级在线| 国产免费羞羞视频| 在线看片国产| 国产特一级毛片| 免费高清自慰一区二区三区| 免费jizz在线播放| 久久综合色天堂av| 国产视频欧美| 亚洲成人免费看| 福利小视频在线播放| 亚洲中文字幕手机在线第一页| 亚洲欧美精品一中文字幕| 国产美女免费| 亚洲欧洲免费视频| 色老头综合网| 日本不卡在线视频| 中文字幕精品一区二区三区视频 | 尤物成AV人片在线观看| 久久久久久高潮白浆| 久久综合成人| 色悠久久综合| 久草网视频在线| 真实国产精品vr专区| 国产欧美日韩18| 18禁色诱爆乳网站| 又粗又硬又大又爽免费视频播放| 黄色在线不卡| 视频在线观看一区二区| 91色爱欧美精品www| 毛片视频网| 亚洲最大综合网| 99视频国产精品| 国产女人在线| 久久青草精品一区二区三区| 亚洲午夜福利精品无码| 国产欧美日韩在线在线不卡视频| 老熟妇喷水一区二区三区| 欧美一区精品| 女人18毛片久久| 成人久久精品一区二区三区| 中文字幕日韩丝袜一区| 女人18毛片久久| 91香蕉国产亚洲一二三区| 久久永久视频|