GPS with python

GPS是一个不难折腾的玩意,下面浩浩写了个python读取GPS的demo给大家

    1. class gps:
    2.     def __init__(self):
    3.         import subprocess as sp
    4.         #self.ps1=sp.Popen(“cat /dev/ttyUSB0″,shell=”true”,stdout=sp.PIPE)
    5.         self.ps1=sp.Popen(“cat /Users/xuhao/tmp/b.txt”,shell=“true”,stdout=sp.PIPE)
    6.         self.gps1=self.ps1.stdout
    7.         #self.ps2=sp.Popen(“cat /dev/ttyUSB1″,shell=”true”,stdout=sp.PIPE)
    8.         self.ps2=sp.Popen(“cat /Users/xuhao/tmp/b.txt”,shell=“true”,stdout=sp.PIPE)
    9.         self.gps2=self.ps2.stdout
    10.         self.gpspair1=dict()
    11.         self.gpspair2=dict()
    12.         self.cha=dict()
    13.     def procline(self,line):
    14.         if(line[1:6]!=“GPGGA”):
    15.             return 0
    16.         lis=line.split(“,”)
    17.         if lis[6]==“0”:
    18.             return 0
    19.         return lis[1],lis[2],lis[4]
    20.     
    21.     def run(self):
    22.         line=self.gps1.readline()
    23.         try:
    24.             t,x,y=self.procline(line)
    25.             self.gpspair1[t]=[x,y]
    26.             if t in self.gpspair2:
    27.                 self.cha[t]=[ xself.gpspair2[t][0],yself.gpspair2[t][1] ]
    28.         except:
    29.             pass
    30.         line=self.gps2.readline()
    31.         try:
    32.             t,x,y=self.procline(line)
    33.             self.gpspair2[t]=[x,y]
    34.             if t in self.gpspair1:
    35.                 self.cha[t]=[ float(self.gpspair1[t][0])-float(x),float(self.gpspair1[t][1])-float(y) ]
    36.         except:
    37.             pass
    38. test=gps()
    39. for i in range(10000):
    40.     test.run()
    41. print test.cha

很简单的代码,在linux/unix上读取GPS数据,GPS数据是$GPSGGA…;只需要简单对串口解析即可。

这里同时还进行了双GPS差分计算。代码和注释掉代码的切换是在本机测试(我的macbook插着串口会死机)

发表评论

电子邮件地址不会被公开。 必填项已用*标注