我正在使用CANalyzer,但找不到包含参数的CAPL函数的调用方法。如果我放不num进去functions_call.Call(num)。
def call(num):
print 'calling from CAN'
x=int(num)
functions_call.Call()
return 1
Run Code Online (Sandbox Code Playgroud)
不久前,我遇到了类似的问题,有些Google搜索将我引向Vector的以下应用笔记:
...检出部分“ 2.7调用CAPL函数”。
综上所述,请确保将您的CAPL函数的参数声明为“ long”,例如:以下似乎对我有用:
void function1(long l)
{
write("function1() called with %d!", l);
}
Run Code Online (Sandbox Code Playgroud)
为了完整起见,这就是我的python代码(对于上面的示例)如下所示:
from win32com import client
import pythoncom
import time
function1 = None
canoe_app = None
is_running = False
class EventHandler:
def OnInit(self):
global canoe_app
global function1
function1 = canoe_app.CAPL.GetFunction('function1')
def OnStart(self):
global is_running
is_running = True
canoe_app = client.Dispatch('CANoe.Application')
measurement = canoe_app.Measurement
measurement_events = client.WithEvents(measurement, EventHandler)
measurement.Start()
# The following loop takes care of any pending events and, once, the Measurement
# starts, it will call the CAPL function "function1" 10 times and then exit!
count = 0
while count < 10:
if (is_running):
function1.Call(count)
count += 1
pythoncom.PumpWaitingMessages()
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8250 次 |
| 最近记录: |