状態を逆方向に移行させる
- 更新日2025-12-03
- 3分で読める
タスクの状態を間接的に逆方向へ移行させると、状態を前進させた最後の操作が開始される前の状態に戻ります。たとえば、タスクが「確認済み」状態のときに「DAQmxタスクを開始」関数/VIを実行してタスクを開始すると、タスクは予約され、コミットされ、開始されます。このとき、タスクの状態は「予約済み」へ移行し、さらに「コミット」、「実行中」へと移行します。「DAQmxタスクを停止」関数/VIを呼び出すと、タスクは停止し、状態が「実行中」から「コミット」へと移行します。これは予期しない動作とみなされます。これは、リソースはユーザが明示的に予約していなくても間接的に予約されているため、ここで予約を解除する必要があるからです。代わりに、タスクは停止、コミット解除、予約解除され、状態が「DAQmxタスクを開始」関数/VIの呼び出しによって実行された最後の操作と状態移行の前の状態、すなわち「確認済み」に戻ります。
その他の例としては、タスクが「予約済み」状態にある場合に、有限的な測定を実行するために読み取り関数/VIを呼び出す場合が挙げられます。これにより、読み取り操作が実行される前に、タスクの状態を「予約済み」から「コミット」へ、さらに「実行中」へ間接的に移行させたことになります。読み取り操作が完了すると、タスクの状態は「実行中」に維持されません。これは予期しない動作とみなされます。これは、リソースの予約、またタスクの開始はユーザが明示的に行っていなくても間接的に行われているため、ここでリソースの予約を解除し、タスクを停止する必要があるためです。代わりに、有限的な読み取り操作が完了したら、タスクは間接的に「実行中」から「コミット」へ、さらに「予約済み」に移行します。この結果、タスクは読み取り操作を実行する前の状態に戻ります。
チャンネル、タイミング、トリガ属性/プロパティの設定によって、タスクの状態を「未確認」状態に間接的に戻すことはできません。代わりに、タスクは現在の状態に維持され、次の状態移行が発生した際に間接的に確認されます。たとえば、タスクが「予約済み」状態のときにタイミング属性/プロパティの値を設定すると、タスクは「予約済み」状態のまま維持されます。タスクは、明示的または間接的にコミットされたときに検証されます。このため、状態が移行するときに、NI-DAQmxは属性/プロパティの値が無効であることを示すエラーが発生することがあります。