回复:在此特定线路上将 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:
的错误
我正在尝试将此行从 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: