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

基于嵌入式Linux的北斗二代接收機(jī)應(yīng)用開(kāi)發(fā)

2014-12-13 09:43:53路振民,邵瓊玲,宋方
現(xiàn)代電子技術(shù) 2014年23期

路振民,邵瓊玲,宋方

摘 ?要: 基于嵌入式Linux,使用UM220和TE6410開(kāi)發(fā)板,完成了北斗二代接收機(jī)的應(yīng)用開(kāi)發(fā)。通過(guò)嵌入式Linux和Qt/E的移植,實(shí)現(xiàn)了Qt的GUI界面顯示,利用Linux多線程的特點(diǎn),完整實(shí)現(xiàn)了NMEA 數(shù)據(jù)的接收、處理、顯示以及可視星的星座圖顯示,對(duì)北斗二代系統(tǒng)終端的開(kāi)發(fā)有一定的借鑒意義。

關(guān)鍵詞: 北斗二代系統(tǒng); 嵌入式Linux; 應(yīng)用開(kāi)發(fā); 數(shù)據(jù)接收

中圖分類(lèi)號(hào): TN927+.2?34; TP311.1; V19 ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼: A ? ? ? ? ? 文章編號(hào): 1004?373X(2014)23?0155?04

Application development of BD2 receiver based on embedded Linux

LU Zhen?min1, SHAO Qiong?ling2, SONG Fang3

(1. Company of Postgraduate Management, the Academy of Equipment, Beijing 101416, China;

2. Department of Space Equipment, the Academy of Equipment, Beijing 101416, China; 3. Detachment 54, Unit 73678 of PLA, Xiamen 361009, China)

Abstract: In this paper, the application development of BD?2 receiver base on embedded Linux was performed on UM220 module and TE6410 board. By transplantation of the embedded Linux and Qt/E, the Qt GUI interface display was realized. NMEA data receiving, processing, display and constellation show of the visible satellite were completely implemented by means of the Linux multithreaded characteristics. It has certain reference significance for the development of BD?2 terminal.

Keywords: BD2 receiver; embedded Linux; application development; data acceptance

0 ?引 ?言

隨著北斗二代系統(tǒng)在國(guó)內(nèi)及周邊區(qū)域無(wú)源定位的實(shí)現(xiàn)[1],北斗二代終端的設(shè)計(jì)及應(yīng)用也逐漸成為研究熱點(diǎn)。

Linux可在GNU公共許可權(quán)限下免費(fèi)獲得,并且符合POSIX標(biāo)準(zhǔn)[2]。采用開(kāi)源的嵌入式Linux作為嵌入式操作系統(tǒng),可以有效避免關(guān)于版權(quán)的糾紛,節(jié)省了大量的開(kāi)發(fā)費(fèi)用[3]。同時(shí),嵌入式Linux還可以根據(jù)應(yīng)用需求進(jìn)行內(nèi)核裁剪,可應(yīng)用于多種硬件平臺(tái)。

因此,本文提出基于開(kāi)源的嵌入式Linux系統(tǒng),實(shí)現(xiàn)了北斗無(wú)源定位數(shù)據(jù)的接收、提取,同時(shí)采用QT/E進(jìn)行軟件界面設(shè)計(jì),實(shí)現(xiàn)數(shù)據(jù)的顯示,滿足了北斗接收機(jī)應(yīng)用的基本需求。通過(guò)該方法,有效地降低了北斗接收機(jī)的開(kāi)發(fā)成本,同時(shí)對(duì)北斗接收機(jī)的開(kāi)發(fā)具備一定的借鑒意義。

1 ?硬件平臺(tái)介紹

本文所采用的硬件開(kāi)發(fā)平臺(tái)為UM220導(dǎo)航模塊和TE6410開(kāi)發(fā)板。

其中UM220為BD/GPS雙系統(tǒng)導(dǎo)航模塊,可同時(shí)接收BD2 B1、GPS L1兩個(gè)頻點(diǎn)的信號(hào),進(jìn)行接收、解調(diào)、解算,生成定位相關(guān)信息,并從串口輸出NMEA(National Marine Electronics Association)數(shù)據(jù)。

TE6410開(kāi)發(fā)板采用基于ARM11的S3C6410作為主控制器,通過(guò)串口的控制完成數(shù)據(jù)的讀取,在運(yùn)行嵌入式Linux的基礎(chǔ)上,實(shí)現(xiàn)了數(shù)據(jù)的提取和顯示。

本文采用的硬件平臺(tái)工作原理圖如圖1所示。

<;E:\2014年23期\2014年23期\Image\42t1.tif>;

圖1 硬件平臺(tái)組成框圖

2 ?開(kāi)發(fā)環(huán)境搭建

