首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Vector.Diagnostic.dll发送诊断请求

使用Vector.Diagnostic.dll发送诊断请求
EN

Stack Overflow用户
提问于 2020-12-15 17:07:28
回答 1查看 863关注 0票数 2

我想使用python发送一些诊断请求。代码:

代码语言:javascript
复制
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。因此,我无法访问诊断对象来创建请求。

代码语言:javascript
复制
    diag_ob = device.Diagnostic             #isnt creating a Diag object
    diag_ob.CreateRequest("Default_Start")  #Error

设备细节

CANoe.Diagnostic失败

device.Diagnostic

因为我无法访问诊断对象,所以我试图直接使用Vector.Diagnostics,这似乎是不承认度量,我试图理解如何将它们连接起来。

当我试图使用Vector.Diagnostics.Application.GetEcu()时,我收到了一个NoneType,我的假设是GetEcu()方法没有看到CANoe被打开。

你知道怎样才能把它们联系起来吗?

EN

回答 1

Stack Overflow用户

发布于 2021-01-27 08:43:36

在开始的时候要注意的事情很少:

  1. 您不必提到添加引用行,因为这些dll是在安装CANoe时注册的。
  2. 最重要的是"Vector.Diagnostics“不能被引用,因为这是CANoe使用的东西。
  3. 您尝试使用的是COM接口,而不是诊断接口。

请查看发送默认会话请求的下列代码:

代码语言:javascript
复制
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()

试一试,并发布您在控制台中看到的任何错误。测量将在执行上述代码之前启动。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65310446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档