我不是Python程序员,但我正在尝试使用IronPython和VB.Net来创建一个简单的脚本。我已经走得很远,但现在我坚持通过引用传递参数。我需要能够将数据从VB端返回到参数列表中的Python端(因为Python返回元组,但.Net没有)。但是,这段代码不起作用,我不知道为什么不这样做。
这是python代码:
def GetVoltages(voltages):
fixture.StartScan()
done=False
counter=0
while done == False:
fixture.GetNumDataPoints(num)
if num>=15:
done=True
else:
counter=counter+1
if counter>1000000:
break
if done == True:
fixture.GetDataPoints(num, voltages)
else:
log.WriteLine("Failed to read voltages.")
return done
buff = Array.CreateInstance(System.Double, 0)
if GetVoltages(buff):
log.WriteLine("Checking voltages.")
CheckVoltage(buff, 3, 22)
# do other stuff
fixture是一个已定义的变量,函数被正确调用,但python端的num和电压永远不会改变。这是VB端的函数声明:
Public Function GetDataPoints(ByVal num As Integer, ByRef vals() As Double) As Boolean
Public Function GetNumDataPoints(ByRef num As Integer) As Boolean
我发现了一些旧页面提供了一些提示,但我没有看到正确答案是什么。
答案 0 :(得分:0)
基本上,IronPython捆绑 ref 和 out 参数into the result as a tuple。这意味着你想要这样的东西:
success, num = fixture.GetNumDataPoints(num)
success, voltages = fixture.GetDataPoints(num, voltages)
ref 和数组之间可能存在一些交互,但这应该有效。