2.1 ?嵌入式Linux介紹

嵌入式Linux是運(yùn)行在嵌入式設(shè)備上的Linux,是根據(jù)硬件設(shè)備進(jìn)行定制的一種小型操作系統(tǒng)[2],由內(nèi)核(kernel)及部分系統(tǒng)模塊組成。

嵌入式Linux主要有跨平臺(tái)、可裁剪、移植性好、開(kāi)源、支持多任務(wù)多進(jìn)程等優(yōu)點(diǎn),是用途最廣,裝備最多的嵌入式操作系統(tǒng)[4]。

2.2 ?嵌入式Linux移植

本文所述的軟件開(kāi)發(fā)環(huán)境是指運(yùn)行在虛擬機(jī)上的Ubuntu 12,并已安裝好gcc, g++,arc?linux?gcc, arc?linux?g++編譯器和應(yīng)用程序QT4.8。

Linux目前最新的版本是3.15,考慮到穩(wěn)定及兼容性,本文采用Linux版本為2.6。下載并解壓內(nèi)核源碼后,在Ubuntu終端中進(jìn)入源碼目錄,輸入命令“make menuconfig ARCH=arm”,之后系統(tǒng)進(jìn)入內(nèi)核配置界面endprint

進(jìn)入System Type選項(xiàng)的子菜單ARM system type,選擇Samsung S3C64XX。保存退出,這里選擇S3C64XX系列的默認(rèn)內(nèi)核配置。

輸入命令“make zImage”,進(jìn)行內(nèi)核編譯。編譯完成后,在目錄“arch/arm/boot”中可找到編譯好的內(nèi)核映像zImage。

Linux系統(tǒng)啟動(dòng)的一般過(guò)程包括引導(dǎo)內(nèi)核、啟動(dòng)內(nèi)核和啟動(dòng)初始化程序等[5],因此運(yùn)行一個(gè)完整的嵌入式操作系統(tǒng)除內(nèi)核外,還需要bootloader和文件系統(tǒng)的支持。

這里選擇的bootloader和文件系統(tǒng)分別是Uboot1.6和Yaffs2。因bootloader和文件系統(tǒng)的編譯不是本文重點(diǎn),這里不再贅述

2.3 ?Qt/E簡(jiǎn)介

Qt作為跨平臺(tái)的圖形界面開(kāi)發(fā)平臺(tái),可以直接建立在簡(jiǎn)單的幀緩沖驅(qū)動(dòng)上,并且有良好的可配置,可裁剪特性,因此也經(jīng)常用在嵌入式系統(tǒng)上[6]。

Qt/Embedded Linux(即Qt/E或Qtopia)是為嵌入式Linux優(yōu)化過(guò)的Qt版本。Qt/E提供了與Qt的桌面系統(tǒng)相同的API(應(yīng)用程序接口),因此任何標(biāo)準(zhǔn)的Qt應(yīng)用程序都可以被重新編譯到Qt/E上進(jìn)行運(yùn)行[4]。

Qt/E圖形引擎的基礎(chǔ)是圖形緩沖幀,它是一種采用mmap系統(tǒng)調(diào)用的驅(qū)動(dòng)程序接口,在這個(gè)接口的支持下,系統(tǒng)屏幕才能顯示內(nèi)容[7]。

2.4 ?Qt/E移植

在運(yùn)行Qt/E的API進(jìn)行應(yīng)用程序編寫(xiě)和調(diào)試之前,還有兩項(xiàng)很重要的工作要做:

首先,必須編譯和安裝Qt/E的開(kāi)發(fā)包,以Qt4.4.3為例,下載源碼并解壓后,開(kāi)啟終端并進(jìn)入源碼目錄下的configure子目錄,依次運(yùn)行“make”和“make install”命令。

編譯完成后,子目錄“builddir/image”下的所有文件就是Qt4.4.3的運(yùn)行文件,本質(zhì)上這是Qt/E的一個(gè)文件系統(tǒng)。將其復(fù)制到開(kāi)發(fā)板文件系統(tǒng)的opt目錄下。

同時(shí),也生成了移植Qt程序所需要的交叉編譯工具,即 “builddir/sdk/qtopiacore/target/bin”下的qmake程序。

在應(yīng)用程序編寫(xiě)完成后,使用qmake工具創(chuàng)建Makefile,然后輸入指令“gedit Makefile”,在CFLAGS和CXXFLAGS的等號(hào)后面添加“?fno?rtti”參數(shù),該參數(shù)表示禁用運(yùn)行時(shí)類(lèi)型信息,可降低程序的資源占用,有效提高程序運(yùn)行效率。

修改完Makefile后,輸出命令“make”即可完成程序編譯。

