python通过串口读取GPS NMEA格式的数据,并保存为csv文件

#!/usr/bin/env python  
# -*- coding: utf-8 -*  
   
import serial  
import serial.tools.list_ports  
import string
import StringIO
import pandas as pd
import time
import datetime


def get_serial_port(_keywords='COM'):
    
    port_list = list(serial.tools.list_ports.comports())
    port_name=''
    for port in port_list:
##        print port
        if _keywords in str(port):
##            print port
            port_name = str(port).split('-')[0]
            return port_name.strip()#.split(',')[0]#.replace('(','').replace('\'','')  
            
##        print port_name
    return '' 
if __name__=='__main__':
    filename_prefix='_'
##    print get_serial_port('Silicon')
    print get_serial_port('CH340')
    ser = serial.Serial(port=get_serial_port('CH340'), baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=0, rtscts=0)


                     
    ##n = ser.write('')  
    ##print t.portstr  
    ##print n
    gps_return = ser.readline()
    print gps_return
##    print gps_return,len(gps_return.split(','))
    gps_col_name='Command,UTC_Time,State,latitude,N_S,Longitude,E_W,Velocity,Heading,UTC_Date,Declination,Declination_Dir,Check\n'
    print gps_col_name
    sio = StringIO.StringIO()
    sio.write(gps_col_name)
    for i in range(3000):
        gps_return = ser.readline()
        print gps_return
        sio.write(gps_return)
    
    print(sio.getvalue()) 
##    for line in sio:
##        print line
    sio.seek(0)
    df=pd.read_csv(sio)
    print df
    print df['latitude'].mean(),df['latitude'].std(),df['Longitude'].mean(),df['Longitude'].std()
    df.to_csv(filename_prefix+'Mr_X_'+time.strftime("%Y-%m-%d_%H%M%S", time.localtime())+'.csv')
       
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值