我想使用python发送一些诊断请求。代码:
clr.AddReference('Vector.CANoe.Interop')
clr.AddReference('Vector.Diagnostics')
import CANoe
import Vector.Diagnostics
mCANoeApp = CANoe.Application()
mCANoeApp.Open("myPath")
mCANoeMeasurement = mCANoeApp.Measurement
mCANoeMeasurement.Start()
mCANoeBus = CANoe.Bus(mCANoeApp.get_Bus("Ethernet"))
MNetwork = CANoe.Networks(mCANoeApp.get_Networks(11))
net = CANoe.Network(MNetwork.get_Item(1))
devices = CANoe.Devices(net.Devices)
device = CANoe.Device(devices.get_Item("myDevice"))我还用CANoe的COM层次结构附加了下面的图像。COM对象层次结构,它说设备应该有一个对象诊断。但在我这边,设备没有诊断对象,只有ApplicationSocket、AudioInterface和MostDisassambler。因此,我无法访问诊断对象来创建请求。
diag_ob = device.Diagnostic #isnt creating a Diag object
diag_ob.CreateRequest("Default_Start") #Error因为我无法访问诊断对象,所以我试图直接使用Vector.Diagnostics,这似乎是不承认度量,我试图理解如何将它们连接起来。
当我试图使用Vector.Diagnostics.Application.GetEcu()时,我收到了一个NoneType,我的假设是GetEcu()方法没有看到CANoe被打开。
你知道怎样才能把它们联系起来吗?
发布于 2021-01-27 08:43:36
在开始的时候要注意的事情很少:
请查看发送默认会话请求的下列代码:
from win32com.client import *
import time
mainApp = DispatchEx('CANoe.Application')
print(mainApp.Networks("CAN network 1").Devices("Example_ECU").Name) # To make sure you are referencing the correct ECU
diagreq = mainApp.Networks("CAN network 1").Devices("Example_ECU").Diagnostic.CreateRequest("DefaultSession_Start")
time.sleep(1)
diagreq.Send()试一试,并发布您在控制台中看到的任何错误。测量将在执行上述代码之前启动。
https://stackoverflow.com/questions/65310446
复制相似问题