3 ?應(yīng)用程序開(kāi)發(fā)

作為北斗二代接收機(jī)的一款應(yīng)用,首先必須實(shí)現(xiàn)NMEA數(shù)據(jù)的獲取,然后對(duì)數(shù)據(jù)進(jìn)行處理,提取有用的數(shù)據(jù),并使用Qt的API函數(shù),實(shí)現(xiàn)定位數(shù)據(jù)的顯示、衛(wèi)星星座圖顯示以及地圖上定位點(diǎn)的顯示。

3.1 ?串口設(shè)備的控制

Qt本身提供了用于串口控制的頭文件“termios.h”,該頭文件聲明了一個(gè)結(jié)構(gòu)體用于串口的控制,同時(shí)宏定義了一些控制變量。

由于UM220默認(rèn)串口輸出波特率為9 600 b/s,數(shù)據(jù)位8位,停止位1,無(wú)校驗(yàn)位[8],硬件連接串口使用串口1,因此可在宏定義中進(jìn)行如下定義:

#define BAURATE B9600

#define RS_DEVICE "/dev/ttySAC1"

使用頭文件中的結(jié)構(gòu)體必須先定義:

Struct termios Tioset;

在各項(xiàng)定義準(zhǔn)備好之后,就可以打開(kāi)串口了,下面語(yǔ)句以讀寫(xiě)的方式打開(kāi)串口1,打開(kāi)成功返回0,失敗返回-1:

fd=open(RS_DEVICE,0_RDWR);

串口成功打開(kāi)后,則按照UM220的默認(rèn)值進(jìn)行設(shè)置,如下:

Tioset.c_cflag=BAURATE|CS8|CL0CSAL|CREAD;

Tioset.c_iflag|=IGNPAR; ?//忽略奇偶

以上設(shè)置完成后,還可以用同樣方式設(shè)置串口讀寫(xiě)字符的速度和單次讀寫(xiě)字符數(shù)量等。

關(guān)閉串口使用close(fd)函數(shù)。

3.2 ?NMEA數(shù)據(jù)的接收

串口打開(kāi)完畢后,就可以準(zhǔn)備讀寫(xiě)數(shù)據(jù)了,寫(xiě)入數(shù)據(jù)比較簡(jiǎn)單,使用write()函數(shù)寫(xiě)入到緩存即可,下面語(yǔ)句就從串口輸出了字符串“RS 232 Data”。

write(fd,″RS 232 Data″,10);

讀數(shù)據(jù)函數(shù)為read(),可從緩存讀出指定長(zhǎng)度的字符,返回值為實(shí)際讀取長(zhǎng)度,如下:

res=read(fd,buf,1024);

考慮到讀取定位數(shù)據(jù)是一個(gè)連續(xù)的過(guò)程,因此可將串口的控制及數(shù)據(jù)的接收以多線程的方式運(yùn)行。

開(kāi)啟線程,需引用頭文件QThread,該頭文件包含線程類(lèi)QThread的聲明,以單繼承的方式生成一個(gè)新類(lèi),這樣,新類(lèi)就繼承了QThread的所有方法。

線程的開(kāi)啟可使用start()函數(shù),可在線程的實(shí)際執(zhí)行函數(shù)內(nèi)包含串口控制及數(shù)據(jù)讀寫(xiě),這樣就可通過(guò)控制線程的各項(xiàng)參數(shù)來(lái)間接完成以上功能。

圖2顯示了讀取到的部分?jǐn)?shù)據(jù)。

<;E:\2014年23期\2014年23期\Image\42t2.tif>;

圖2 串口數(shù)據(jù)讀取

3.3 ?定位的數(shù)據(jù)的顯示

當(dāng)數(shù)據(jù)讀取成功后,需要根據(jù)NMEA格式進(jìn)行處理。NMEA格式采用Unicore協(xié)議,該協(xié)議中,輸入的語(yǔ)句統(tǒng)稱為消息,每條消息均為全ASCII字符組成的字符串。所有消息都以“$”開(kāi)始,后緊跟消息名,之后有一定數(shù)量的參數(shù)或數(shù)據(jù),消息名與數(shù)據(jù)之間均以逗號(hào)進(jìn)行分隔[6]。endprint

NEMA格式對(duì)每一種數(shù)據(jù)類(lèi)型都有嚴(yán)格的定義,其中位置數(shù)據(jù)格式如下:

$BDGLL,Lat,N,Lon,E,time,valid,Mode*cs

例子:$BDGLL,4002.2178,N,11618.1057,E,123400.00,A,A*5B

各部分參數(shù)含義[9]見(jiàn)表1。

表1 定位數(shù)據(jù)格式部分參數(shù)含義

