私は 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 と voltage は決して変化しません。VB 側の関数宣言は次のとおりです。
Public Function GetDataPoints(ByVal num As Integer, ByRef vals() As Double) As Boolean
Public Function GetNumDataPoints(ByRef num As Integer) As Boolean
いくつかのヒントを示す古いページをいくつか見つけましたが、正しい答えがわかりません。