概要

Visual Studio IDE と C# 言語を使用した、Windowsフォームアプリケーションの例をご紹介します。
Windows PC の USBポートに接続した KeiganMotor を制御します。

実行ファイルとプロジェクトファイルを掲載しています。

準備

https://visualstudio.microsoft.com にアクセスし、Windows PC に、Visual Studio IDE をインストールします。バージョンは無償の community を選択します。インストール完了後、Visual Studio Installer を開きます。

[変更] をクリックし、変更内容をロードします。
[.NETデスクトップ 開発] をチェックして [変更] をクリックすることにより、インストールします。

シリアルポートの確認

KeiganMotor を接続し、シリアルポートの確認を行って下さい。シリアルポートの番号は、Windows の [デバイスマネージャ] > [ポート] から確認できます。

サンプルプログラム

ダウンロード

以下よりサンプルプログラムをダウンロードします。本サンプルコードはこちらの制御コマンドの例を .NET デスクトップアプリケーション向けに実装したライブラリを含みます。
また、本サンプルプログラムは、.NET Framework 4.6.1 以上を必要とします。必要に応じて、インストールして下さい。

・サンプルプログラムのソリューション(開発プログラム)
KeiganMotorKM-1_Production_SerialTest

・サンプルプログラムの実行ファイル(exeファイル)
KeiganMotorKM-1_Production_SerialTest_exe

サンプルプログラムの実行

上記よりダウンロードした zipファイルを解凍し、フォルダの中にある、Windows ソリューションファイル “KeiganMotorKM-1_Production_SerialTest.sln” を開きます。[開始] ボタンをクリックしてプログラムを実行して下さい。
exe. ファイルの場合はそのままダブルクリックで実行して下さい。

少し時間が経つと、”Form1″ というウィンドウが立ち上がります。

※ 実行できない場合、.sln (ソリューション)ファイルのプロパティから、.NET Framework のバージョン 4.6.1 以上を指定することにより改善する場合があります。

サンプルプログラムの使い方

先ほど確認した シリアルポート(COMポート)の番号を選択し、[connect] を押して下さい。KeiganMotor に接続します。その他のボタンの説明は以下を参照下さい。

  • connect: USBポートに接続します
  • enable: モーターの動作を許可します
  • disable: モーターの動作を不許可とします
  • speed(RPM): モーターの速さを RPM 単位で設定します
  • runForward: 正回転を開始します
  • runReverse: 逆回転を開始します
  • moveToPosition: 絶対位置(角度)に移動します
  • moveToDistance: 相対位置(角度)分移動します

C# によるプログラミングの方法

KeiganMotor とシリアル通信を開始する

KeiganMotor との USBシリアル通信を開始するため、先ず、KeiganMotor が接続されたシリアルポート番号を取得する必要があります。
From1_Load メソッドでは、接続された全てのUSBシリアルポート番号を取得して、インタフェースのコンボボックスの選択肢にパスしています。

string[] PortList = SerialPort.GetPortNames();

ComboBox1.Items.Clear();

foreach( string PortName in PortList)
{
    ComboBox1.Items.Add(PortName);
}
if (ComboBox1.Items.Count > 0)
{
    ComboBox1.SelectedIndex = 0;
}
[connect] ボタンを押すと、コンボボックスで選択されたシリアルポート番号のみを取得します。
以下により、接続されたKeiganMotorと通信を開始します。

string portName = ComboBox1.SelectedItem.ToString();
// ...
targetMotor = new KeiganMotor_USB(portName) // シリアルポートを指定して、KeiganMotor のインスタンスを作成
targetMotor.Open(); // シリアルポートの通信を開始

直接ポート番号を指定したい時は、 portNameを、デバイスマネージャーで確認したシリアルポート番号に書き換えて下さい。

targetMotor = new KeiganMotor_USB("COM9");

動作の許可

KeiganMotor を回転させるためには、enable() により動作の許可をする必要があります。
disable() により、動作は不許可となります。

targetMotor.Enable(); // 動作の許可
targetMotor.Disable(); // 動作の不許可

速度制御

テキストボックスで入力したスピードを設定し、正回転または逆回転の動作を行います。

bool valid = float.TryParse(SpeedTextBox.Text.ToString(), out v);
// ...
targetMotor.SpeedRpm(v); // set speed [rpm]
targetMotor.RunForward(); // run forward (ccw)
targetMotor.RunReverse(); // run reverse (cw)

位置制御

絶対位置

テキストボックスで入力した絶対位置 [degree] まで回転動作を行います。事前に、speed の設定が必要です。

bool valid = float.TryParse(PositionTextBox.Text.ToString(), out v);
//...
targetMotor.MoveToPositionDegree(v);

相対位置

テキストボックスで入力した絶対位置 [degree] まで回転動作を行います。事前に、speed の設定が必要です。

bool valid = float.TryParse(DistanceTextBox.Text.ToString(), out v);
//...
targetMotor.MoveByDistanceDegree(v);