我在文件(Display.py)中有一个类(AngleInfo),带有一个自变量(WheelAngle),该自变量在运行函数(GetAngle)后不会更新。该函数在第二个文件(ManageInfo.py)中的类中被调用,并具有基于事件的触发器。当我尝试在Display.py的第二个类(AngleProcess)中使用WheelAngle时,该值不会从初始化更新。在MessageHandler类中触发该函数时,它可以访问GetAngle声明中由m
表示的原始数据。
在另一个文件(Radar.py)中还有另一个类(SpeedInfo),其中在ManageInfo类中运行自变量(VehicleSpeed)后,该自变量(VehicleSpeed)正在更新。
工作用例具有线程系统,但是在非工作用例中将其复制后,我发现没有任何改进。我不明白为什么WheelAngle不在类中进行更新,并且与工作案例进行比较并不能使我更接近答案。
因此,基本上,在我运行GetAngle之后,我看到WheelAngle在该函数中具有正确的值,但是当我在Display.py文件的AngleProcess类的UpdatePlot函数中调用自变量时,便得到了初始值。我什至尝试在AngleInfo类中创建一个不同的函数来访问WheelAngle,然后在AngleProcess类的UpdatePlot函数中调用此函数,但是结果是相同的。
请记住一个可行的示例,因为它需要发送实时数据。而且,即使似乎未使用WheelAngle和VehSpeed,为简化起见,下面的代码也被省略了!
有什么想法吗?下面是代码示例。谢谢!
Display.py
class AngleInfo():
def __init__(self):
self.WheelAngle = 0
def GetAngle(self,m):
self.WheelAngle = float(m) # Angle is correct
class AngleProcess():
def __init__(self):
self.AngleInfoObj = AngleInfo()
def UpdatePlot(self,tupledata):
WheelAngle = self.AngleInfoObj.WheelAngle # Angle is set to initial
Radar.py
class SpeedInfo(threading.Thread):
def __init__(self,page):
threading.Thread.__init__(self)
self.daemon = True
self.start()
self.VehSpeed = 0
def run(self):
VehSpeed = self.VehSpeed # Speed is correct
def GetSpeed(self,m):
self.VehSpeed = float(m) # Speed is correct
ManageInfo.py
from AurixCAN import Receiver
from Radar import SpeedInfo
from Display import AngleInfo
class MessageHandler:
def __init__(self,page):
self.SpeedInfo = SpeedInfo(page)
self.AngleInfo = AngleInfo()
DataSet = Receiver(canIDsandCalls={0xE:[self.SpeedInfo.GetSpeed,self.AngleInfo.GetAngle]})