C# 使用Vector.Diagnostic.dll发送诊断请求
我想使用python发送一些诊断请求。 代码: 我还附加了下面的图片和来自CANoe的COM层次结构。 它说设备应该有一个对象诊断。但就我而言,设备没有诊断对象,只有应用程序套接字、音频接口和MOSTDisSambler。因此,我无法访问诊断对象以创建请求C# 使用Vector.Diagnostic.dll发送诊断请求,c#,python-3.x,com,canoe,canalyzer,C#,Python 3.x,Com,Canoe,Canalyzer,我想使用python发送一些诊断请求。 代码: 我还附加了下面的图片和来自CANoe的COM层次结构。 它说设备应该有一个对象诊断。但就我而言,设备没有诊断对象,只有应用程序套接字、音频接口和MOSTDisSambler。因此,我无法访问诊断对象以创建请求 diag_ob = device.Diagnostic #isnt creating a Diag object diag_ob.CreateRequest("Default_Start&qu
diag_ob = device.Diagnostic #isnt creating a Diag object
diag_ob.CreateRequest("Default_Start") #Error
因为我无法访问诊断对象,所以我尝试直接使用向量。Diagnostics似乎无法识别测量值,我试图了解如何将它们链接起来
当我试图使用Vector.Diagnostics.Application.GetEcu()
时,我接收到一个NoneType,我的假设是GetEcu()
方法没有看到独木舟打开
您知道如何将它们链接起来吗?开始时需要注意的几点:
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()
尝试此方法并发布您在控制台中看到的任何错误。在执行上述代码之前要开始测量。开始时需要注意的几点:
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()
尝试此方法并发布您在控制台中看到的任何错误。测量将在执行上述代码之前开始。您能否分享您的代码以及有关独木舟配置的一些详细信息?您好,我编辑了我的帖子,并将代码粘贴到初始帖子中。为了更好的可视性,我使用了64位的CANoe 11,我使用了基于arxml的ETH模拟。Vector.Diagnostics.dll用于在CANoe中进行诊断,例如在C#中编写模拟或测试时。应该在python中使用COM来使用COM接口,例如使用pywin32而不是IronPython。除此之外,您能否确认您的设备在CANoe的诊断配置对话框中被称为myDevice?也许发布一个对话框的屏幕截图。它不是myDevice,在实际代码中我有真实的名字。一切都很好,但我找不到名为diagnostics的对象,即使我在Vector.Interop.dll中查找,诊断类也不存在。但是这个Vector.Diagnostic.dll怎么能看到我的独木舟被打开了?我还在名为“设备详细信息”的链接中添加了一张新照片。在那里你可以看到诊断不是一个类。你能分享你的代码和一些关于独木舟配置的详细信息吗?你好,我编辑了我的帖子,并将代码粘贴到了最初的帖子中。为了更好的可视性,我使用了64位的CANoe 11,我使用了基于arxml的ETH模拟。Vector.Diagnostics.dll用于在CANoe中进行诊断,例如在C#中编写模拟或测试时。应该在python中使用COM来使用COM接口,例如使用pywin32而不是IronPython。除此之外,您能否确认您的设备在CANoe的诊断配置对话框中被称为myDevice?也许发布一个对话框的屏幕截图。它不是myDevice,在实际代码中我有真实的名字。一切都很好,但我找不到名为diagnostics的对象,即使我在Vector.Interop.dll中查找,诊断类也不存在。但是这个Vector.Diagnostic.dll怎么能看到我的独木舟被打开了呢?我还在名为“设备详细信息”的链接中添加了一张新照片,你可以看到诊断不是一个类。您好,这个解决方案正在运行,但我想找到一种使用Diagnostics.dll的方法。为什么?因为我想获得执行命令的输出和更多的自由。现在我必须解决以下问题:如何以字符串格式从diagnostics作业获得响应?这是我的代码:
while diagreq.Pending:time.sleep(0.5)打印(diagreq.Responses.Count)范围内的x(diagreq.Responses.Count):diagResp=diagreq.Responses(x+1)打印(diagResp.Stream)
diagResp.Stream
在我试图将其转换为字符串时返回一个memoryview。这就是我试图转换它的方式:diagResp.Stream.tobytes().decode(“utf-16”)
Hello,这个解决方案正在运行,但我想找到一种使用Diagnostics.dll的方法。为什么?因为我想获得执行命令的输出和更多的自由。现在我必须解决以下问题:如何以字符串格式从diagnostics作业获得响应?这是我的代码:while diagreq.Pending:time.sleep(0.5)打印(diagreq.Responses.Count)范围内的x(diagreq.Responses.Count):diagResp=diagreq.Responses(x+1)打印(diagResp.Stream)
diagResp.Stream
在我试图将其转换为字符串时返回一个memoryview。这就是我试图转换它的方式:diagResp.Stream.tobytes().decode(“utf-16”)