Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Linux下如何读取GPS数据?_Python_Linux_Gps_Serial Port - Fatal编程技术网

Python 在Linux下如何读取GPS数据?

Python 在Linux下如何读取GPS数据?,python,linux,gps,serial-port,Python,Linux,Gps,Serial Port,我以前使用win7从com端口读取GPS数据。从现在起,我想阅读Ubuntu下的数据,但同样的代码不起作用。这是我的密码: import serial, sys, time, threading from datetime import datetime, timedelta class MeasureModule(): def __init__(self, port, baudrate, sync_time=0, sync_nr=0): self.port =

我以前使用win7从com端口读取GPS数据。从现在起,我想阅读Ubuntu下的数据,但同样的代码不起作用。这是我的密码:

import serial, sys, time, threading
from datetime import datetime, timedelta    

class MeasureModule():
    def __init__(self, port, baudrate, sync_time=0, sync_nr=0):
        self.port = port;
        self.baudrate = baudrate;

    def start(self):
        try:
            self.serial = serial.serial_for_url(self.port, self.baudrate, timeout=1)
        except AttributeError:            
            self.serial = serial.Serial(self.port, self.baudrate, timeout=1)
        start = time.clock()
        while(time.clock()-start<11):     
            data  = self.readline()        
            print(data)

        self.stop();                    

    def stop(self):
        self.serial.close()   

    def readline(self, timeout=1, endline='\n'):
        buff='';
        try:            
            tic = time.clock()
            ch = self.character(self.serial.read(1))

            # you can use if not ('\n' in buff) too if you don't like re
            while ((time.clock() - tic) < timeout) and (not ch in endline):
                buff += ch                
                ch = self.character(self.serial.read(1))

        except serial.SerialException, e:
            return buff

        return buff

    def character(self,b):
        if sys.version_info >= (3, 0):
            return b.decode('latin1')
        else:
            return b
但我没有收到任何东西


我如何在Ubuntu下做同样的事情?如何从com端口读取GPS数据?

您没有用程序打开/dev/ttyUSB0。您的GPS模块是如何插入的

如果您执行以下操作,会发生什么情况:

stty -F /dev/ttyACM0 4800
cat /dev/ttyACM0

在控制台中?

您不能用程序打开/dev/ttyUSB0。您的GPS模块是如何插入的

如果您执行以下操作,会发生什么情况:

stty -F /dev/ttyACM0 4800
cat /dev/ttyACM0
在控制台中?

好的

这个代码非常丑陋和陈旧,我在2006年做过,那时我是一个初学者和天真的人

现在,婴儿步

使用命令dmesg或检查控制台消息以了解哪个USB设备连接了GPS。我的情况是USB0

在那之后玩这个代码

当然你必须调用这个函数;请不要忘记

请记住,gps始终在发送数据和通信

出于教育目的,请执行以下操作: 在ser.readline之后打印行

因此,您可以看到整个数据,而不仅仅是lat和long坐标

请记住,USB GPS只是一个奇特的串行设备; 此代码非常简单,我相信您会理解并为更好的代码/程序让路。

好的

这个代码非常丑陋和陈旧,我在2006年做过,那时我是一个初学者和天真的人

现在,婴儿步

使用命令dmesg或检查控制台消息以了解哪个USB设备连接了GPS。我的情况是USB0

在那之后玩这个代码

当然你必须调用这个函数;请不要忘记

请记住,gps始终在发送数据和通信

出于教育目的,请执行以下操作: 在ser.readline之后打印行

因此,您可以看到整个数据,而不仅仅是lat和long坐标

请记住,USB GPS只是一个奇特的串行设备;
此代码非常简单,我相信您会理解并为更好的代码/程序让路。

您可能需要将自己添加到gps所在的组中。这篇文章发布得很晚,但我最近尝试在linux上配置一个usb gps圆盘,并且我不得不在终端中执行sudo adduser-aG USERMAME拨号。这只是将用户添加到gps所在的组拨号中。如果您不知道该组,请将cd发送到终端中的/dev,然后键入ll或ls-Flh。如果这不起作用,则将显示所有权限和组。有一个专栏特别有趣;这是我认为倒数第三的最后一栏之一——对不起,我现在在Windows上,你可能会在列表中看到六到七个叫做dialout的项目。如果你的文件-你的usb-显示在那里,那就是这个组。否则,只需查找组和sudo adduser。。。你自己

确保首先注销,然后在重新登录后再次转到终端并键入cat/dev/ttyACM0。如果你仍然什么也看不到,那么你需要配置并告诉它正确的速率来转储它的信息波特率;因此,输入其他人提到的stty-F/dev/ttyACM0 4800,它将波特率配置为4800。你应该用谷歌搜索正确的波特率,但最后一个命令基本上是这样写的,取这个文件-F,以4800的波特率跟我说话


我希望这能帮助一些人,因为我确实在让我的usb gps冰球在LinuxMint上工作时遇到了一些麻烦。祝所有linux用户好运,我是最新的皈依者:D

您可能必须将自己添加到gps所在的组中。这篇文章发布得很晚,但我最近尝试在linux上配置一个usb gps圆盘,并且我不得不在终端中执行sudo adduser-aG USERMAME拨号。这只是将用户添加到gps所在的组拨号中。如果您不知道该组,请将cd发送到终端中的/dev,然后键入ll或ls-Flh。如果这不起作用,则将显示所有权限和组。有一个专栏特别有趣;这是我认为倒数第三的最后一栏之一——对不起,我现在在Windows上,你可能会在列表中看到六到七个叫做dialout的项目。如果你的文件-你的usb-显示在那里,那就是这个组。否则,只需查找组和sudo adduser。。。你自己

确保首先注销,然后在重新登录后再次转到终端并键入cat/dev/ttyACM0。如果你仍然什么也看不到,那么你需要配置并告诉它正确的速率来转储它的信息波特率;因此,输入其他人提到的stty-F/dev/ttyACM0 4800,它将波特率配置为4800。你应该用谷歌搜索正确的波特率,但最后一个命令基本上是这样写的,取这个文件-F,以4800的波特率跟我说话


我希望这能帮助一些人,因为我确实在让我的usb gps冰球在LinuxMint上工作时遇到了一些麻烦。祝所有linux用户好运,我是最新的皈依者:D

另一方面,AFAICS在Linux上与GPS设备接口的标准方式是v
ia gpsd也有python接口。另外,AFAICS在Linux上与GPS设备接口的标准方式是通过gpsd,它也有一个python接口。我正在接收以下*EMRDY:1用于所有串行端口我正在接收以下*EMRDY:1用于所有串行端口在我的情况下,我没有接收任何数据它在dmesg或控制台消息中说什么关于你的gps当你插入它时?请参阅本文,在它开始向你发送NMEA之前,你应该先发送一些数据数据检查这篇文章非常适合您的情况:在我的情况下,我没有收到任何数据。当您插入gps时,它在dmesg或控制台消息中说了什么?请参阅这篇文章。在它开始向您发送NMEA数据之前,您应该发送一些数据检查这篇文章非常适合您的情况:
import serial
import socket

ser = serial.Serial('/dev/ttyUSB0', 4800, timeout=1)
latitude = ''
longitude = ''
def readgps(latitude,longitude):
    """Read the GPG LINE using the NMEA standard"""
    while True:
        line = ser.readline()
        if "GPGGA" in line:
            latitude = line[18:26] #Yes it is positional info for lattitude
            longitude = line[31:39] #do it again
            return(latitude,longitude)
    print "Finished"