使用IronPython时,如何从VB获取对数组的引用?

时间:2012-11-06 03:05:27

标签: vb.net ironpython

我不是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

我发现了一些旧页面提供了一些提示,但我没有看到正确答案是什么。

1 个答案:

答案 0 :(得分:0)

基本上,IronPython捆绑 ref out 参数into the result as a tuple。这意味着你想要这样的东西:

success, num = fixture.GetNumDataPoints(num)
success, voltages = fixture.GetDataPoints(num, voltages)

ref 和数组之间可能存在一些交互,但这应该有效。