[參數(shù)名\&;描述\&;參數(shù)名\&;描述\&;BDGLL\&;BD2系統(tǒng)單獨(dú)

定位的地理位置\&;time\&;UTC 時(shí)間,格式為hhmmss.sss\&;Lat\&;緯度\&;Valid\&;位置有效標(biāo)識(shí)\&;N\&;北緯或南緯指示\&;Mode\&;定位模式\&;Lon\&;經(jīng)度\&;A*cs\&;校驗(yàn)和\&;E\&;東經(jīng)或西經(jīng)指示\&;\&;\&;]

定位精度因子信息的數(shù)據(jù)格式如下:

$BDGSA,Smode,F(xiàn)s,sv1,sv2,sv3,sv4,sv5,sv6,sv7,sv8,sv9,sv10,sv11,sv12,PDOP,HDOP,VDOP*cs

例子:$BDGSA,A,167,124…5.572,2.788,4.824*36

各部分參數(shù)定義[6]見(jiàn)表2。

表2 GSA數(shù)據(jù)格式部分參數(shù)定義

[參數(shù)名\&;描述\&;參數(shù)名\&;描述\&;BDGSA\&;GNSS精度因子與有效衛(wèi)星信息\&;PDOP\&;位置精度因子\&;Smode\&;定位模式指定狀態(tài)\&;HDOP\&;水平精度因子\&;Sv1~Sv12\&;參與定位的衛(wèi)星號(hào)\&;VDOP\&;垂向精度因子\&;]

根據(jù)以上格式,對(duì)接收到的數(shù)據(jù)進(jìn)行字符串處理,提取有用信息,即可進(jìn)行顯示,如圖3所示。

<;E:\2014年23期\2014年23期\Image\42t3.tif>;

圖3 定位數(shù)據(jù)顯示

3.4 ?星座圖的顯示

Qt的視圖體系包括一個(gè)由QGraphicsScenec充當(dāng)?shù)膱?chǎng)景及由一些QGaraphicItem的子類(lèi)充當(dāng)場(chǎng)景中的項(xiàng)。QGraphicView是一個(gè)控件,可顯示場(chǎng)景。GraphicView系統(tǒng)主要由QGraphicScene,QGraphicItem,QGraphicView組成[10]。他們之間的關(guān)系是場(chǎng)景是基礎(chǔ),項(xiàng)用來(lái)管理視圖,并通過(guò)添加到場(chǎng)景中來(lái)完成顯示。

對(duì)NEMA中的GSV語(yǔ)句進(jìn)行字符串分割,即可得到可視星信息,主要包括衛(wèi)星的編號(hào)、仰角和方位角。

星座圖的顯示,首先要進(jìn)行坐標(biāo)轉(zhuǎn)換,即將衛(wèi)星的仰角和方位角,通過(guò)簡(jiǎn)單的幾何公式轉(zhuǎn)換為星座圖的坐標(biāo)。

然后,定義類(lèi)MySat,同樣以繼承的方式使用頭文件“QGraphicsItem.h”中定義的類(lèi)及方法,結(jié)合QPainter函數(shù),可以很方便地將可視星以圖形化的方式表現(xiàn)出來(lái)。

Class MySat:public QGraphicsItem

之后,分別使用Qpainter類(lèi)的drawPixmap()函數(shù)和drawText()函數(shù)在進(jìn)行畫(huà)圖。

Pos_ball=axis_transform(FYJ,BPJ);

Painter.drawPixmap(pos_ball,pix);

最后在控件QGraphicView里顯示場(chǎng)景,并使用場(chǎng)景的addItem()方法來(lái)實(shí)現(xiàn)MySat類(lèi)的畫(huà)圖功能。代碼如下:

MySat *mysat=new MySat;

Scene?>;addItem(mysat);

Ui?>;graphicview.>;setScene(scene);

這樣,就實(shí)現(xiàn)了星座圖在控件里的顯示,顯示效果如圖4所示。

<;E:\2014年23期\2014年23期\Image\42t4.tif>;

圖4 衛(wèi)星星座圖顯示

4 ?結(jié) ?語(yǔ)

本文實(shí)現(xiàn)了從S3C6410開(kāi)發(fā)板的串口讀取NEMA數(shù)據(jù),并進(jìn)一步完成了定位數(shù)據(jù)提取和衛(wèi)星星座圖顯示。經(jīng)測(cè)試,程序運(yùn)行穩(wěn)定,定位精度優(yōu)于10 m,驗(yàn)證了北斗二代接收機(jī)在Linux終端上開(kāi)發(fā)的可行性,對(duì)北斗終端應(yīng)用的發(fā)展有一定的借鑒意義。

參考文獻(xiàn)

