Python スクリプトのリモート実行

CRI Atom Craft 外部でのスクリプト実行

CRI Atom Craft 外部(外部プロセス)で実行したスクリプトから、ロボット機能を使用することができます。
リモート実行時の外部実行スクリプトとの通信には TCP/IP プロトコルを使用します。

スクリプトサーバーの起動

リモート実行を行うには、「スクリプト」メニューから「サーバー」、「スクリプトサーバーを起動する」を選択して、ロボット機能の通信処理用サーバーを起動します。

criatom_tools_atomcraft_api_connect_runserver.png

サーバー設定(IPアドレス、ポート番号)は、「スクリプト」メニューの「スクリプト設定」から行います。

criatom_tools_atomcraft_api_connect_server_settings.png

サーバーを起動したら、外部のクライアントからスクリプトにて接続を行います。

コンソール版 CRI Atom Craft からのリモート実行

Python スクリプトのローカル実行 用に作成したスクリプトは、コンソール版 CRI Atom Craft からも実行することができます。
コンソール版 CRI Atom Craft については、 CRI Atom Craftターミナル(コマンドライン)ビルドについて を参照してください。

実行イメージ

(1) CriAtomCraftC.exe にオプション-runrobotserverを与えて開始します。また、任意でIPアドレスとポート番号を指定することが可能です。

CriAtomCraftC.exe -runrobotserver
CriAtomCraftC.exe -runrobotserver 127.0.0.1 9000

(2) コンソールツールがスクリプトの待機状態になります。

(3) スクリプトの待機中に-serverexitを入力してエンターを押すと、コンソールツールが終了します。

待機状態中のコマンド

スクリプトの待機中、下記のコマンドのみを受け付けます。実行ファイルに指定するオプションは使用できません。

コマンド 説明
-serverexit サーバーの通信待機処理を終了し、アプリケーションを終了させます。
-serverreboot サーバー処理を再起動します。何らかの原因でリモートAPIが正しく処理出来なくなった場合に使用してください。

リモート実行用スクリプトの記述

リモート実行用スクリプトでは、リモート実行用プラグインパッケージ内のモジュールを使用します。
リモート実行用プラグインパッケージには、リモート実行のための 通信 モジュール 「cri.atomcraft.criatomcraft_api_lib」 が用意されています。
この 通信 モジュール をインポートし、機能の初期化、CRI Atom Craft との接続を行うことで、リモート実行が可能になります。
※ リモート実行用プラグインパッケージの設定については、 リモート実行のための環境設定 をご覧ください。

例えば「 Hello World をスクリプトログに表示する 」チュートリアルのスクリプトをリモート実行対応にすると次のようになります。

import sys
import cri.atomcraft.criatomcraft_api_lib as acconnect
import cri.atomcraft.debug as acdebug
# 初期化
result = acconnect.initialize()
if result != 0:
print("initialize error")
sys.exit()
# 接続の実行
result = acconnect.connect("127.0.0.1", 9000)
if result != 0:
print("connection failed")
acconnect.finalize()
sys.exit()
# コマンドの送信
acdebug.log("Hello World!")
# 接続の終了
acconnect.disconnect()
# 終了処理
acconnect.finalize()

このスクリプトを helloworld.py として保存し、ターミナル(コマンドプロンプト)から下記コマンドを実行すると、CRI Atom Craft に文字列が出力されるのが確認できます。

python3 helloworld.py

※ 環境によっては、Python3 の実行ファイルは "python3" ではなく "python" の場合もあります。