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

        ?

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

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

        路振民,邵瓊玲,宋方

        摘 ?要: 基于嵌入式Linux,使用UM220和TE6410開發(fā)板,完成了北斗二代接收機的應(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 ? ? ? ? ? ?文獻標識碼: 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標準[2]。采用開源的嵌入式Linux作為嵌入式操作系統(tǒng),可以有效避免關(guān)于版權(quán)的糾紛,節(jié)省了大量的開發(fā)費用[3]。同時,嵌入式Linux還可以根據(jù)應(yīng)用需求進行內(nèi)核裁剪,可應(yīng)用于多種硬件平臺。

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

        1 ?硬件平臺介紹

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

        其中UM220為BD/GPS雙系統(tǒng)導(dǎo)航模塊,可同時接收BD2 B1、GPS L1兩個頻點的信號,進行接收、解調(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è)備進行定制的一種小型操作系統(tǒng)[2],由內(nèi)核(kernel)及部分系統(tǒng)模塊組成。

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

        2.2 ?嵌入式Linux移植

        本文所述的軟件開發(fā)環(huán)境是指運行在虛擬機上的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終端中進入源碼目錄,輸入命令“make menuconfig ARCH=arm”,之后系統(tǒng)進入內(nèi)核配置界面endprint

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

        輸入命令“make zImage”,進行內(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)用程序接口),因此任何標準的Qt應(yīng)用程序都可以被重新編譯到Qt/E上進行運行[4]。

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

        2.4 ?Qt/E移植

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

        首先,必須編譯和安裝Qt/E的開發(fā)包,以Qt4.4.3為例,下載源碼并解壓后,開啟終端并進入源碼目錄下的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ā)

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

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

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

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

        #define BAURATE B9600

        #define RS_DEVICE "/dev/ttySAC1"

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

        Struct termios Tioset;

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

        fd=open(RS_DEVICE,0_RDWR);

        串口成功打開后,則按照UM220的默認值進行設(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ù)的接收

        串口打開完畢后,就可以準備讀寫數(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顯示了讀取到的部分數(shù)據(jù)。

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

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

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

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

        NEMA格式對每一種數(shù)據(jù)類型都有嚴格的定義,其中位置數(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\&;位置有效標識\&;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ù)進行字符串處理,提取有用信息,即可進行顯示,如圖3所示。

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

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

        3.4 ?星座圖的顯示

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

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

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

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

        Class MySat:public QGraphicsItem

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

        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ù),并進一步完成了定位數(shù)據(jù)提取和衛(wèi)星星座圖顯示。經(jīng)測試,程序運行穩(wěn)定,定位精度優(yōu)于10 m,驗證了北斗二代接收機在Linux終端上開發(fā)的可行性,對北斗終端應(yīng)用的發(fā)展有一定的借鑒意義。

        參考文獻

        [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].儀器儀表學報,2009,30(6):371?374.

        [3] 邵海東,周鵬,胡南軍,等.基于Linux的嵌入式系統(tǒng)設(shè)計與實現(xiàn)[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版.閆鋒欣,曾泉人,張志強,譯.北京:電子工業(yè)出版社,2012.

        [7] 吳子平.基于Qt/E的嵌入式GUI技術(shù)研究與實現(xiàn)[D].荊州:長江大學,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ù)類型都有嚴格的定義,其中位置數(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\&;位置有效標識\&;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ù)進行字符串處理,提取有用信息,即可進行顯示,如圖3所示。

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

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

        3.4 ?星座圖的顯示

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

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

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

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

        Class MySat:public QGraphicsItem

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

        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ù),并進一步完成了定位數(shù)據(jù)提取和衛(wèi)星星座圖顯示。經(jīng)測試,程序運行穩(wěn)定,定位精度優(yōu)于10 m,驗證了北斗二代接收機在Linux終端上開發(fā)的可行性,對北斗終端應(yīng)用的發(fā)展有一定的借鑒意義。

        參考文獻

        [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].儀器儀表學報,2009,30(6):371?374.

        [3] 邵海東,周鵬,胡南軍,等.基于Linux的嵌入式系統(tǒng)設(shè)計與實現(xiàn)[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版.閆鋒欣,曾泉人,張志強,譯.北京:電子工業(yè)出版社,2012.

        [7] 吳子平.基于Qt/E的嵌入式GUI技術(shù)研究與實現(xiàn)[D].荊州:長江大學,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ù)類型都有嚴格的定義,其中位置數(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\&;位置有效標識\&;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ù)進行字符串處理,提取有用信息,即可進行顯示,如圖3所示。

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

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

        3.4 ?星座圖的顯示

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

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

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

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

        Class MySat:public QGraphicsItem

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

        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ù),并進一步完成了定位數(shù)據(jù)提取和衛(wèi)星星座圖顯示。經(jīng)測試,程序運行穩(wěn)定,定位精度優(yōu)于10 m,驗證了北斗二代接收機在Linux終端上開發(fā)的可行性,對北斗終端應(yīng)用的發(fā)展有一定的借鑒意義。

        參考文獻

        [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].儀器儀表學報,2009,30(6):371?374.

        [3] 邵海東,周鵬,胡南軍,等.基于Linux的嵌入式系統(tǒng)設(shè)計與實現(xiàn)[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版.閆鋒欣,曾泉人,張志強,譯.北京:電子工業(yè)出版社,2012.

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

        国产色诱视频在线观看| 开心五月激动心情五月| 风间由美中文字幕在线| 日本精品视频免费观看| 国产免费av片无码永久免费| 性色av 一区二区三区| 国产伦精品一区二区三区四区| 国产艳妇av在线出轨| 国产目拍亚洲精品二区| 99人中文字幕亚洲区三| 国产69久久精品成人看| 无码手机线免费观看| 国产午夜在线观看视频播放| 国产精品色内内在线播放| 手机在线播放成人av| 香港三级午夜理论三级| 老太脱裤子让老头玩xxxxx| 成人免费视频在线观看| 亚洲AV无码一区二区三区天堂网| 国产免费一级在线观看| 国产av一区网址大全| 91快射视频在线观看| 一区二区国产av网站| 白丝爆浆18禁一区二区三区| 亚洲爆乳精品无码一区二区| 亚洲av无码之日韩精品| 国品精品一区二区在线观看| 久久精品国产久精国产69| 国产在线精品成人一区二区三区| 本道天堂成在人线av无码免费 | 欧美牲交videossexeso欧美| 无码av无码天堂资源网| 少妇无码av无码去区钱| 97色人阁俺也去人人人人人| 亚洲一区二区三区精品| 久久精品国产精品亚洲| 亚洲综合无码一区二区三区 | 国产97色在线 | 日韩| 91日本精品国产免| 在线亚洲AV成人无码一区小说| 日本韩国三级aⅴ在线观看 |