[GRBL/CNC]モーターが停止した情報の取得

現在、1軸スライダーの制御をGRBLとpySerial(pythonでシリアル通信する用のパッケージ)でやっているのですが、スライダーが停止した情報を取得する方法はあるでしょうか?

具体的に実現したいことの例を挙げると、ステージにカメラを載せた上で
”ステージを30cm移動 → 撮影 → 撮影後にまた移動・・・”
みたいな感じです(自動化したいです)。

ステージは下記のようなコードで簡単に動かせるのですが、ステージが停止した時にGRBL側からは特に何も情報が返ってこないので、撮影が自動化できなくて困っています。
ステージが停止した情報を受け取ってから撮影を行い、撮影後にまた次のポイントへ動かす方法は何かあるでしょうか?

CNCに詳しい方、是非ご教授いただけましたら幸いです。どうぞよろしくお願いいたします。

#距離300mmを一往復させるコード
import serial

port = serial.Serial('COM5', 115200, timeout=None)

port.write(b"x300\r\n")  #300mm移動
port.write(b"x0\r\n")  #原点(座標0)に戻る

port.close()

停止したら何か任意のメッセージが返ってくるようにGRBLのソースを書き換える。。みたいな方法になるのでしょうか。
(かなりブラックボックス的にGRBLを使っているので、的外れなことを言ってしまっているのであればご容赦ください)

こんにちは

ソースコードを書き換えるのも一つの方法ですが、grblのリアルタイムコマンドの?を使えば良いかと思います。

レスポンスについてはこちら

Idle, Runとかの状態が取れるので、定期的に?を投げてレスポンスをパースして状態を取ってやればよいかと思います。
あるいは現在位置のチェックでも良いかもしれません。

nyaruさん、非常に参考になるアドバイス誠にありがとうございます。
"?"コマンドで状態確認することで、やりたかったことを無事実現することができました!

また何かあればご質問させていただくかもしれませんが、
引き続きどうぞよろしくお願いします。

「いいね!」 1