実機レスで快適デバッグ!シミュレーターAPIを使ったデジタルI/Oの仮想制御
はじめに:開発環境における「入力信号」の課題
ローカル環境や実機(ハードウェア)が手元にない状況でアプリケーションの動作確認を行う際、「入力(Input)信号」の取り扱いに困ったことはありませんか?
通常、WMX3 Consoleなどのツール上では、入力信号の値を手動で書き換えることはできません。私自身、以前はこの仕様のために適切なデバック方法が分からず、「出力信号の値を無理やり判定条件に使う」といった、本番コードとは異なる非効率なワークアラウンド(回避策)でコード分岐のテストを行っていました。
シミュレーターAPIで解決できること
しかし、そのような変則的なデバッグはもう不要です。ソフトウエアモーションコントロールである「WMX3」には、強力なシミュレーターAPIが標準で用意されています。
この機能を使用することで、物理デバイスが接続されていない環境でも、プログラム上から仮想的にI/OのON/OFFを自在に操作(オーバーライド)することが可能になります。
本記事のゴール
本記事では、WMX3のシミュレーター機能を活用し、実機レス環境においてデジタルI/Oの挙動をシミュレート・テストする手法を解説します。以下のサンプルコードを参考に、快適で効率的なデバッグ環境を構築しましょう。
コード説明
入力の値を書き換えるコードは以下になります。(必要な部分のみ抜粋)
using WMX3ApiCLR.SimuApiCLR;
/// <summary>モーションコントロールシミュレーター</summary>
WMX3ApiCLR.SimuApiCLR.Simu SimulatorDevice;
SimulatorDevice = new Simu(Device);
SimulatorDevice.SetInBit(0, 0, (byte)1);シミュレータークラスをNewして、SetInBit関数で指定の入力bitを操作します。
動作確認方法
- サンプルアプリを起動します。
- WMX3 Console を起動します。
- I/O Monitor を開きます。
- サンプルアプリからbitを操作します。

ONを押すと、1.0の入力値がONに書き換わります。(緑になった部分)

アドレスを1.3変更した場合の動作は以下の通りです。


WMX3のコード実行中に、シミュレーターで値を操作することができます。
サンプルプロジェクト一式
Git Hubにプロジェクトを保存しています。
WMX-fan/WMX_SimuApiSample: シミュレータークラスの使い方解説
プロジェクトをダウンロードした時に起こるエラー
CS0246 型または名前空間の名前 ‘WMX3ApiCLR’ が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください)

参照が外れています。再設定を行います。
C:\Program Files\SoftServo\WMX3\Lib\WMX3Api_CLRLib.dllを参照してください。

SimuApi_CLRLib
CoreMotionApi_CLRLib.dll
も同様に際参照を行ってください。
おわりに:1行のコードで開発効率を最大化
今回は、WMX3のシミュレーターAPIを活用し、実機レス環境でデジタルI/Oを仮想制御する方法について解説しました。
記事内のサンプルコードでご覧いただいた通り、複雑な物理配線の処理も、APIを使用すればたった1行のコードで実現可能です。このシンプルさが、ソフトウエアモーションコントロールの大きな強みと言えるでしょう。
また、この手法は単なるI/Oチェックだけでなく、WMX3の「イベント機能(割り込み処理)」のデバッグにおいても非常に強力な武器となります。特定の入力信号をトリガーとするイベント処理を、任意のタイミングで自在に発生させることができるため、エッジケースの検証もスムーズに行えます。
ぜひ、このテクニックを日々の開発に取り入れ、快適で効率的なデバッグ環境を構築してください。

コメント