gpt4 book ai didi

python - 我怎样才能让这段代码中的变量更新?

转载 作者:行者123 更新时间:2023-12-01 15:22:44 24 4
gpt4 key购买 nike

我希望能够实时打印和更新从小型 GPS 检索到的值。无论出于何种原因,代码都不会更新 GPS 值,并且只会打印相同的值,直到我重新启动代码。我的猜测是变量无法更新,但我不知道如何解决。

while ser.inWaiting() > 0:
decoded = (ser.read(1).decode)
echo += decoded()

class GPS:
def __init__(self):
#Write GPSinput
out = ''
ser.write(com.GPSstatus.encode())
time.sleep(1)

#Read output
while ser.inWaiting() > 0:
decoded = (ser.read(1).decode)
out += decoded()

strlen = len(str(out))
substr = out[0:strlen-9]

#GPS? information list
variables = substr.splitlines()

#Storing each output in a variable
self.PULSE_SAWTOOTH = [int(s) for s in variables[1] if s.isdigit()]
self.TRACKED_SATELLITES = [int(s) for s in variables[2] if s.isdigit()]
self.VISIBLE_SATELLITES = [int(s) for s in variables[3] if s.isdigit()]

self.LONGITUDE = variables[5]
self.longlen = len(self.LONGITUDE)
self.LONGDEG = self.LONGITUDE[0:self.longlen-7]
self.LONGMIN = self.LONGITUDE[self.longlen-7:]

self.LATITUDE = variables[6]
self.latlen = len(self.LATITUDE)
self.LATDEG = self.LATITUDE[0:self.latlen-7]
self.LATMIN = self.LATITUDE[self.latlen-7:]

self.HEIGHT = variables[7]
self.KNOTS = variables[8]
self.DEGREES = [9]

self.GPS_STATUS = variables[10]
self.TIMING_MODE = variables[17]
self.FIRMWARE_VERSION = variables[20]

if __name__ == "__main__":

#Call the functions
gps = GPS()
for i in range(100):
print(gps.LATITUDE)
#Enterable Parameters
# PULSE_SAWTOOTH
# TRACKED_SATELLITES
# VISIBLE_SATELLITES
# LONGITUDE
# longlen
# LONGDEG
# LONGMIN
# LATITUDE
# latlen
# LATDEG
# LATMIN
# HEIGHT
# KNOTS
# DEGREES
# GPS_STATUS
# TIMING_MODE
# FIRMWARE_VERSION

我猜这是一个非常简单的解决方案,但我是初学者,我不完全了解发生了什么,无法修复它。如果有人可以分享一些知识并帮助解决我的问题,将不胜感激。

最佳答案

除了 while 循环缩进错误和可能的 decode 错误。 print(gps.LATITUDE) 每次都会得到相同的输出,因为您从未更新过它,无论是通过 gps 对象,还是调用的成员函数类 GPS。您的初始 gps 对象始终具有 LATITUDE 等于值 variables[6] 并且如果该变量未更改,您的 LATITUDE 变量。您有多种选择,您可以直接更新 LATITUDE:

class GPS:
def __init__(self , latitudeValue = 0):
self.LATITUDE = latitudeValue

if __name__ == "__main__":
gps = GPS()
print(gps.LATITUDE) # Prints 0, default value of latitudeValue
gps.LATITUDE = 5
print(gps.LATITUDE) # Now prints 5, changed value of LATITUDE in gps object

或者您可以将其作为函数调用的一部分:

class GPS:
def __init__(self , latitudeValue = 0):
self.LATITUDE = latitudeValue
def updateLatitude(self , newValue):
self.LATITUDE = newValue

if __name__ == "__main__":
gps = GPS()
print(gps.LATITUDE) # Prints 0
gps.updateLatitude(10) # Updates LATITUDE VALUE
print(gps.LATITUDE) # Prints 10

无论 variables[6] 的值是多少,您都可以使用任何一种方法。同样,您可以将它与类的所有成员变量一起使用。

对于实时更新你需要使用一个事件处理函数,这个场景可能需要一个listener .不知道更多关于设备通过总线传递数据的信息。如果您的设备制造商不提供可使用的 API,那么虽然您可以使用循环不断重新初始化对象,但另一种方法是 module reloading .

关于python - 我怎样才能让这段代码中的变量更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60235739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com