July 4th Wednesday (七月 四日 水曜日)

来源:互联网 发布:上瘾网络剧未删减 编辑:程序博客网 时间:2024/05/05 00:09
I have written another tool to make another kind of test messages -- control.

import sys

templet = [ '// メッセージID:########   機能名:電力デマンド制御スキップ 警報 通知',
'// 種別:ブロードキャスト     プロトコルタイプ:###########',
'//',
'//********** ヘッダ部 **********',
'0000:F2  //種別',
'0001:03  //プロトコルタイプ',
'0002:00  //メッセージレングス',
'0003:49  //',
'0004:07  //プライオリティ',
'0005:00  //エラーコード',
'0006:00  //インボークドID',
'0007:00  //',
'0008:00  //2*SEG+MOR',
'0009:00  //シーケンシャルNo(セグメント連番)',
'0010:00  //RFU',
'0011:00  //RFU',
'0012:00  //RFU',
'0013:00  //RFU',
'0014:00  //RFU',
'0015:00  //RFU',
'//',
'//********** 構造定義部 **********',
'0016:32  //通知サービス',
'0017:00  //RFU',
'0018:00  //オブジェクトクラス名称',
'0019:02  // ',
'0020:00  //時',
'0021:11  //分',
'0022:12  //秒',
'0023:13  //1/100秒',
'0024:00  //通知オブジェクト個数',
'0025:01  //',
'0026:07  //通知元モジュールNo    DATABASE',
'0027:D1  //',
'//',
'//********** 通知属性指定構造 **********',
'0028:08  //通知属性値個数',
'0029:00  //RFU',
'0030:00  //etyp(1)',
'0031:01  //',
'0032:00  //keyp(2)',
'0033:02  //',
'0034:00  //ctyp(3)',
'0035:03  //',
'0036:00  //prno(4)',
'0037:04  //',
'0038:00  //altp(5)',
'0039:05  //',
'0040:00  //alst(6)',
'0041:06  //',
'0042:00  //cval(7)',
'0043:07  //',
'0044:00  //chtm(8)',
'0045:08  //',
'0046:00  //RFU',
'0047:00  //RFU',
'//',
'//********** 通知属性値構造 **********',
'0046:08  //通知属性個数',
'0047:01  //タイプ',
'0048:01  //イベントタイプ ',
'0049:02  //タイプ',
'0050:23  //モジュール',
'0051:2a  //2a',
'0052:01  //タイプ',
'0053:05  //制御種別',
'0054:01  //タイプ',
'0055:02  //制御プログラムNo',
'0056:01  //タイプ',
'0057:03  //警報種別',
'0058:01  //タイプ',
'0059:01  //アラームステータス',
'0060:05  //タイプ',
'0061:03  //小数点位置1',
'0062:11  //制御値1',
'0063:11  // ',
'//0064:05  //タイプ',
'//0065:02  //小数点位置2',
'//0066:22  //制御値2',
'//0067:22  //',
'0068:02  //タイプ',
'0069:00  //イベント発生時刻使用しない',
'0070:00  //',
'//']


#main
if __name__ == '__main__':
    txts = []
    cntl_types = [1, 2, 3, 4, 5, 7, 8, 9, 10, 15, 16, 17]
    base_dir = './制御型/'
    file_name = 'CTL_Case'

    ev_str=''
    ctl_str=''
    alm_kind_str=''
    alm_stat_str=''
   
    # event types
    ci = 1
    for ev in range(1, 4):
        ev_str = '0048:0'+str(ev) +' //イベントタイプ '
        # cntl
        for ctl in cntl_types:
            if ctl < 10: # 1 ~ 9
                ctl_str = '0053:0'+str(ctl)+' //制御種別'
            elif ctl <=15: # 10 ~ 15
                h = hex(ctl)
                ctl_str = '0053:0'+ h[-1] +' //制御種別'
            else: # 16 ~
                h = hex(ctl)
                ctl_str = '0053:'+ h[-2:] +' //制御種別'
            # alm_kind
            if ctl == 8 or ctl == 15:
                for alm_kind in range(1, 8):
                    alm_kind_str = '0057:0'+str(alm_kind)+' //警報種別'
                    # alm_stat
                    for alm_stat in range(0, 2):
                        alm_stat_str = '0059:0' + str(alm_stat) + ' //アラームステータス'
                        st_name = '_Evttyp_' + str(ev) + '_Almsta_' + str(alm_stat) + '_Ctltyp_' + str(ctl) + '_Almkind_' + str(alm_kind)
                        fname = base_dir + '/' + file_name + str(ci) + st_name + '.txt'
                        txts.append([fname, ev_str, ctl_str, alm_kind_str, alm_stat_str])
                        ci = ci + 1
            else:
                alm_kind_str = '0057:0'+str(1)+' //警報種別'
                # alm_stat
                for alm_stat in range(0, 2):
                    alm_stat_str = '0059:0' + str(alm_stat) + ' //アラームステータス'
                    st_name = '_Evttyp_' + str(ev) + '_Almsta_' + str(alm_stat) + '_Ctltyp_' + str(ctl) + '_Almkind_' + str(1)
                    fname = base_dir + '/' + file_name + str(ci) + st_name + '.txt'
                    txts.append([fname, ev_str, ctl_str, alm_kind_str, alm_stat_str])
                    ci = ci + 1
    i = 0
    for t in txts:
        f = open(t[0], 'w')
        for ln in templet:
            row_no = ln[:4]  # get a row no.
            # event types
            if row_no == '0048':
                f.write(t[1] + '/r/n')
            elif row_no == '0053':
                f.write(t[2] + '/r/n')
            elif row_no == '0057':
                f.write(t[3] + '/r/n')
            elif row_no == '0059':
                f.write(t[4] + '/r/n')
            else:
                f.write(ln+'/r/n')
        f.close()
        i = i + 1