我正在使用python通过raspberry Pi上的i2c从u-blox NEO-M9N芯片读取数据
目前,我还没有构建脚本的其余部分,但我对芯片的输出感到有点困惑,因为它似乎包含了不属于那里的字符,例如 °、、、或。有时,这些似乎是对相似字符的替换:021120对于几行是正确的,然后被0²1±20替换,这并不太遥远
这些句子可能对5到50行之间的任何东西都是正确的,然后我会得到这样的结果(我用X替换了部分GPS坐标,但你得到了它):
$GNRMC,204107.00,A,XX.20¶46,N,XX.47371,E,0.844,,021±20,,,A,V*17
$GNRMC,204108.00¬A,XX.20603,N,XX.47454,E,0.921,,021120,,,A,V*1B
你知道这是怎么回事吗?我很确定这会把我想要的数据搞砸
下面是我用来读取数据的代码:
import time
import json
import smbus
import logging
BUS = None
address = 0x42
gpsReadInterval = 0.1
LOG = logging.getLogger()
# taken and (poorly) adapted from
# http://ava.upuaut.net/?p=768
def connectBus():
global BUS
BUS = smbus.SMBus(1)
def parseResponse(gpsLine):
gpsChars = ''.join(chr(c) for c in gpsLine)
if "GNRMC" not in gpsChars:
return False
print(gpsChars)
def readGPS():
c = None
response = []
try:
while True: # Newline, or bad char.
c = BUS.read_byte(address)
if c == 255:
return False
elif c == 10:
break
else:
response.append(c)
parseResponse(response)
except IOError:
time.sleep(0.5)
connectBus()
connectBus()
while True:
readGPS()
time.sleep(gpsReadInterval)
为了子孙后代,有人为我解决了这个问题:Fix special characters with closest equivalent without map
这确实是一个硬件问题,但它可以通过软件修复使用这个家伙的答案
相关问题 更多 >
编程相关推荐