目次

変換処理

 ボタン「send」をクリックした場合、FPGAの通信プロトコルに
 変換する必要があります。

 タイマー割込み処理で、指定パラメータまで数値を更新します。

 この2処理を考えます。

パラメータ生成

 通信の送信データフォーマットは、以下です。   'A'+{機体番号}+{チャネル番号}+{3桁の数字}+'\r'  コマンド'A'を、転送文字列の先頭に設定します。  機体番号は、数値増減コンポーネントnudNumberから  取得します。 number = nudNumber.Value ;  チャネル番号は、次の対応を利用します。  3桁の数字は、以下の各数値増減コンポーネントから取得。  now[0] = nudGrip.Value ; now[1] = nudWrist.Value ; now[2] = nudArm.Value ; now[3] = nudElbow.Value ; now[4] = nudWaist.Value ;

タイマー割込み処理

 割込み処理のシーケンスを考えます。
  1. フラグdflagがfalseなら終了
  2. 機体番号取得
  3. 全チャネルのパラメータ取得
  4. 目標値と現在値に差があれば、現在値を1増減
  5. パラメータ文字列作成
  6. 目標値と現在値に差があるパラメータを送信
  7. パラメータ表示
  8. 現在値内容更新
  9. パラメータ表示
 シーケンスをコードにします。 // get machine number number = nudNumber.Value; // judge if ( dflag == true ) { stmp = ""; for (loop = 0; loop < LAST; loop++) { // judge if (now[loop] == prev[loop]) continue; // update if (now[loop] > prev[loop]) { prev[loop]++; } else { prev[loop]--; } // generate command stmp = stmp + "A" + number.ToString(); stmp = stmp + loop.ToString() + prev[loop].ToString(); stmp = stmp + '\r'; } // send if (sciDTB.IsOpen) { sciDTB.Write(stmp); } // show edtText.Text = edtText.Text + stmp + '\n'; // count up differences cnt = 0; for (loop = 0; loop < LAST; loop++) { if (now[loop] != prev[loop]) { cnt++; } } // judge if (cnt == 0) { for (loop = 0; loop < LAST; loop++) { prev[loop] = now[loop]; } dflag = false; } }
目次

inserted by FC2 system