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

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

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

路振民,邵瓊玲,宋方

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

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

中圖分類號: TN927+.2?34; TP311.1; V19 ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼: A ? ? ? ? ? 文章編號: 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)在國內(nèi)及周邊區(qū)域無源定位的實現(xiàn)[1],北斗二代終端的設(shè)計及應(yīng)用也逐漸成為研究熱點。

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

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

1 ?硬件平臺介紹

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

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

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

本文采用的硬件平臺工作原理圖如圖1所示。

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

圖1 硬件平臺組成框圖

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

2.1 ?嵌入式Linux介紹

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

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

2.2 ?嵌入式Linux移植

本文所述的軟件開發(fā)環(huá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選項的子菜單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ǎo)內(nèi)核、啟動內(nèi)核和啟動初始化程序等[5],因此運行一個完整的嵌入式操作系統(tǒng)除內(nèi)核外,還需要bootloader和文件系統(tǒng)的支持。

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

2.3 ?Qt/E簡介

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

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

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

2.4 ?Qt/E移植

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

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

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

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

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

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

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

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

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

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

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

#define BAURATE B9600

#define RS_DEVICE "/dev/ttySAC1"

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

Struct termios Tioset;

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

fd=open(RS_DEVICE,0_RDWR);

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

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

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

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

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

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

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

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

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

res=read(fd,buf,1024);

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

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

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

圖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é)議中,輸入的語句統(tǒng)稱為消息,每條消息均為全ASCII字符組成的字符串。所有消息都以“$”開始,后緊跟消息名,之后有一定數(shù)量的參數(shù)或數(shù)據(jù),消息名與數(shù)據(jù)之間均以逗號進(jìn)行分隔[6]。endprint

NEMA格式對每一種數(shù)據(jù)類型都有嚴(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]見表1。

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

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

定位的地理位置\&;time\&;UTC 時間,格式為hhmmss.sss\&;Lat\&;緯度\&;Valid\&;位置有效標(biāo)識\&;N\&;北緯或南緯指示\&;Mode\&;定位模式\&;Lon\&;經(jīng)度\&;A*cs\&;校驗和\&;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]見表2。

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

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

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

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

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

3.4 ?星座圖的顯示

Qt的視圖體系包括一個由QGraphicsScenec充當(dāng)?shù)膱鼍凹坝梢恍㏎GaraphicItem的子類充當(dāng)場景中的項。QGraphicView是一個控件,可顯示場景。GraphicView系統(tǒng)主要由QGraphicScene,QGraphicItem,QGraphicView組成[10]。他們之間的關(guān)系是場景是基礎(chǔ),項用來管理視圖,并通過添加到場景中來完成顯示。

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

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

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

Class MySat:public QGraphicsItem

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

Pos_ball=axis_transform(FYJ,BPJ);

Painter.drawPixmap(pos_ball,pix);

最后在控件QGraphicView里顯示場景,并使用場景的addItem()方法來實現(xiàn)MySat類的畫圖功能。代碼如下:

MySat *mysat=new MySat;

Scene?>;addItem(mysat);

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

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

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

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

4 ?結(jié) ?語

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

參考文獻(xiàn)

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

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

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

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

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

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

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

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

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

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

NEMA格式對每一種數(shù)據(jù)類型都有嚴(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]見表1。

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

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

定位的地理位置\&;time\&;UTC 時間,格式為hhmmss.sss\&;Lat\&;緯度\&;Valid\&;位置有效標(biāo)識\&;N\&;北緯或南緯指示\&;Mode\&;定位模式\&;Lon\&;經(jīng)度\&;A*cs\&;校驗和\&;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]見表2。

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

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

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

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

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

3.4 ?星座圖的顯示

Qt的視圖體系包括一個由QGraphicsScenec充當(dāng)?shù)膱鼍凹坝梢恍㏎GaraphicItem的子類充當(dāng)場景中的項。QGraphicView是一個控件,可顯示場景。GraphicView系統(tǒng)主要由QGraphicScene,QGraphicItem,QGraphicView組成[10]。他們之間的關(guān)系是場景是基礎(chǔ),項用來管理視圖,并通過添加到場景中來完成顯示。

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

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

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

Class MySat:public QGraphicsItem

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

Pos_ball=axis_transform(FYJ,BPJ);

Painter.drawPixmap(pos_ball,pix);

最后在控件QGraphicView里顯示場景,并使用場景的addItem()方法來實現(xiàn)MySat類的畫圖功能。代碼如下:

MySat *mysat=new MySat;