[1] 中國(guó)衛(wèi)星導(dǎo)航系統(tǒng)管理辦公室.北斗衛(wèi)星導(dǎo)航系統(tǒng)發(fā)展報(bào)告(2.1版)[M].北京:中國(guó)衛(wèi)星導(dǎo)航系統(tǒng)管理辦公室,2012.

[2] 吳林城,胡慶新,李冬.基于Qt/Embedded的圖形用戶界面開(kāi)發(fā)[J].儀器儀表學(xué)報(bào),2009,30(6):371?374.

[3] 邵海東,周鵬,胡南軍,等.基于Linux的嵌入式系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2002(6):262?264.

[4] 何永琪.嵌入式Linux系統(tǒng)實(shí)用開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2010.

[5] 楊水清,張劍,施云飛.精通ARM嵌入式Linux系統(tǒng)開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2012.

[6] BLANCHETTE J, SUMMERFIELD M.C++ GUI Qt4編程[M]. 2版.閆鋒欣,曾泉人,張志強(qiáng),譯.北京:電子工業(yè)出版社,2012.

[7] 吳子平.基于Qt/E的嵌入式GUI技術(shù)研究與實(shí)現(xiàn)[D].荊州:長(zhǎng)江大學(xué),2012.

[8] 和芯星通有限公司.UM220用戶手冊(cè)[EB/OL].[2013?06?03].http://www.unicorecomm.com/down?64.aspx.

[9] 和芯星通有限公司.UM220北斗/GPS雙系統(tǒng)導(dǎo)航授時(shí)模塊數(shù)據(jù)接口協(xié)議[EB/OL].[2013?11?06].http://www.unicorecomm.com/down?64.aspx.

[10] 廖熹,易克非.基于嵌入式Linux系統(tǒng)下的Qt測(cè)試軟件開(kāi)發(fā)[J].兵工自動(dòng)化,2013(8):98?100.endprint

NEMA格式對(duì)每一種數(shù)據(jù)類(lèi)型都有嚴(yán)格的定義,其中位置數(shù)據(jù)格式如下:

$BDGLL,Lat,N,Lon,E,time,valid,Mode*cs

例子:$BDGLL,4002.2178,N,11618.1057,E,123400.00,A,A*5B

各部分參數(shù)含義[9]見(jiàn)表1。

表1 定位數(shù)據(jù)格式部分參數(shù)含義

[參數(shù)名\&;描述\&;參數(shù)名\&;描述\&;BDGLL\&;BD2系統(tǒng)單獨(dú)

定位的地理位置\&;time\&;UTC 時(shí)間,格式為hhmmss.sss\&;Lat\&;緯度\&;Valid\&;位置有效標(biāo)識(shí)\&;N\&;北緯或南緯指示\&;Mode\&;定位模式\&;Lon\&;經(jīng)度\&;A*cs\&;校驗(yàn)和\&;E\&;東經(jīng)或西經(jīng)指示\&;\&;\&;]

定位精度因子信息的數(shù)據(jù)格式如下:

$BDGSA,Smode,F(xiàn)s,sv1,sv2,sv3,sv4,sv5,sv6,sv7,sv8,sv9,sv10,sv11,sv12,PDOP,HDOP,VDOP*cs

例子:$BDGSA,A,167,124…5.572,2.788,4.824*36

各部分參數(shù)定義[6]見(jiàn)表2。

表2 GSA數(shù)據(jù)格式部分參數(shù)定義

[參數(shù)名\&;描述\&;參數(shù)名\&;描述\&;BDGSA\&;GNSS精度因子與有效衛(wèi)星信息\&;PDOP\&;位置精度因子\&;Smode\&;定位模式指定狀態(tài)\&;HDOP\&;水平精度因子\&;Sv1~Sv12\&;參與定位的衛(wèi)星號(hào)\&;VDOP\&;垂向精度因子\&;]

根據(jù)以上格式,對(duì)接收到的數(shù)據(jù)進(jìn)行字符串處理,提取有用信息,即可進(jìn)行顯示,如圖3所示。

<;E:\2014年23期\2014年23期\Image\42t3.tif>;

圖3 定位數(shù)據(jù)顯示

3.4 ?星座圖的顯示

Qt的視圖體系包括一個(gè)由QGraphicsScenec充當(dāng)?shù)膱?chǎng)景及由一些QGaraphicItem的子類(lèi)充當(dāng)場(chǎng)景中的項(xiàng)。QGraphicView是一個(gè)控件,可顯示場(chǎng)景。GraphicView系統(tǒng)主要由QGraphicScene,QGraphicItem,QGraphicView組成[10]。他們之間的關(guān)系是場(chǎng)景是基礎(chǔ),項(xiàng)用來(lái)管理視圖,并通過(guò)添加到場(chǎng)景中來(lái)完成顯示。

