Changeset 321 for EcnlProtoTool/trunk/webapp/webmrbc/src
- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/webapp/webmrbc/src/main.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r270 r321 1 # TOPPERS ããã¸ã§ã¯ã1 # TOPPERSプロジェクト 2 2 $MAKER_CODE = "\x00\x00\xB3" 3 3 4 # ãã¼ããããã¡ã¤ã«ãªãã¸ã§ã¯ã4 # ノードプロファイルオブジェクト 5 5 class LocalNode < ECNL::ENode 6 6 def initialize(eojx3) 7 # åä½ç¶æ 8 7 # 動作状態 9 8 @operation_status = "\x30" 10 # ï¼¶ï½ 11 ï½ï½ï½ï½ï½æ 12 å ± 9 # Version情報 13 10 @version_information = "\x01\x0A\x01\x00" 14 # èå¥çªå·11 # 識別番号 15 12 @identification_number = 16 # ä¸ä½é信層IDãã£ã¼ã«ã13 # 下位通信層IDフィールド 17 14 "\xFE" + 18 # ã¡ã¼ã«ã¼ã³ã¼ã15 # メーカーコード 19 16 $MAKER_CODE + 20 # ã¦ãã¼ã¯IDé¨(ã¡ã¼ã«ã¼ç¬èª)17 # ユニークID部(メーカー独自) 21 18 "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" 22 # ç°å¸¸å 23 容 19 # 異常内容 24 20 @fault_content = "\x00\x00" 25 # ã¡ã¼ã«ã¼ã³ã¼ã21 # メーカーコード 26 22 @manufacturer_code = $MAKER_CODE 27 23 28 # ã¤ã³ã¹ã¿ã³ã¹æ°24 # インスタンス数 29 25 @inst_count = "\x00\x00\x01" 30 # ã¯ã©ã¹æ°26 # クラス数 31 27 @class_count = "\x00\x02" 32 # ã¤ã³ã¹ã¿ã³ã¹ãªã¹ã28 # インスタンスリスト 33 29 @inst_list = "\x01\x05\xff\x01" 34 # ã¯ã©ã¹ãªã¹ã30 # クラスリスト 35 31 @class_list = "\x01\x05\xff" 36 # ã¢ãã¦ã³ã¹ããããã£ããã32 # アナウンスプロパティマップ 37 33 @anno_prpmap = "\x01\xd5" 38 # SET ããããã£ããã34 # SETプロパティマップ 39 35 @set_prpmap = "\x01\x80" 40 # GET ããããã£ããã36 # GETプロパティマップ 41 37 @get_prpmap = "\x0c\x80\x82\x83\x89\x8a\x9d\x9e\x9f\xd3\xd4\xd6\xd7" 42 # ããããã£å®ç¾©38 # プロパティ定義 43 39 eprpinib_table = [ 44 40 ECNL::EProperty.new(0x80, (ECNL::EPC_RULE_SET | ECNL::EPC_RULE_GET), @operation_status.length, :@operation_status, :onoff_prop_set, :data_prop_get), … … 60 56 end 61 57 62 # ç°å¸¸å 63 容è¨å®é¢æ° 58 # 異常内容設定関数 64 59 def node_profile_object_fault_content_set(prop, src) 65 # ãµã¤ãºã2以å¤ã¯åãä»ããªã60 # サイズが2以外は受け付けない 66 61 if (src.bytesize != 2) then 67 62 return 0 … … 76 71 if ((val >= 0x0) && (val <= 0x3ec)) then 77 72 prop.set_exinf(val) 78 # TODO: ãã®ã®å ´åã®å¦ç79 # ä¸è¨ä»¥å¤ã¯åãä»ããªã73 # TODO: このの場合の処理 74 # 上記以外は受け付けない 80 75 else 81 76 return 0 … … 85 80 end 86 81 87 # åä½ç¶æ 88 ON/OFFè¨å®é¢æ°ï¼0x30, 0x31ã®ã¿åãä»ãï¼ 82 # 動作状態ON/OFF設定関数(0x30, 0x31のみ受け付け) 89 83 def onoff_prop_set(prop, src) 90 84 return 0 … … 92 86 end 93 87 94 # ã³ã³ããã¼ã©ã¼ã¯ã©ã¹88 # コントローラークラス 95 89 class ControllerObj < ECNL::EObject 96 90 def initialize(eojx3, enod) 97 # åä½ç¶æ 98 91 # 動作状態 99 92 @operation_status = "\x30" 100 # è¨ç½®å ´æ93 # 設置場所 101 94 @installation_location = "\x01\x0A\x01\x00" 102 # è¦æ ¼ï¼¶ï½ 103 ï½ï½ï½ï½ï½æ 104 å ± 95 # 規格Version情報 105 96 @standard_version_information = "\x00\x00C\x00" 106 # ç°å¸¸çºçç¶æ 107 97 # 異常発生状態 108 98 @fault_status = "\x41" 109 # ã¡ã¼ã«ã¼ã³ã¼ã99 # メーカーコード 110 100 @manufacturer_code = $MAKER_CODE 111 101 112 # ã¢ãã¦ã³ã¹ããããã£ããã102 # アナウンスプロパティマップ 113 103 @anno_prpmap = "\x03\x80\x81\x88" 114 # SET ããããã£ããã104 # SETプロパティマップ 115 105 @set_prpmap = "\x04\x80\x81\x97\x98" 116 # GET ããããã£ããã106 # GETプロパティマップ 117 107 @get_prpmap = "\x0a\x80\x81\x82\x88\x8a\x97\x98\x9d\x9e\x9f" 118 # ããããã£å®ç¾©108 # プロパティ定義 119 109 eprpinib_table = [ 120 110 ECNL::EProperty.new(0x80, (ECNL::EPC_RULE_SET | ECNL::EPC_RULE_GET | ECNL::EPC_ANNOUNCE), @operation_status.length, :@operation_status, :onoff_prop_set, :data_prop_get), … … 133 123 end 134 124 135 # åä½ç¶æ 136 ON/OFFè¨å®é¢æ°ï¼0x30, 0x31ã®ã¿åãä»ãï¼ 125 # 動作状態ON/OFF設定関数(0x30, 0x31のみ受け付け) 137 126 def onoff_prop_set(prop, src) 138 # ãµã¤ãºãï¼ä»¥å¤ã¯åãä»ããªã127 # サイズが1以外は受け付けない 139 128 if (src.bytesize != 1) then 140 129 return 0 … … 146 135 147 136 case (src.getbyte(0)) 148 # ON ã®å ´å137 # ONの場合 149 138 when 0x30 then 150 139 prop.set_exinf(src) 151 # LED ã®"."ãON140 # LEDの"."をON 152 141 digitalWrite(1, 1) 153 # OFF ã®å ´å142 # OFFの場合 154 143 when 0x31 then 155 144 prop.set_exinf(src) 156 # LED ã®"."ãOFF145 # LEDの"."をOFF 157 146 digitalWrite(1, 0) 158 # 0x30 ã0x31以å¤ã¯åãä»ããªã147 # 0x30か0x31以外は受け付けない 159 148 else 160 149 return 0 … … 164 153 end 165 154 166 # ç°å¸¸çºçç¶æ 167 è¨å®é¢æ°ï¼0x41, 0x42ã®ã¿åãä»ãï¼ 155 # 異常発生状態設定関数(0x41, 0x42のみ受け付け) 168 156 def alarm_prop_set(prop, src) 169 # ãµã¤ãºãï¼ä»¥å¤ã¯åãä»ããªã157 # サイズが1以外は受け付けない 170 158 if (src.bytesize != 1) then 171 159 return 0 … … 177 165 178 166 case (src.getbyte(0)) 179 # ç°å¸¸çºçãã/ãªãã®å ´å167 # 異常発生あり/なしの場合 180 168 when 0x41,0x42 then 181 169 prop.set_exinf(src) 182 # 0x41 ã0x42以å¤ã¯åãä»ããªã170 # 0x41か0x42以外は受け付けない 183 171 else 184 172 return 0 … … 188 176 end 189 177 190 # ç¾å¨å¹´ææ¥åå¾é¢æ°178 # 現在年月日取得関数 191 179 def date_prop_get(prop, size) 192 # ãµã¤ãºãï¼ä»¥å¤ã¯åãä»ããªã180 # サイズが4以外は受け付けない 193 181 if (size != 4) then 194 182 return 0 … … 200 188 end 201 189 202 # ç¾å¨å¹´ææ¥è¨å®é¢æ°190 # 現在年月日設定関数 203 191 def date_prop_set(prop, src) 204 # ãµã¤ãºãï¼ä»¥å¤ã¯åãä»ããªã192 # サイズが4以外は受け付けない 205 193 if (src.bytesize != 4) then 206 194 return 0 … … 216 204 end 217 205 218 # ç¾å¨æå»åå¾é¢æ°206 # 現在時刻取得関数 219 207 def time_prop_get(prop, size) 220 # ãµã¤ãºãï¼ä»¥å¤ã¯åãä»ããªã208 # サイズが2以外は受け付けない 221 209 if (size != 2) then 222 210 return 0 … … 228 216 end 229 217 230 # ç¾å¨æå»è¨å®é¢æ°218 # 現在時刻設定関数 231 219 def time_prop_set(prop, src) 232 # ãµã¤ãºãï¼ä»¥å¤ã¯åãä»ããªã220 # サイズが2以外は受け付けない 233 221 if (src.bytesize != 2) then 234 222 return 0 … … 252 240 super() 253 241 254 # LED ãOFF242 # LEDをOFF 255 243 digitalWrite(2, 0) 256 244 … … 267 255 until itr.is_eof do 268 256 if itr.epc == 0xD6 then 269 # LED ãON257 # LEDをON 270 258 digitalWrite(2, 1) 271 259 end … … 285 273 286 274 def snd_msg(ep, data) 287 # éä¿¡ã¬ã¤ã¤ã¼ã¸éä¿¡275 # 通信レイヤーへ送信 288 276 TargetBoard::snd_msg(ep, data) 289 277 end … … 318 306 end 319 307 320 # éä¿¡ã¬ã¤ã¤ã¼ã¢ãã¬ã¹ã®åããã®ãæ¤ç´¢308 # 通信レイヤーアドレスの同じものを検索 321 309 def get_remote_id(ep) 322 310 id = ECNL::ENOD_REMOTE_ID - 1 … … 336 324 end 337 325 338 # 対å¿ãããªã¢ã¼ããã¼ããæ¤ç´¢326 # 対応するリモートノードを検索 339 327 def set_remote_addr(edata, ep) 340 328 id = ECNL::ENOD_REMOTE_ID - 1 … … 348 336 end 349 337 350 # 対å¿ãããªã¢ã¼ããã¼ããããã°éä¿¡ã¬ã¤ã¤ã¼ã¢ãã¬ã¹ãè¨å®338 # 対応するリモートノードがあれば通信レイヤーアドレスを設定 351 339 @enodadrb_table[id - ECNL::ENOD_REMOTE_ID] = ep 352 340 … … 357 345 end 358 346 359 # 空ãé åãæ¢ãã¦èªåç»é²347 # 空き領域を探して自動登録 360 348 def add_remote_addr(edata, ep) 361 349 id = ECNL::ENOD_REMOTE_ID - 1 … … 384 372 ctrl = Controller.new() 385 373 386 # ã¡ã¤ã³ã«ã¼ã374 # メインループ 387 375 while (true) do 388 # ã¡ãã»ã¼ã¸å¾ 389 ã¡ 376 # メッセージ待ち 390 377 ret = TargetBoard::wait_msg(ctrl.timer) 391 378 if !ret then … … 393 380 end 394 381 395 # çµéæéã®è¨ç®382 # 経過時間の計算 396 383 ctrl.progress ret[0] 397 384 398 # æ»ãå¤ãï¼ã¤ãªã385 # 戻り値が2つなら 399 386 if ret.length == 2 then 400 # å 401 é¨ã¤ãã³ã 387 # 内部イベント 402 388 case (ret[1]) 403 389 when 1 then … … 406 392 ctrl.ntf_inl 407 393 end 408 # æ»ãå¤ãï¼ã¤ãªã394 # 戻り値が3つなら 409 395 elsif ret.length == 3 then 410 # éä¿¡ã¬ã¤ã¤ã¼ããã®ã¡ãã»ã¼ã¸ï¼é信端ç¹ã¨é»æï¼396 # 通信レイヤーからのメッセージ(通信端点と電文) 411 397 ctrl.recv_msg(ret[1], ret[2]) 412 398 end 413 399 414 # ã¿ã¤ã ã¢ã¦ãã®å¦çãããã°è¡ã400 # タイムアウトの処理があれば行う 415 401 ctrl.call_timeout 416 402 end -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.