コンテンツにスキップ

スクリプトを使用して自動テストを行う

Note

ここでは、スクリプトを用いて自動テストを行います。 AUTOmeal ではサンプルスクリプトを提供しているため、そのスクリプトを用いて説明します。

サンプルを使ってスクリプトを理解する

AUTOmeal では Python 形式のスクリプトファイルに自動化したい制御・計測・判定の命令を記述し、そのスクリプトを読み込むことでテストを自動化させることができます。

API の使い方を知る

サンプルスクリプトで使用される CAN 通信の API は以下です。

# CAN 通信設定の識別名 Vector-VN1610-1 のチャンネル1から ID[0x100] データ[0x01, 0x02, 0x03] を送信します。
am.send_can("Vector-VN1610-1", 1, 0x100, [0x01, 0x02, 0x03] )

# CAN 通信設定の識別名 Vector-VN1610-1 のチャンネル1から メッセージ定義ファイルで定義されている "Test1" を送信します。
am.send_can_message("Vector-VN1610-1", 1, "Test1")

# CAN 通信設定の Vector-VN1610-1 のチャンネル1で ID[0x100] の最後に受信したメッセージを取得します。
am.get_latest_can("Vector-VN1610-1", 1, 0x100, "R")

# 指定した CAN の ID で次のメッセージを受信するまでタイムアウト付きで待機します。
am.wait_for_next_can_message("Vector-VN1610-1", 1, 0x100, 5000)

制御では CAN 通信設定で設定された ”識別名” と ”チャンネル” 送信したい “メッセージ (ID,Data)” を記載することで送信します。メッセージには byte 配列を記載できます。

計測では CAN 通信設定で設定された ”識別名” と ”チャンネル” と送受信方向 “R/S” を記載すると最新の送信 / 受信メッセージを取得できます。 受信待ちをする場合、“ポート名” とタイムアウトまでの時間 (ms) を記載します。

詳細はスクリプトリファレンスを参照してください。

スクリプトの大まかな構成を理解する

CAN 通信設定の Vector-VN1610-1 からメッセージを送信します。

import automeal as am
import time

# メッセージを送信します。
# CAN 通信設定の Vector-VN1610-1(ch1) から ID=0x100, data=0x010203 のメッセージを送信します。
am.send_can("Vector-VN1610-1", 1, 0x100, [0x01, 0x02, 0x03] )

# 送信待ちを行います。
time.sleep(0.5)

# Vector-VN1610-1(ch1) で最後に受信した ID=0x100 のメッセージを表示します。
result_can = am.get_latest_can("Vector-VN1610-1", 1, 0x100, "R")
if len(result_can) == 0 :
    print('受信データはありません。', flush=True)
else :
    print(f'CAN 受信データ:{result_can}', flush=True)

# ID:0x100 を受信するまで待機 (無限待ち) し、受信したデータの表示を行います。
result_can = am.wait_for_next_can_message("Vector-VN1610-1", 1, 0x100)
print(f'CAN 受信データ:{result_can}', flush=True)

スクリプトをカスタマイズする

スクリプトをカスタマイズしてみましょう。

CAN 通信で送信するデータを変更します。 メッセージ定義ファイルで定義されているメッセージを送信します。

import automeal as am
import time

# メッセージを送信します。
# CAN 通信設定の Vector-VN1610-1 からメッセージを送信します。
am.send_can_message("Vector-VN1610-1", 1, "Test1")

# 送信待ちを行います。
time.sleep(0.5)

# 受信したメッセージの表示を行います。
result_can = am.get_latest_can("Vector-VN1610-1", 1, 0x100, "R")
if len(result_can) == 0 :
    print('受信データはありません。', flush=True)
else :
    print(f'CAN 受信データ:{result_can}', flush=True)

# 受信するまで待機し、受信したメッセージの表示を行います。
# 5 秒間受信しなかった場合はエラー (例外) となります。
result_can = am.wait_for_next_can_message("Vector-VN1610-1", 1, 0x100, 5000)
print(f'CAN 受信データ:{result_can}', flush=True)

スクリプトの配置、実行方法、結果の確認方法はロジック信号での説明と同じになります。

こちらを参照ください。