對(duì)NEMA中的GSV語(yǔ)句進(jìn)行字符串分割,即可得到可視星信息,主要包括衛(wèi)星的編號(hào)、仰角和方位角。

星座圖的顯示,首先要進(jìn)行坐標(biāo)轉(zhuǎn)換,即將衛(wèi)星的仰角和方位角,通過(guò)簡(jiǎn)單的幾何公式轉(zhuǎn)換為星座圖的坐標(biāo)。

然后,定義類(lèi)MySat,同樣以繼承的方式使用頭文件“QGraphicsItem.h”中定義的類(lèi)及方法,結(jié)合QPainter函數(shù),可以很方便地將可視星以圖形化的方式表現(xiàn)出來(lái)。

Class MySat:public QGraphicsItem

之后,分別使用Qpainter類(lèi)的drawPixmap()函數(shù)和drawText()函數(shù)在進(jìn)行畫(huà)圖。

Pos_ball=axis_transform(FYJ,BPJ);

Painter.drawPixmap(pos_ball,pix);

最后在控件QGraphicView里顯示場(chǎng)景,并使用場(chǎng)景的addItem()方法來(lái)實(shí)現(xiàn)MySat類(lèi)的畫(huà)圖功能。代碼如下:

MySat *mysat=new MySat;

Scene?>;addItem(mysat);

Ui?>;graphicview.>;setScene(scene);

這樣,就實(shí)現(xiàn)了星座圖在控件里的顯示,顯示效果如圖4所示。

<;E:\2014年23期\2014年23期\Image\42t4.tif>;

圖4 衛(wèi)星星座圖顯示

4 ?結(jié) ?語(yǔ)

本文實(shí)現(xiàn)了從S3C6410開(kāi)發(fā)板的串口讀取NEMA數(shù)據(jù),并進(jìn)一步完成了定位數(shù)據(jù)提取和衛(wèi)星星座圖顯示。經(jīng)測(cè)試,程序運(yùn)行穩(wěn)定,定位精度優(yōu)于10 m,驗(yàn)證了北斗二代接收機(jī)在Linux終端上開(kāi)發(fā)的可行性,對(duì)北斗終端應(yīng)用的發(fā)展有一定的借鑒意義。

參考文獻(xiàn)

[1] 中國(guó)衛(wèi)星導(dǎo)航系統(tǒng)管理辦公室.北斗衛(wèi)星導(dǎo)航系統(tǒng)發(fā)展報(bào)告(2.1版)[M].北京:中國(guó)衛(wèi)星導(dǎo)航系統(tǒng)管理辦公室,2012.

[2] 吳林城,胡慶新,李冬.基于Qt/Embedded的圖形用戶界面開(kāi)發(fā)[J].儀器儀表學(xué)報(bào),2009,30(6):371?374.

[3] 邵海東,周鵬,胡南軍,等.基于Linux的嵌入式系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2002(6):262?264.

[4] 何永琪.嵌入式Linux系統(tǒng)實(shí)用開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2010.

[5] 楊水清,張劍,施云飛.精通ARM嵌入式Linux系統(tǒng)開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2012.

[6] BLANCHETTE J, SUMMERFIELD M.C++ GUI Qt4編程[M]. 2版.閆鋒欣,曾泉人,張志強(qiáng),譯.北京:電子工業(yè)出版社,2012.

[7] 吳子平.基于Qt/E的嵌入式GUI技術(shù)研究與實(shí)現(xiàn)[D].荊州:長(zhǎng)江大學(xué),2012.

[8] 和芯星通有限公司.UM220用戶手冊(cè)[EB/OL].[2013?06?03].http://www.unicorecomm.com/down?64.aspx.

[9] 和芯星通有限公司.UM220北斗/GPS雙系統(tǒng)導(dǎo)航授時(shí)模塊數(shù)據(jù)接口協(xié)議[EB/OL].[2013?11?06].http://www.unicorecomm.com/down?64.aspx.

[10] 廖熹,易克非.基于嵌入式Linux系統(tǒng)下的Qt測(cè)試軟件開(kāi)發(fā)[J].兵工自動(dòng)化,2013(8):98?100.endprint

NEMA格式對(duì)每一種數(shù)據(jù)類(lèi)型都有嚴(yán)格的定義,其中位置數(shù)據(jù)格式如下:

$BDGLL,Lat,N,Lon,E,time,valid,Mode*cs

例子:$BDGLL,4002.2178,N,11618.1057,E,123400.00,A,A*5B

各部分參數(shù)含義[9]見(jiàn)表1。

