前回予告していたように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++:
- #include "MyGainer.h" //ヘッダのインクルード
- MyGainer *gainer;
- int main(int argc, char** argv)
- {
- //Gainerオブジェクト生成
- //ここではCOM3を指定
- gainer = new MyGainer(3);
- //初期化
- //(COMポートオープン、通信速度等設定)
- gainer->initialize();
- //コンフィギュレーションの設定(MODE1)
- gainer->setConfiguration(1);
- //キー値
- int key = 0;
- //ループ
- while(1)
- {
- //データ取得
- //(メッセージ送信 + データ受信 + 文字列→数値)
- gainer->getAllAnalogInput();
- //キー入力待ち(1msec)
- key = getKeyInput();
- //ESCキーが押されたら終了
- if(key == 0x1b)
- {
- break;
- }
- }
- //後処理(COMポート解放)
- gainer->release();
- delete gainer;
- return 0;
- }


Entries (RSS)