回复:在此特定线路上将 Python2 转移到 Python3

RE: Transferring Python2 to Python3 on This Specific Line

我正在尝试将此行从 python2 组源中更改为 python3 可接受:

Here is the error:

TypeError: unicode strings are not supported, please encode to bytes: 
'$PMTK251,9600*17\r\n'

谁能告诉我为什么会这样或者我如何改变它以适应 Python3 方法?

Python2 中的一组 GPS 源仍然有效,但我看到所有与 Python2 相关的想法都将不再可用 and/or 已经基本完成并且走了。

因此,我的想法是更新该行和其他行。

在 python3 中,我收到与字节相关的错误,并且我目前在 Python3 中尝试制作 .csv 文件时阅读了有关 (arg, newline='') in source 的想法.

我仍然不知道如何将 Python3 合并到这一特定行中。

如有必要,我可以提供更多关于该行或源代码其余部分的信息。我从 toptechboy.com 收到了这个来源。我不认为那个家伙曾经更新过源代码以使用 Python3.

class GPS:
def __init__(self):
    #This sets up variables for useful commands.
    #This set is used to set the rate the GPS reports
    UPDATE_10_sec = "$PMTK220,10000*2F\r\n" #Update Every 10 Seconds
    UPDATE_5_sec = "$PMTK220,5000*1B\r\n"   #Update Every 5 Seconds  
    UPDATE_1_sec = "$PMTK220,1000*1F\r\n"   #Update Every One Second
    UPDATE_200_msec = "$PMTK220,200*2C\r\n" #Update Every 200 Milliseconds
    #This set is used to set the rate the GPS takes measurements
    MEAS_10_sec = "$PMTK300,10000,0,0,0,0*2C\r\n" #Measure every 10 seconds
    MEAS_5_sec = "$PMTK300,5000,0,0,0,0*18\r\n"   #Measure every 5 seconds
    MEAS_1_sec = "$PMTK300,1000,0,0,0,0*1C\r\n"   #Measure once a second
    MEAS_200_msec= "$PMTK300,200,0,0,0,0*2F\r\n"  #Meaure 5 times a second
    #Set the Baud Rate of GPS
    BAUD_57600 = "$PMTK251,57600*2C\r\n"          #Set Baud Rate at 57600
    BAUD_9600 ="$PMTK251,9600*17\r\n"             #Set 9600 Baud Rate
    #Commands for which NMEA Sentences are sent
    ser.write(BAUD_57600)
    sleep(1)
    ser.baudrate = 57600
    GPRMC_ONLY = "$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29\r\n" #Send only the GPRMC Sentence
    GPRMC_GPGGA = "$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n"#Send GPRMC AND GPGGA Sentences
    SEND_ALL = "$PMTK314,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n" #Send All Sentences
    SEND_NOTHING = "$PMTK314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n" #Send Nothing

...

那就是 GPS Class McWhorter 先生在 python2 中写了一个 GPS 模块。我正在尝试将此 python2 源配置为可用的 python3 class.

我收到诸如“需要是字节”之类的错误and/or“此处不能使用字节”。

无论如何,如果您有 Python3 的便利,并且知道我在这个来源上哪里犯了错误,可以将其转移到 Python3,请告诉我。我曾多次尝试更改源代码以接受字节并作为 utf 字符串读取。

此处:Best way to convert string to bytes in Python 3? <<< 这似乎是该主题中最受欢迎的话题,但到目前为止它还没有回答我的问题(我认为)。

当在字符串前面为字节添加一个 b 时,这一行就起作用了……就像这样。

(b'$PMTK251,9600*17\r\n')

这应该可以让您摆脱 TypeError: unicode strings are not supported, please encode to bytes:

的错误