GPS是一个不难折腾的玩意,下面浩浩写了个python读取GPS的demo给大家
- class gps:
- def __init__(self):
- import subprocess as sp
- #self.ps1=sp.Popen(“cat /dev/ttyUSB0″,shell=”true”,stdout=sp.PIPE)
- self.ps1=sp.Popen(“cat /Users/xuhao/tmp/b.txt”,shell=“true”,stdout=sp.PIPE)
- self.gps1=self.ps1.stdout
- #self.ps2=sp.Popen(“cat /dev/ttyUSB1″,shell=”true”,stdout=sp.PIPE)
- self.ps2=sp.Popen(“cat /Users/xuhao/tmp/b.txt”,shell=“true”,stdout=sp.PIPE)
- self.gps2=self.ps2.stdout
- self.gpspair1=dict()
- self.gpspair2=dict()
- self.cha=dict()
- def procline(self,line):
- if(line[1:6]!=“GPGGA”):
- return 0
- lis=line.split(“,”)
- if lis[6]==“0”:
- return 0
- return lis[1],lis[2],lis[4]
- def run(self):
- line=self.gps1.readline()
- try:
- t,x,y=self.procline(line)
- self.gpspair1[t]=[x,y]
- if t in self.gpspair2:
- self.cha[t]=[ x–self.gpspair2[t][0],y–self.gpspair2[t][1] ]
- except:
- pass
- line=self.gps2.readline()
- try:
- t,x,y=self.procline(line)
- self.gpspair2[t]=[x,y]
- if t in self.gpspair1:
- self.cha[t]=[ float(self.gpspair1[t][0])-float(x),float(self.gpspair1[t][1])-float(y) ]
- except:
- pass
- test=gps()
- for i in range(10000):
- test.run()
- print test.cha
很简单的代码,在linux/unix上读取GPS数据,GPS数据是$GPSGGA…;只需要简单对串口解析即可。
这里同时还进行了双GPS差分计算。代码和注释掉代码的切换是在本机测试(我的macbook插着串口会死机)