嵌入式Linux平臺(tái)的GPS數(shù)據(jù)采集研究
2.2 GPs中定位信息的獲取舉例
在嵌入式Linux系統(tǒng)中進(jìn)行串口編程,讀取GPS數(shù)據(jù)的定位信息.
/*包含必要的頭文件*/
#include termios.h>
#include stdio.h>
#include unistd.h>
#include fcntl.h>
/*打開(kāi)串口設(shè)備*/
int fd=open(/dev/ttyS0,O_RDWR|O_NOCTTY)/* O_RDWR表示以讀寫方式打開(kāi),O_NOCTTY表示串口不是控制終端*/
struet termios old_options,new_options
/*定義兩個(gè)termios結(jié)構(gòu),其中,old_options用于保存原有的設(shè)備工作方式,new_options用于設(shè)置新的設(shè)備工作方式 */
tcgetattr(fd,old_options) /*獲取當(dāng)前設(shè)備方式*/
/*設(shè)置結(jié)構(gòu)體new_options中的c_jflag、c_oflag、c_cflag、c_lflag和c_cc,再用cfsetispeed()和cfsetospeed()函數(shù)設(shè)置波特率 */
new_options.c_cflag = PARENB; /*無(wú)奇偶校驗(yàn)位*/
new_options.c_cflag = CSIZE; /*不隱藏?cái)?shù)據(jù)位*/
new_options.c_cflag = CSTOPB; /*無(wú)停止位*/
new_options.c_cflag |=CS8; /*8位數(shù)據(jù)位*/
new_options.c_oflag=ICRNL; /*將輸出的CR轉(zhuǎn)換成NL*/
new_options.c_lflag=(ICANON | ECHO | ECHOE | SIG); /*選擇原始輸入模式,使輸入字符與接收到的字符相同*/
new_options.c_cc[VTIME]=10; /*設(shè)置超時(shí)計(jì)時(shí)器為10x0.1=1秒*/
new_options.c_ce[VMIN]=76; /*設(shè)置讀取的最小字符數(shù)為76個(gè)*/
cfsetispeed(new_options,B4800); /*設(shè)置輸入波特率為4800*/
cfsetospeed(new_options,B4800); /*設(shè)置輸出波特率為4800*/
tcflush(fd,TCIOFLUSH); /*丟棄隊(duì)列中尚未傳送或接收的數(shù)據(jù)*/
tcsetattr(fd,TCSANOW,new_options); /*設(shè)置新的設(shè)備方式*/
/*完成終端的設(shè)置后,處理串口設(shè)備的GPS數(shù)據(jù)輸入,從中選取有用的定位信息*/
int nByteRead =read(fd,buf,LENGTH);
if((buf[O]==$)(buf[3]==R)(buf[4]==M)(buf[5]==C))
/*檢查語(yǔ)句串頭若為RMC則表示此語(yǔ)句為定位語(yǔ)句,選取此語(yǔ)句內(nèi)容,其余忽略*/
{
/*檢驗(yàn)校驗(yàn)和,如果校驗(yàn)和正確繼續(xù),否則返回*/
if(buf[i]= ,){/*提取并分解各逗號(hào)間的數(shù)據(jù)并進(jìn)行處理或發(fā)送至其它應(yīng)用程序*/}
}
以上代碼只是GPS輸出數(shù)據(jù)中定位信息提取的關(guān)鍵代碼,要完成進(jìn)一步的完整功能還需編寫大量的代碼,這里就不一一列出.
3 結(jié)束語(yǔ)
GPS設(shè)備與嵌入式Linux平臺(tái)之間的數(shù)據(jù)是實(shí)現(xiàn)嵌入式GIS定位功能的基礎(chǔ),隨著基于嵌入式Linux的嵌入式GIS的應(yīng)用日益廣泛,GPS數(shù)據(jù)的采 集方法成為一項(xiàng)基礎(chǔ)性工作,本文針對(duì)GPS數(shù)據(jù)的采集,詳細(xì)分析了目前普遍采用的NMEA0183協(xié)議,并在此基礎(chǔ)上對(duì)嵌入式Linux環(huán)境下的GPS數(shù) 據(jù)采集進(jìn)行舉例分析.
本文引用地址:http://m.butianyuan.cn/article/195179.htm linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論