前回予告していたようにC++でGainerを扱うために行った処理を簡単に書いてみます.
もしかしたら,間違っていたり,こうした方が良い点などがあるかもしれないので,ご指摘お願いします.

ということで,今のところ最低限用意しているメソッドはこんな感じ.

(1)Gainer初期化
通信速度,パリティ等の設定(こちらを参考)

(2)リセットメッセージ送信
Gainerモジュールに文字列「Q*」 を送信.
(送信に成功したらGainer側からメッセージが送られるので受け取る)

(3)コンフィギュレーションの設定
Gainerモジュールに文字列「KONFIGURATION_1*」を送信.
(送信に成功したらGainer側からメッセージが送られるので受け取る)

(4)データの取得
Gainerモジュールに文字列「I*」を送信.
送信に成功したら,アナログ入力ain0~ain3のデータが文字列として
送られてくるので,その文字列を受信.

(5)文字列→数値変換
受信したアナログ入力のデータは,「Ixx…xx*」(※xx…xxがデータ部)
という構成の文字列なので,まずは入力分だけ文字列を分割.
また,値は16進なので10進に変換して利用.

(6)後処理
ポートのクローズ処理.

************************
あと,「プログラム風」に書くとこんな感じです.
※前回の記事ではこれらの処理に移動平均法の処理も加えています.

C++:
  1. #include "MyGainer.h"   //ヘッダのインクルード
  2. MyGainer *gainer;
  3.  
  4. int main(int argc, char** argv)
  5. {
  6.     //Gainerオブジェクト生成
  7.     //ここではCOM3を指定
  8.     gainer = new MyGainer(3);
  9.  
  10.     //初期化
  11.     //(COMポートオープン、通信速度等設定)
  12.     gainer->initialize();
  13.  
  14.     //コンフィギュレーションの設定(MODE1)
  15.     gainer->setConfiguration(1);
  16.  
  17.     //キー値
  18.     int key = 0;
  19.  
  20.     //ループ
  21.     while(1)
  22.     {
  23.         //データ取得
  24.         //(メッセージ送信 + データ受信 + 文字列→数値)
  25.         gainer->getAllAnalogInput();
  26.  
  27.         //キー入力待ち(1msec)
  28.         key = getKeyInput();
  29.  
  30.         //ESCキーが押されたら終了
  31.         if(key == 0x1b)
  32.         {
  33.             break;
  34.         }
  35.     }
  36.  
  37.     //後処理(COMポート解放)
  38.     gainer->release();
  39.     delete gainer;
  40.  
  41.     return 0;
  42. }

One Response to “Gainer with C++ vol.1”
  1. dandelion's log » Gainer with C++ vol.2 says:

    [...] Gainer with C++ vol.1で自作したライブラリを引っ張り出してみる. [...]


Leave a Reply