1

我不是 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 和 voltages 永远不会改变。这是VB端的函数声明:

Public Function GetDataPoints(ByVal num As Integer, ByRef vals() As Double) As Boolean
Public Function GetNumDataPoints(ByRef num As Integer) As Boolean

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

4

1 回答 1

0

基本上,IronPython将refout参数作为 tuple 捆绑到结果中。这意味着你想要类似的东西:

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

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

于 2012-11-07T23:04:27.387 回答