簡體   English   中英

像對象這樣的字節是必需的,而在python 3 parsegps(str)中不是字符串

[英]a byte like object is required not string in python 3 parsegps(str)

我試圖編寫一個可以很好地從我的串行UART讀取數據並使用pynmea2模塊解析NMEA gps語句的代碼,而我在python 2中運行此代碼,當我嘗試使用python3運行它時,它就像魔術一樣工作,類型錯誤上升我正在使用python idle在我的raspberry pi 3中編寫代碼,而neo 6m gps和raspberry之間的所有硬件都很好,我的代碼很糟糕

import serial
import pynmea2

def parseGPS(str):

    if str.find('GGA') > 0:
        msg = pynmea2.parse(str)
        #print "Timestamp: %s -- Lat: %s %s -- Lon: %s %s -- Altitude: %s %s" % (msg.timestamp,msg.lat,msg.lat_dir,msg.lon,msg.lon_dir,msg.altitude,msg.altitude_units)

serialPort = serial.Serial("/dev/ttyS0", 9600, timeout=0.5)

while True:
    str = serialPort.readline()
    parseGPS(str)

`

我得到這個消息

 "if str.find('GGA').0:
    TypeError:'a bytes-like object is required, not 'str' "

在Python 3.x中,文本始終是Unicode,並由str類型表示,而二進制數據則由字節類型表示。 serial.readline()實際上返回二進制數據,因此返回字節類型。 這與Python 2.x不同。

您可以使用以下命令將編碼的字節數據轉換為str:

str = serailPort.readline().decode()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM