web-dev-qa-db-ja.com

配列にアクセスするには?

フライス盤でOPCサーバーを実行していて、現在そのマシンで利用できるツールの名前にアクセスしたいと思っています。

私が探している変数の名前が

Sinumerik/Tool/Catalogue/toolIdent[1]
Sinumerik/Tool/Catalogue/toolIdent[2]

等々。 uaexpertなどのビューアで対応する値を確認できます。

アクセスできる間

Sinumerik/Tool/Catalogue/toolIdent

次のようなコマンドを使用して、ルートから順に下に歩く

children=Position.get_children()
for child in children:
    Position=child

これは子ではないため、このアプローチはtoolIdent[1]では機能しません。

配列のこれらの値にアクセスするにはどうすればよいですか?

EDIT:1つの追加の注釈:ツールの名前は、変数としてではなく、ノードの値として保存されます。関数get_array_dimensionsを見つけましたが、これは変数に対してのみ機能するようです。

EDIT2:探しているアレイのUAExpertビューのスクリーンショットを添付しました。配列の最初の3つの値は3D_BLUM、12、および98です。 enter image description here

EDIT3:UAExpertで、「カスタムノードの追加」コマンドを使用して文字列ノードを選択することにより、toolIdent[2]の内容を確認できますNodeIdのパラメーターとして "/ Tool/Catalogue/toolIdent [2]"を提供します。私はpython(できればopcuaライブラリ、)を使用して同じことを行う方法を見つけようとしています。Pythonでこの目標を達成するための報奨金を提供しています。

6
tfv

私が読んだことによると、これは配列ではなく、命名規則のようです。私はそれをハッキングすることから始めます:

    for x in range(10):
        if x == 0:
            availTools = [toolIdent]
        else:
            availTools.append(toolIdent[x])

これで、実際の配列(availTools)に使用可能なツールがあり、好きな方法でアクセスできます。

1
Kyle Hurst