Как получить возвращаемое значение из функции CAPL, вызванной из python?

Я хотел бы получить возвращаемые данные из функции CAPL, вызванной из 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('Test1')

    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):
        ret = []
        function1.Call(count)
        function1.Call(count+1)
        print(ret)
        count += 1

    pythoncom.PumpWaitingMessages()
    time.sleep(1)

measurement.Stop()

person Dat Tran Tan    schedule 29.08.2018    source источник
comment
Одна вещь, которую вы можете сделать, это сбросить любой результат, который вы хотите передать из CAPL, в текстовый файл, и python прочитает из этого текстового файла.   -  person Daemon Painter    schedule 31.08.2018
comment
Пожалуйста, покажите нам свою функцию CAPL и расскажите, где вы ее используете. В некоторых случаях вы можете напрямую использовать возвращаемое значение метода CAPLFunction.Call.   -  person dymanoid    schedule 24.09.2018
comment
Приведенный выше пример скопирован как есть из stackoverflow.com/questions/36867122/. Пробовали ли вы читать справку по Vector или вообще что-нибудь пробовали самостоятельно? Потому что если бы вы это сделали, вы бы поняли, что метод Call объекта CAPLFunction возвращает возвращаемое значение вызываемой функции CAPL.   -  person schaazzz    schedule 24.09.2018


Ответы (1)


Вам просто нужно присвоить вызывающий оператор переменной.
var1 = (int)function1.Call(count)
Обратите внимание, что тип возвращаемой переменной должен быть только int.

person Shyam    schedule 05.10.2020