Py串行读取行在Python3中不起作用

问题描述 投票:0回答:1

我在Python 2.7中使用以下代码:

import serial, io
import pynmea2


ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
while True:
    reading = ser.readline()
    if reading.find('GGA') > 0:
        msg = pynmea2.parse(reading)
        print "Lat: %s " % (msg.lat)

但是这里的相同代码在Python3中不起作用:

import serial, io
import pynmea2


ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
while True:
    reading = ser.readline()
    if reading.find('GGA') > 0:
        msg = pynmea2.parse(reading)
        print("Lat: %s " % (msg.lat))

错误消息是:

如果read.find('GGA')> 0:TypeError:参数应为整数或类似字节的对象,而不是'str'

如何使代码在Python3中工作

python python-3.6 raspberry-pi3 pyserial
1个回答
1
投票

在python 3中,字符串类型与字节序列分开。这意味着'GGA'是字符串文字,而reading是字节序列。有几种解决方法。第一。通过调用readingreading = reading.decode()转换为字符串(您需要知道哪种编码)。第二。使用'GGA'.encode()或通过创建字节文字b'GGA'将文字转换为字节。

© www.soinside.com 2019 - 2024. All rights reserved.