Ignore:
Timestamp:
Aug 23, 2017, 9:27:43 AM (7 years ago)
Author:
coas-nagasima
Message:

文字コードを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/webapp/webmrbc/src/main.rb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    1 # TOPPERSプロジェクト
     1# TOPPERSプロジェクト
    22$MAKER_CODE = "\x00\x00\xB3"
    33
    4 # ノードプロファイルオブジェクト
     4# ノードプロファイルオブジェクト
    55class LocalNode < ECNL::ENode
    66        def initialize(eojx3)
    7                 # 動作状æ
    8 ‹
     7                # 動作状態
    98                @operation_status = "\x30"
    10                 # Vï½
    11 ï½’sionæƒ
    12 å ±
     9                # Version情報
    1310                @version_information = "\x01\x0A\x01\x00"
    14                 # 識別番号
     11                # 識別番号
    1512                @identification_number =
    16                         # 下位通信層IDフィールド
     13                        # 下位通信層IDフィールド
    1714                        "\xFE" +
    18                         # メーカーコード
     15                        # メーカーコード
    1916                        $MAKER_CODE +
    20                         # ユニークID部(メーカー独自)
     17                        # ユニークID部(メーカー独自)
    2118                        "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
    22                 # 異常å†
    23 å®¹
     19                # 異常内容
    2420                @fault_content = "\x00\x00"
    25                 # メーカーコード
     21                # メーカーコード
    2622                @manufacturer_code = $MAKER_CODE
    2723
    28                 # インスタンス数
     24                # インスタンス数
    2925                @inst_count = "\x00\x00\x01"
    30                 # クラス数
     26                # クラス数
    3127                @class_count = "\x00\x02"
    32                 # インスタンスリスト
     28                # インスタンスリスト
    3329                @inst_list = "\x01\x05\xff\x01"
    34                 # クラスリスト
     30                # クラスリスト
    3531                @class_list = "\x01\x05\xff"
    36                 # アナウンスプロパティマップ
     32                # アナウンスプロパティマップ
    3733                @anno_prpmap = "\x01\xd5"
    38                 # SETプロパティマップ
     34                # SETプロパティマップ
    3935                @set_prpmap = "\x01\x80"
    40                 # GETプロパティマップ
     36                # GETプロパティマップ
    4137                @get_prpmap = "\x0c\x80\x82\x83\x89\x8a\x9d\x9e\x9f\xd3\xd4\xd6\xd7"
    42                 # プロパティ定義
     38                # プロパティ定義
    4339                eprpinib_table = [
    4440                        ECNL::EProperty.new(0x80, (ECNL::EPC_RULE_SET | ECNL::EPC_RULE_GET), @operation_status.length, :@operation_status, :onoff_prop_set, :data_prop_get),
     
    6056        end
    6157
    62         # 異常å†
    63 å®¹è¨­å®šé–¢æ•°
     58        # 異常内容設定関数
    6459        def node_profile_object_fault_content_set(prop, src)
    65                 # サイズが2以外は受け付けない
     60                # サイズが2以外は受け付けない
    6661                if (src.bytesize != 2) then
    6762                        return 0
     
    7671                if ((val >= 0x0) && (val <= 0x3ec)) then
    7772                        prop.set_exinf(val)
    78                         # TODO: このの場合の処理
    79                 # 上記以外は受け付けない
     73                        # TODO: このの場合の処理
     74                # 上記以外は受け付けない
    8075                else
    8176                        return 0
     
    8580        end
    8681
    87         # 動作状æ
    88 ‹ON/OFF設定関数(0x30, 0x31のみ受け付け)
     82        # 動作状態ON/OFF設定関数(0x30, 0x31のみ受け付け)
    8983        def onoff_prop_set(prop, src)
    9084                return 0
     
    9286end
    9387
    94 # コントローラークラス
     88# コントローラークラス
    9589class ControllerObj < ECNL::EObject
    9690        def initialize(eojx3, enod)
    97                 # 動作状æ
    98 ‹
     91                # 動作状態
    9992                @operation_status = "\x30"
    100                 # 設置場所
     93                # 設置場所
    10194                @installation_location = "\x01\x0A\x01\x00"
    102                 # 規格Vï½
    103 ï½’sionæƒ
    104 å ±
     95                # 規格Version情報
    10596                @standard_version_information = "\x00\x00C\x00"
    106                 # 異常発生状æ
    107 ‹
     97                # 異常発生状態
    10898                @fault_status = "\x41"
    109                 # メーカーコード
     99                # メーカーコード
    110100                @manufacturer_code = $MAKER_CODE
    111101
    112                 # アナウンスプロパティマップ
     102                # アナウンスプロパティマップ
    113103                @anno_prpmap = "\x03\x80\x81\x88"
    114                 # SETプロパティマップ
     104                # SETプロパティマップ
    115105                @set_prpmap = "\x04\x80\x81\x97\x98"
    116                 # GETプロパティマップ
     106                # GETプロパティマップ
    117107                @get_prpmap = "\x0a\x80\x81\x82\x88\x8a\x97\x98\x9d\x9e\x9f"
    118                 # プロパティ定義
     108                # プロパティ定義
    119109                eprpinib_table = [
    120110                        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),
     
    133123        end
    134124
    135         # 動作状æ
    136 ‹ON/OFF設定関数(0x30, 0x31のみ受け付け)
     125        # 動作状態ON/OFF設定関数(0x30, 0x31のみ受け付け)
    137126        def onoff_prop_set(prop, src)
    138                 # サイズが1以外は受け付けない
     127                # サイズが1以外は受け付けない
    139128                if (src.bytesize != 1) then
    140129                        return 0
     
    146135
    147136                case (src.getbyte(0))
    148                 # ONの場合
     137                # ONの場合
    149138                when 0x30 then
    150139                        prop.set_exinf(src)
    151                         # LEDの"."をON
     140                        # LEDの"."をON
    152141                        digitalWrite(1, 1)
    153                 # OFFの場合
     142                # OFFの場合
    154143                when 0x31 then
    155144                        prop.set_exinf(src)
    156                         # LEDの"."をOFF
     145                        # LEDの"."をOFF
    157146                        digitalWrite(1, 0)
    158                 # 0x30か0x31以外は受け付けない
     147                # 0x30か0x31以外は受け付けない
    159148                else
    160149                        return 0
     
    164153        end
    165154
    166         # 異常発生状æ
    167 ‹è¨­å®šé–¢æ•°ï¼ˆ0x41, 0x42のみ受け付け)
     155        # 異常発生状態設定関数(0x41, 0x42のみ受け付け)
    168156        def alarm_prop_set(prop, src)
    169                 # サイズが1以外は受け付けない
     157                # サイズが1以外は受け付けない
    170158                if (src.bytesize != 1) then
    171159                        return 0
     
    177165
    178166                case (src.getbyte(0))
    179                 # 異常発生あり/なしの場合
     167                # 異常発生あり/なしの場合
    180168                when 0x41,0x42 then
    181169                        prop.set_exinf(src)
    182                 # 0x41か0x42以外は受け付けない
     170                # 0x41か0x42以外は受け付けない
    183171                else
    184172                        return 0
     
    188176        end
    189177
    190         # 現在年月日取得関数
     178        # 現在年月日取得関数
    191179        def date_prop_get(prop, size)
    192                 # サイズが4以外は受け付けない
     180                # サイズが4以外は受け付けない
    193181                if (size != 4) then
    194182                        return 0
     
    200188        end
    201189
    202         # 現在年月日設定関数
     190        # 現在年月日設定関数
    203191        def date_prop_set(prop, src)
    204                 # サイズが4以外は受け付けない
     192                # サイズが4以外は受け付けない
    205193                if (src.bytesize != 4) then
    206194                        return 0
     
    216204        end
    217205
    218         # 現在時刻取得関数
     206        # 現在時刻取得関数
    219207        def time_prop_get(prop, size)
    220                 # サイズが2以外は受け付けない
     208                # サイズが2以外は受け付けない
    221209                if (size != 2) then
    222210                        return 0
     
    228216        end
    229217
    230         # 現在時刻設定関数
     218        # 現在時刻設定関数
    231219        def time_prop_set(prop, src)
    232                 # サイズが2以外は受け付けない
     220                # サイズが2以外は受け付けない
    233221                if (src.bytesize != 2) then
    234222                        return 0
     
    252240                super()
    253241
    254                 # LEDをOFF
     242                # LEDOFF
    255243                digitalWrite(2, 0)
    256244
     
    267255                until itr.is_eof do
    268256                        if itr.epc == 0xD6 then
    269                                 # LEDをON
     257                                # LEDON
    270258                                digitalWrite(2, 1)
    271259                        end
     
    285273
    286274        def snd_msg(ep, data)
    287                 # 通信レイヤーへ送信
     275                # 通信レイヤーへ送信
    288276                TargetBoard::snd_msg(ep, data)
    289277        end
     
    318306        end
    319307
    320         # 通信レイヤーアドレスの同じものを検索
     308        # 通信レイヤーアドレスの同じものを検索
    321309        def get_remote_id(ep)
    322310                id = ECNL::ENOD_REMOTE_ID - 1
     
    336324        end
    337325
    338         # 対応するリモートノードを検索
     326        # 対応するリモートノードを検索
    339327        def set_remote_addr(edata, ep)
    340328                id = ECNL::ENOD_REMOTE_ID - 1
     
    348336                        end
    349337
    350                         # 対応するリモートノードがあれば通信レイヤーアドレスを設定
     338                        # 対応するリモートノードがあれば通信レイヤーアドレスを設定
    351339                        @enodadrb_table[id - ECNL::ENOD_REMOTE_ID] = ep
    352340
     
    357345        end
    358346
    359         # 空き領域を探して自動登録
     347        # 空き領域を探して自動登録
    360348        def add_remote_addr(edata, ep)
    361349                id = ECNL::ENOD_REMOTE_ID - 1
     
    384372ctrl = Controller.new()
    385373
    386 # メインループ
     374# メインループ
    387375while (true) do
    388         # メッセージå¾
    389 ã¡
     376        # メッセージ待ち
    390377        ret = TargetBoard::wait_msg(ctrl.timer)
    391378        if !ret then
     
    393380        end
    394381
    395         # 経過時間の計算
     382        # 経過時間の計算
    396383        ctrl.progress ret[0]
    397384
    398         # 戻り値が2つなら
     385        # 戻り値が2つなら
    399386        if ret.length == 2 then
    400                 # å†
    401 éƒ¨ã‚¤ãƒ™ãƒ³ãƒˆ
     387                # 内部イベント
    402388                case (ret[1])
    403389                when 1 then
     
    406392                        ctrl.ntf_inl
    407393                end
    408         # 戻り値が3つなら
     394        # 戻り値が3つなら
    409395        elsif ret.length == 3 then
    410                 # 通信レイヤーからのメッセージ(通信端点と電文)
     396                # 通信レイヤーからのメッセージ(通信端点と電文)
    411397                ctrl.recv_msg(ret[1], ret[2])
    412398        end
    413399
    414         # タイムアウトの処理があれば行う
     400        # タイムアウトの処理があれば行う
    415401        ctrl.call_timeout
    416402end
Note: See TracChangeset for help on using the changeset viewer.