【问题标题】:Py serial readline not working in Python3Py serial readline在Python3中不起作用
【发布时间】:2019-09-29 05:21:30
【问题描述】:

我在 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))

错误信息是:

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

如何让代码在 Python3 中工作

【问题讨论】:

    标签: python python-3.6 raspberry-pi3 pyserial


    【解决方案1】:

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

    【讨论】:

    • @user3141181 如果这回答了您的问题,请将其标记为解决方案。
    猜你喜欢
    • 2012-02-15
    • 2022-08-12
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    相关资源
    最近更新 更多