Scene?>;addItem(mysat);

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

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

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

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

4 ?結(jié) ?語

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

參考文獻(xiàn)

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

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

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

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

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

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

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

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

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

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

NEMA格式對每一種數(shù)據(jù)類型都有嚴(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]見表1。

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

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

定位的地理位置\&;time\&;UTC 時間,格式為hhmmss.sss\&;Lat\&;緯度\&;Valid\&;位置有效標(biāo)識\&;N\&;北緯或南緯指示\&;Mode\&;定位模式\&;Lon\&;經(jīng)度\&;A*cs\&;校驗和\&;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]見表2。

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

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

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

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

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

3.4 ?星座圖的顯示

Qt的視圖體系包括一個由QGraphicsScenec充當(dāng)?shù)膱鼍凹坝梢恍㏎GaraphicItem的子類充當(dāng)場景中的項。QGraphicView是一個控件,可顯示場景。GraphicView系統(tǒng)主要由QGraphicScene,QGraphicItem,QGraphicView組成[10]。他們之間的關(guān)系是場景是基礎(chǔ),項用來管理視圖,并通過添加到場景中來完成顯示。

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

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

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

Class MySat:public QGraphicsItem

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

Pos_ball=axis_transform(FYJ,BPJ);

Painter.drawPixmap(pos_ball,pix);

最后在控件QGraphicView里顯示場景,并使用場景的addItem()方法來實現(xiàn)MySat類的畫圖功能。代碼如下:

MySat *mysat=new MySat;

Scene?>;addItem(mysat);

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

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

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

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

4 ?結(jié) ?語

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

參考文獻(xiàn)

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

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

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

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

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

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

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

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

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

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

主站蜘蛛池模板: 伊人五月丁香综合AⅤ| 不卡的在线视频免费观看| 国产一级在线观看www色 | 亚洲国产成人无码AV在线影院L| www亚洲天堂| 无码日韩精品91超碰| 97免费在线观看视频| 国产美女在线观看| 国产在线啪| 日韩一区精品视频一区二区| 精品国产一区二区三区在线观看| 一级毛片在线播放免费| 中文字幕在线看视频一区二区三区| 99热这里只有精品免费| 2020国产免费久久精品99| 欧美成人手机在线视频| 毛片视频网| 五月天婷婷网亚洲综合在线| 亚洲精品无码av中文字幕| 亚洲IV视频免费在线光看| 成年av福利永久免费观看| 亚洲欧洲日产无码AV| 亚洲无码不卡网| 91精品人妻互换| 最新国语自产精品视频在| 91精品国产自产91精品资源| 亚洲成a人片| 91精品国产麻豆国产自产在线| 亚洲欧美日韩另类| 日本AⅤ精品一区二区三区日| 日本三级黄在线观看| 91久久偷偷做嫩草影院| 国产99视频免费精品是看6| 欧美精品三级在线| 在线免费亚洲无码视频| 中国特黄美女一级视频| 日韩亚洲综合在线| 黄色a一级视频| 日韩区欧美区| av手机版在线播放| 久久a级片| 国内精品视频区在线2021| 精品国产一区91在线| 茄子视频毛片免费观看| 色有码无码视频| 手机在线看片不卡中文字幕| 97免费在线观看视频| 国产成人精品免费av| 手机在线免费不卡一区二| 凹凸国产熟女精品视频| 国产女同自拍视频| 日韩视频福利| 无码有码中文字幕| 秋霞国产在线| 国产精品xxx| 亚洲熟女偷拍| 亚洲欧美人成电影在线观看| 午夜国产精品视频| 国产成人精品视频一区视频二区| 国产人碰人摸人爱免费视频 | 日本一区二区三区精品国产| 97超爽成人免费视频在线播放| 亚洲最猛黑人xxxx黑人猛交| 日韩精品免费在线视频| 亚洲六月丁香六月婷婷蜜芽| 亚洲国产欧美中日韩成人综合视频| 亚洲色欲色欲www在线观看| 啪啪永久免费av| 欧洲免费精品视频在线| 久久精品中文字幕少妇| 五月丁香伊人啪啪手机免费观看| 性网站在线观看| 极品尤物av美乳在线观看| 日韩无码一二三区| 亚洲经典在线中文字幕| 久久国产精品波多野结衣| 国产午夜人做人免费视频中文| 亚洲人成亚洲精品| 中文字幕在线欧美| 制服丝袜无码每日更新| 中文字幕自拍偷拍| 美女高潮全身流白浆福利区|