CCM(UECSの通信文)はUECSsetCCM関数で登録する.
UECSsetCCM(boolean sender, int num, char* name, char* type, char* unit, unsigned short priority, unsigned char decimal, signed char ccmlevel)
引数 | 説明 | 備考 |
---|---|---|
sender | true: 送信用のCCM false:受信用のCCM として登録 |
|
num | 他のUECSsetCCM関数で使用しない任意の正数.U_MAX_CCMで指定した値未満の数にする. 登録したCCMの値を参照する時には個々で登録した数値を利用する. |
|
name | const PROGMEM Char[]で指定した配列のポインターを記す.CCMの名前とする.人間が判断するために利用するため, CCM通信とは直接の関係はないが,p1.htmlのページで表示される. |
|
type | const PROGMEM Char[]で指定した配列のポインターを記す.CCMのtype属性とする.type属性についてはUECS通信実用規約を 参照のこと. |
|
unit | const PROGMEM Char[]で指定した配列のポインターを記す.UECSの通信の内,UDP16529ポートをりようしたCCMSCANの応答 時に表示されるほか,p1.htmlにブラウザでアクセスしたときにも表示される. |
|
priority | priority属性についてはUECS通信実用規約を参照のこと.senderがtrueの時はこのpriorityでCCMが送信される.falseの時は30にすることを推奨. | |
decimal | CCMの値が小数点以下何桁の情報であるかを表示.受信時はそれ以下の桁まであっても自動的にトリミングされる. | |
ccmlevel | 送受信レベルについては通信実用規約を参照のこと. -1から9の値を登録する.-1は登録前の状態を表している. 0: A_1S_0 1: A_1S_1 2: A_10S_0 3: A_10S_1 4: A_1M_0 5: A_1M_1 6: S_1S_0 7: S_1M_0 8: B_0 9: B_1 上記の内,8,9は本ミドルウェアでは未対応である(予約番号) Senderがtrueの場合 その他は正規の送信スケジュールで送信する. 末尾が_1となっているものは値変化時に送信することになっているが,本ミドルウェアの送受信マネージャーでは対応していない.UserEvery1Min関数内で ユーザーがコーディングして対応すること. Senderがfalseの場合 一定間隔以上の受信が途絶えると,正規に受信がされていないものと判断される. |
こんな場合 | 説明 | |
---|---|---|
送信側に登録したCCMの場合 | 通信文に値をセットする | もしUECSsetCCM関数で1で登録し,23.5をセットする場合. UserEvery1Min関数内で U_ccmList[1].value = 235; と記述する.ただしUECSsetCCM関数で登録する際にdecimal(第7引数)を1にセットしておく必要がある. |
定期送信が登録されているが, 送信を強制的にやめる. |
UserEvery1Min関数内で U_ccmList[1].flagStimeRfirst = false; と記述する.UserEvery1Min 関数終了後に送受信マネージャによって送信が行われる. |
|
受信側に登録したCCMの場合 | 通信文が定期的に受信できているかを 確認する. |
UECSsetCCM関数で1で登録してあるばあい. UserEvery1Min関数内で, boolean valid =U_ccmList[1].validity; と記述すると,時間内にCCMが受信できているかを確認できる.受信できていればtrue,できていなければ falseが代入される 有効時間はUECSsetCCM 関数で設定したccmlevelによってことなる A_1S_0 ,A_1S_1,S_1S_0が3秒 A_10S_0,A_10S_1が10秒 A_1M_0,A1M_Aが1分 |
受信した最新の値を得る | UserEvery1Min関数内で, signed long val = U_ccmList[1].value; で値が取得される. valが235であった場合.UECSsetCCM関数でdecimalを2にセットしてあった場合の値は 2.35となる. |
UECSsetCCM関数で登録すると,ccmList配列に登録される.ccmList配列はUECSCCM構造体の配列.
UECSCCM構造体の メンバー |
変数の型 | 説明 | 備考 |
---|---|---|---|
sender | boolean | 送信側登録: true 受信側登録: false |
|
name | const char * | 登録したCCMの名称(制御には無関与)を示す文字列配列のポインター | 文字列は const char PROGMEM = "XXXXXXXXXX"; のようにPROGMEM指定が必要 |
type | const char * | UECSの通信規約のtype属性を示す文字列配列のポインター | |
unit | const char * | 単位を示す文字列配列のポインター | |
decimal | unsigned char | 小数点以下の桁数 | valueが456でdecimalが2の時は送信マネージャーは 4.56で値を送信する. |
ccmLevel | signed char | UECSの通信規約で定められた通信レベル. | |
validmillis | singed long | 送信側登録:未使用 受信側登録:UECSの通信規約で定められた通信レベルのインターバルを格納. 1秒間隔で送信されるものを登録した場合は3000が 10秒間隔の場合は30000が 1分間隔の場合は180000 が格納される. |
|
attribute | signed short[4] | attribute[0] はCCMのroom attribute[1]はregion attribute[2]はorder attribute[3]はpriorityに対応. |
送信側登録:baseAttribute[0]〜[2],attribute[3]を使ってCCMを作成する. 受信側登録:baseAttributeにはノードに設定されたroom,region,orderの属性値が入り, attributeには,実際に受信したCCMのうち,登録したCCMにとって優先順位の高いCCM の属性値が入る. この部分は複雑なので詳細は通信実用規約を参照のこと |
baseAttribute | signed short[3] | baseAttribute[0] はCCMのroom baseAttribute[1]はregion baseAttribute[2]はorder |
|
value | signed long | 送信側登録: 送信値(この値とdecimal値で実送信値は決まる) 受信側登録: 受信値(この値とdecimal値で実受信値は決まる) |
|
validity | boolean | 送信側登録: 未使用 受信側登録: 登録したCCMが時間内に取得できているかを示す |
|
recmillis | signed long | 送信側登録: 未使用 受信側登録: 最新の受信時間 |
|
address | IPAddress | 送信側登録: 送信アドレス(初期値は255.255.255.255) 受信側登録: CCM受信元のアドレス. |
|
flagStimeRfirst | boolean | 送信側登録: trueにすると,CCMが送信される. 受信側登録: 始めて受信するとtrueにセットされる. |