Windows C# USB接続でのサンプルコード
ライブラリ
Windows フォームアプリケーションの作成などに使用できる、KeiganMotor KM-1シリーズ用のライブラリです。以下からダウンロード下さい。(2023/3/17)
角度取得とグラフ化
KeiganMotor KM-1 1台を用いた、Windowsフォームアプリケーションのプロジェクトファイルです。
Others > Interface タブから、USB の箇所にチェック、BLEのチェックを外すことで、KeiganMotorからのUSB経由での通知を有効化します。この状態で、Measurement タブからは、モーターの角度や速度などのグラフを確認することができます。
・角度取得、グラフ化を含むソリューション(開発プログラム)
KeiganMotorKM-1_USB_Test_sample.zip
Unity のサンプル
上記の Unity 版サンプルコードになります。
複数台制御
KeiganMotor KM-1 2台を用いた、Windowsフォームアプリケーションのプロジェクトファイルです。
USBシリアル通信により2台を接続し、それぞれ同時に回転させることができます。
本例では、KeiganMotor 2台に対して、36度ずつ回転する相対位置制御を3秒間隔で10回繰り返します。
・サンプルプログラムのソリューション(開発プログラム)
KeiganMotorKM-1_Multi_SerialTest
サンプルプログラムの使い方
サンプルプログラムを実行します。ボタンの説明は以下を参照下さい。
- Reload: USB COMポートのリストを更新します。左上のコンボボックスに反映されます。
- Connect: コンボボックスで接続されたKeiganMotorに接続します。
- Disconnect: 切断する
- Enable: モーターの動作を許可する
- SyncTest: 同期制御のサンプルデモ
手順
以下の順番に操作して下さい。
- KeiganMotor KM-1 の接続された COMポートを選択する
- Connect にて接続する。(1-2の手順を2セット行い2台接続する)
- Enableにて動作許可を行う。
- 同期制御を行う。(3秒間隔で 36度ずつ回転を10回繰り返す)
KeiganMotor 制御
概要
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 の [デバイスマネージャ] > [ポート] から確認できます。
サンプルプログラム
KeiganMotor KM-1 1台を用いた、Windowsフォームアプリケーションのプロジェクトファイルです。
以下よりサンプルプログラムをダウンロードして実行します。サンプルプログラムの実行ファイル(exeファイル)は、zip解凍後の bin フォルダに存在します。
ダウンロード
以下よりサンプルプログラムをダウンロードします。本サンプルコードはこちらの制御コマンドの例を .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);