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

本文介绍了一种用于生成电力需求控制报警通知测试消息的方法。该方法通过定义特定的协议类型及消息结构来确保消息的有效性和准确性。文章详细列举了消息格式的各项参数,并通过编程方式实现了不同类型控制和报警状态的消息生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
 
资源下载链接为: https://pan.quark.cn/s/9648a1f24758 这个HTML文件是一个专门设计的网页,适合在告白或纪念这样的特殊时刻送给女朋友,给她带来惊喜。它通过HTML技术,将普通文字转化为富有情感和创意的表达方式,让数字媒体也能传递深情。HTML(HyperText Markup Language)是构建网页的基础语言,通过标签描述网页结构和内容,让浏览器正确展示页面。在这个特效网页中,开发者可能使用了HTML5的新特性,比如音频、视频、Canvas画布或WebGL图形,来提升视觉效果和交互体验。 原本这个文件可能是基于ASP.NET技术构建的,其扩展名是“.aspx”。ASP.NET是微软开发的一个服务器端Web应用程序框架,支持多种编程语言(如C#或VB.NET)来编写动态网页。但为了在本地直接运行,不依赖服务器,开发者将其转换为纯静态的HTML格式,只需浏览器即可打开查看。 在使用这个HTML特效页时,建议使用Internet Explorer(IE)浏览器,因为一些老的或特定的网页特效可能只在IE上表现正常,尤其是那些依赖ActiveX控件或IE特有功能的页面。不过,由于IE逐渐被淘汰,现代网页可能不再对其进行优化,因此在其他现代浏览器上运行可能会出现问题。 压缩包内的文件“yangyisen0713-7561403-biaobai(html版本)_1598430618”是经过压缩的HTML文件,可能包含图片、CSS样式表和JavaScript脚本等资源。用户需要先解压,然后在浏览器中打开HTML文件,就能看到预设的告白或纪念特效。 这个项目展示了HTML作为动态和互动内容载体的强大能力,也提醒我们,尽管技术在进步,但有时复古的方式(如使用IE浏览器)仍能唤起怀旧之情。在准备类似的个性化礼物时,掌握基本的HTML和网页作技巧非常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值