表1 定位數(shù)據(jù)格式部分參數(shù)含義

[參數(shù)名\&;描述\&;參數(shù)名\&;描述\&;BDGLL\&;BD2系統(tǒng)單獨(dú)

定位的地理位置\&;time\&;UTC 時(shí)間,格式為hhmmss.sss\&;Lat\&;緯度\&;Valid\&;位置有效標(biāo)識(shí)\&;N\&;北緯或南緯指示\&;Mode\&;定位模式\&;Lon\&;經(jīng)度\&;A*cs\&;校驗(yàn)和\&;E\&;東經(jīng)或西經(jīng)指示\&;\&;\&;]

定位精度因子信息的數(shù)據(jù)格式如下:

$BDGSA,Smode,F(xiàn)s,sv1,sv2,sv3,sv4,sv5,sv6,sv7,sv8,sv9,sv10,sv11,sv12,PDOP,HDOP,VDOP*cs

例子:$BDGSA,A,167,124…5.572,2.788,4.824*36

各部分參數(shù)定義[6]見(jiàn)表2。

表2 GSA數(shù)據(jù)格式部分參數(shù)定義

[參數(shù)名\&;描述\&;參數(shù)名\&;描述\&;BDGSA\&;GNSS精度因子與有效衛(wèi)星信息\&;PDOP\&;位置精度因子\&;Smode\&;定位模式指定狀態(tài)\&;HDOP\&;水平精度因子\&;Sv1~Sv12\&;參與定位的衛(wèi)星號(hào)\&;VDOP\&;垂向精度因子\&;]

根據(jù)以上格式,對(duì)接收到的數(shù)據(jù)進(jìn)行字符串處理,提取有用信息,即可進(jìn)行顯示,如圖3所示。

<;E:\2014年23期\2014年23期\Image\42t3.tif>;

圖3 定位數(shù)據(jù)顯示

3.4 ?星座圖的顯示

Qt的視圖體系包括一個(gè)由QGraphicsScenec充當(dāng)?shù)膱?chǎng)景及由一些QGaraphicItem的子類(lèi)充當(dāng)場(chǎng)景中的項(xiàng)。QGraphicView是一個(gè)控件,可顯示場(chǎng)景。GraphicView系統(tǒng)主要由QGraphicScene,QGraphicItem,QGraphicView組成[10]。他們之間的關(guān)系是場(chǎng)景是基礎(chǔ),項(xiàng)用來(lái)管理視圖,并通過(guò)添加到場(chǎng)景中來(lái)完成顯示。

對(duì)NEMA中的GSV語(yǔ)句進(jìn)行字符串分割,即可得到可視星信息,主要包括衛(wèi)星的編號(hào)、仰角和方位角。

星座圖的顯示,首先要進(jìn)行坐標(biāo)轉(zhuǎn)換,即將衛(wèi)星的仰角和方位角,通過(guò)簡(jiǎn)單的幾何公式轉(zhuǎn)換為星座圖的坐標(biāo)。

然后,定義類(lèi)MySat,同樣以繼承的方式使用頭文件“QGraphicsItem.h”中定義的類(lèi)及方法,結(jié)合QPainter函數(shù),可以很方便地將可視星以圖形化的方式表現(xiàn)出來(lái)。

Class MySat:public QGraphicsItem

之后,分別使用Qpainter類(lèi)的drawPixmap()函數(shù)和drawText()函數(shù)在進(jìn)行畫(huà)圖。

Pos_ball=axis_transform(FYJ,BPJ);

Painter.drawPixmap(pos_ball,pix);

最后在控件QGraphicView里顯示場(chǎng)景,并使用場(chǎng)景的addItem()方法來(lái)實(shí)現(xiàn)MySat類(lèi)的畫(huà)圖功能。代碼如下:

MySat *mysat=new MySat;

Scene?>;addItem(mysat);

Ui?>;graphicview.>;setScene(scene);

這樣,就實(shí)現(xiàn)了星座圖在控件里的顯示,顯示效果如圖4所示。

<;E:\2014年23期\2014年23期\Image\42t4.tif>;

圖4 衛(wèi)星星座圖顯示

4 ?結(jié) ?語(yǔ)

本文實(shí)現(xiàn)了從S3C6410開(kāi)發(fā)板的串口讀取NEMA數(shù)據(jù),并進(jìn)一步完成了定位數(shù)據(jù)提取和衛(wèi)星星座圖顯示。經(jīng)測(cè)試,程序運(yùn)行穩(wěn)定,定位精度優(yōu)于10 m,驗(yàn)證了北斗二代接收機(jī)在Linux終端上開(kāi)發(fā)的可行性,對(duì)北斗終端應(yīng)用的發(fā)展有一定的借鑒意義。

