Python 在Linux下如何读取GPS数据?
我以前使用win7从com端口读取GPS数据。从现在起,我想阅读Ubuntu下的数据,但同样的代码不起作用。这是我的密码: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 =
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"