UECSノード開発用ミドルウェア(UARDECS Ver0.1)使用方法 その2

Writen by Ken-ichiro Yasuba

since 2013. 4. 17.

ArduinoIDEの立ち上げとスケッチ作成

 UARDECS01フォルダをコピー後,arduino-1.0.4-windowsフォルダ内のarduino-1.0.4フォルダ内にあるarduino.exeをダブルクリックして立ち上げる.立ち上げ後<ツール>タブ内の<マイコンボード>タブでArduino Ethernetを選択する.


図−2 マイコンボードとしてArduino Ethernetを選択する.

(1)下記のライブラリーをスケッチにインクルードする必要がある.
#include <SPI.h>
#include <Ethernet.h>
#include <avr/pgmspace.h>
#include <avr/wdt.h>
#include <CCM.h>
#include <EEPROM.h>
#include <EthernetManager.h>

(2)下記の変数はユーザが初期化する必要がある.

変数の型 変数名 説明 設定例
const byte U_InitPin ネットワークアドレスの初期化ピン※1の番号
const char PROGMEM U_name[ ] 機器の名称(例えば”Temp controller”).半角英数字で20文字以内.UECSの通信文でも利用する.
const char PROGMEM U_vender[ ] 機器の開発者(例えば”XXX co.”).半角英数字で20文字以内.UECSの通信文でも利用する.
const char PROGMEM U_uecsid[ ] UECS研究会が発行するID番号で16進数の8桁の数字.半角英数字で20文字以内.UECSの通信文でも利用する.
仮には”00000000”で設定してください(ただし自己責任でお願いします).
const char PROGMEM U_footnote[ ] ノードのhttpサーバにアクセスしたときのトップページの脚注に表示する文字列.
const int U_footnoteLetterNumber 上記U_footnoteの文字の数(半角で数える).
char 型の配列(数は20で固定) U_nodename ノードのhttpサーバが提供するノードの名称(例えばROOM1_Controller).半角英数字で20文字以内.
UECSの通信文では使用しない.ノードのhttpサーバーを利用して値は変更可能で,ノードを起動するとノードに
搭載されている不揮発性メモリーから文字列がこの変数に転送される.
const int U_MAX_CCM ノードの送受信マネージャーに登録するCCM(UECSの通信文の数).
const int U_HtmlLine ノードのhttpサーバで提供される,ユーザーが任意設定できるWEBページの項目数.
UECSCCM構造体の配列 U_ccmList[U_MAX_CCM] 宣言のみで良い.この配列は他のノードから受信した値や,他のノードの送信する値を格納しており.送受信マネージャ
送受信のタイミングは管理される.
UECSOriginalAttribute構造体 U_orgAttribute 宣言のみで良いが,後ほどmacアドレスのみ設定をおこなう.

(3)下記の関数内にユーザーがコードを記述する必要がある.

関数名 詳細
void UserInit() コンピュータボードの初期化後,ネットワーク設定を読み込んだ後,自動的に呼び出される.
この関数内では
1)macアドレスの設定
2)CCMのユーザー登録

が必須項目となる.
void setSendP1Page() p1.htmlページではノードに対して各種の値を設定できる.各種の値を設定し不揮発性メモリに
値を保存後,ページの再描画を行う前にこの関数が呼び出される.
void UserEvery1min() この関数は1秒毎に呼び出される.送受信マネージャーは1秒毎に受信した通信文の鮮度管理(最後に受信してから
一定の時間を経過し新たに受信できていないばあいにエラー状態とする)と定期送信するCCMの送信フラグをtrueにセットするがその後に
この関数が呼び出される.

この関数ではCCMの登録時に送信に設定してある場合の送信フラグをチェックすることが可能で,送信フラグをtrueにセットしておくと
この関数の終了後に自動的に通信文が送信される.(falseにすると送信されない)

例)ccmList[0]->flagstimeRfirst = true;

これで強制的に送信設定される.

この関数終了後に16520番ポートに通信文が送信される.
void UserEveryLoop() システムのタイマカウント,httpサーバーの処理,UDP16520番ポートと16529番ポートの通信文をチェックした後,呼び出さされる関数.
呼び出される頻度が高いため,重い処理を記述しないこと.
void loop() この関数内ではUECSloop()関数を呼び出さなくてはならない.必要に応じて処理を記述してもかまわない.
void setup() この関数内ではUECSsetup()関数を呼び出さなくてはならない.必要に応じて処理を記述してもかまわない.

最初へ 前のページへ 次のページへ