參考文獻(xiàn)

[1] 中國(guó)衛(wèi)星導(dǎo)航系統(tǒng)管理辦公室.北斗衛(wèi)星導(dǎo)航系統(tǒng)發(fā)展報(bào)告(2.1版)[M].北京:中國(guó)衛(wèi)星導(dǎo)航系統(tǒng)管理辦公室,2012.

[2] 吳林城,胡慶新,李冬.基于Qt/Embedded的圖形用戶界面開(kāi)發(fā)[J].儀器儀表學(xué)報(bào),2009,30(6):371?374.

[3] 邵海東,周鵬,胡南軍,等.基于Linux的嵌入式系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2002(6):262?264.

[4] 何永琪.嵌入式Linux系統(tǒng)實(shí)用開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2010.

[5] 楊水清,張劍,施云飛.精通ARM嵌入式Linux系統(tǒng)開(kāi)發(fā)[M].北京:電子工業(yè)出版社,2012.

[6] BLANCHETTE J, SUMMERFIELD M.C++ GUI Qt4編程[M]. 2版.閆鋒欣,曾泉人,張志強(qiáng),譯.北京:電子工業(yè)出版社,2012.

[7] 吳子平.基于Qt/E的嵌入式GUI技術(shù)研究與實(shí)現(xiàn)[D].荊州:長(zhǎng)江大學(xué),2012.

[8] 和芯星通有限公司.UM220用戶手冊(cè)[EB/OL].[2013?06?03].http://www.unicorecomm.com/down?64.aspx.

[9] 和芯星通有限公司.UM220北斗/GPS雙系統(tǒng)導(dǎo)航授時(shí)模塊數(shù)據(jù)接口協(xié)議[EB/OL].[2013?11?06].http://www.unicorecomm.com/down?64.aspx.

[10] 廖熹,易克非.基于嵌入式Linux系統(tǒng)下的Qt測(cè)試軟件開(kāi)發(fā)[J].兵工自動(dòng)化,2013(8):98?100.endprint

主站蜘蛛池模板: 久久人人97超碰人人澡爱香蕉 | 伊人久综合| 色婷婷色丁香| 午夜少妇精品视频小电影| 国产香蕉在线视频| 欧美日韩午夜| 国产黑丝一区| 欧美日韩另类在线| 国产91精品调教在线播放| 国产成人久久综合777777麻豆| 在线观看免费人成视频色快速| 亚洲一区第一页| 亚洲国产系列| 亚洲天堂网2014| 日本亚洲成高清一区二区三区| 亚洲黄色高清| 无码综合天天久久综合网| 亚洲欧美国产五月天综合| 久久精品波多野结衣| 成年女人18毛片毛片免费| 四虎精品国产AV二区| 久久99精品久久久久久不卡| 亚洲欧美国产五月天综合| 亚洲人成人无码www| 国产sm重味一区二区三区| 亚洲精品爱草草视频在线| 亚洲欧美日韩成人在线| 免费人成视网站在线不卡| 精品国产一二三区| 一级成人欧美一区在线观看| 亚洲第一综合天堂另类专| 亚洲成人一区二区三区| 美女内射视频WWW网站午夜| 熟妇丰满人妻av无码区| 99草精品视频| 欧美福利在线观看| 99精品伊人久久久大香线蕉| 中文字幕av一区二区三区欲色| 蜜芽一区二区国产精品| 激情无码字幕综合| 国产无码精品在线播放| 国产午夜在线观看视频| AV网站中文| 欧美在线一级片| 永久在线精品免费视频观看| 老色鬼欧美精品| 国产精欧美一区二区三区| 噜噜噜久久| 免费国产好深啊好涨好硬视频| 国产成人精品无码一区二 | 色欲不卡无码一区二区| 日韩第九页| 91青青草视频在线观看的| 五月激情综合网| 亚洲成a人在线播放www| 2020国产精品视频| 久久9966精品国产免费| 欧洲免费精品视频在线| 熟妇无码人妻| 97国产成人无码精品久久久| 欧美日韩精品综合在线一区| 亚洲aⅴ天堂| 老司国产精品视频91| 思思99思思久久最新精品| 香蕉在线视频网站| 亚洲欧洲免费视频| 青青极品在线| 午夜精品福利影院| 中文无码日韩精品| 国产玖玖玖精品视频| 97视频在线观看免费视频| 国产福利不卡视频| 亚洲视屏在线观看| 亚洲无线一二三四区男男| 日本久久网站| 99re在线免费视频| 日本伊人色综合网| 国产96在线 | 亚洲首页在线观看| 国产91全国探花系列在线播放| 欧美三级日韩三级| 青青草原国产免费av观看|