2012-11-06 33 views
1

我不是一個Python程序員,但我試圖讓一個簡單的腳本使用IronPython和VB.Net工作。我已經很遠了,但現在我堅持通過引用傳遞參數。我需要能夠將數據從VB端返回到參數列表中的Python端(因爲Python會返回元組,但.Net不會)。但是,這段代碼不起作用,我不知道爲什麼不行。如何在使用IronPython時從VB返回數組的引用?

這裏是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 

夾具是定義的變量,並且該功能正確調用,但Num和電壓在Python端永遠不會改變。這裏是關於VB方面的函數聲明:

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

我發現,給一些提示的幾個老的頁面,但我沒有看到正確的答案是什麼。

回答

0

基本上,IronPython的捆綁REF參數into the result as a tuple。這意味着你想是這樣的:

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

有可能是裁判和陣列之間的相互作用,但這應該工作。