アラーム発生時に警報音を鳴らす

<< Click to Display Table of Contents >>

マニュアル > 機能別リファレンス > アラーム > アラームのカスタマイズ >

アラーム発生時に警報音を鳴らす

概要

FA-Panelには、サウンドを鳴らすための部品として「サウンドコントロール」が用意されています。サウンドコントロールでは、Fileプロパティにサウンドファイル(.wavファイル)を指定して、サウンドを再生することができます。

 

また、アラームコントロール(リモートアラームクライアント、リモートアラームグリッド)では、アラームの発生、復帰などのイベントを、OnAlarmNotificationイベントで受け取ることができます。クライアント側でスクリプトを記述して、このイベントでアラームの発生を受け取り、サウンドコントロールのPlayメソッドを呼び出してサウンドを再生することで、アラーム発生時に警報音を鳴らすことができます。

 

 

hint

警報音を鳴らすためには、フォーム上に設置されたサウンドコントロールのオブジェクトが存在している必要があります。どのフォームを表示している状態でも警報音を鳴らすために、サウンドコントロールをバックグラウンドフォームに張り付けて動作させる方法が有効です。バックグラウンドフォームに関する詳細は、「バックグラウンドフォーム」を参照してください。

 

 

カスタマイズ例

1)アラームマスタの設定

 

この例では、アラームマスタのCM1列に、警報レベルを設定しています。

 

アラームID,発生復帰,確認,発生条件,コメント0,コメント1

[ALARMID],[RECOVER],[ACK],[ONCONDITION],[CM0],[CM1]

0,y,n,U01.F01.M0000,M0が異常です。,1

1,y,n,U01.F01.M0001,M1が異常です。,1

2,y,n,U01.F01.M0002,M2が異常です。,1

3,y,n,U01.F01.M0003,M3が異常です。,1

4,y,n,U01.F01.M0004,M4が異常です。,2

5,y,n,U01.F01.M0005,M5が異常です。,2

6,y,n,U01.F01.M0006,M6が異常です。,2

7,y,n,U01.F01.M0007,M7が異常です。,2

 

以降の手順により、警報レベルに応じて別々のサウンドを鳴らす仕組みを構築します。

 

 

2)バックグラウンドフォームにリモートアラームクライアントとサウンドコントロールを張り付ける

 

どのフォームが表示されている状態でも常にアラームの状態を監視するために、バックグラウンドフォームを利用します。

 

バックグラウンドフォームとして動作させるフォームに、リモートアラームクライアントコントロールとサウンドコントロールを貼り付けます。サウンドコントロールは警報レベル1、レベル2それぞれの警報音用に2つ貼り付けておきます。バックグラウンドフォームが常駐することにより、リモートアラームクライアントおよびサウンドコントロールを常に動作させておくことができます。

 

 

p_alarm_0004

 

 

リモートアラームクライアントの初期化処理を記述します。

ここでは、OnLoginイベントに記述します。

 

リモートアラームクライアントの初期化スクリプト例)

event OnLogin(login,level)
{
	if(login == F) {
		return;
	}
	this.Connect();
	this.SubscribeSummary("");
}

 

また、各サウンドコントロールのプロパティに、以下のように設定しておきます。

 

p_alarm_0005

 

Fileプロパティ

アラームサウンド1用のサウンドコントロール ・・・ sys:alarm1.wav

アラームサウンド1用のサウンドコントロール ・・・ sys:alarm2.wav

 

RepeatCountプロパティ ・・・ -1

RepeatWaitTime ・・・ 0

 

 

hint

上の「sys:alarm1.wav」「sys:alarm2.wav」のように、sys:を指定することで、FA-Panelにあらかじめ登録されているサウンドファイルを使用することができます。

 

 

3)警報音を鳴らすスクリプトの実装

 

リモートアラームクライアントのOnAlarmNotificationイベントでアラームを検知し、検知したアラームのコメント1の内容(アラームレベル)を判別して、対象のアラーム音を鳴動させます。

 

リモートアラームクライアントのスクリプト例)

event OnAlarmNotification(Type,Date,AlarmId,bRecovered,bAcked,Comments,bBrandNew)
{
	if(Type == "new"){
		switch(Comments[1]){
			case 1:
				parent.AlarmSound2.Stop();
				parent.AlarmSound1.Play();
				break;
			case 2:
				parent.AlarmSound1.Stop();
				parent.AlarmSound2.Play();
				break;
		}
	}
}

 

 

4)警報音を停止するスクリプトの実装(ボタンなど)

 

任意のフォーム上にボタンを張り付け、警報音を停止するっ処理を実装します。

 

警報音停止ボタンのスクリプト例)

event OnMouseUp(button)
{
	::HiddenForm.AlarmSound1.Stop();
	::HiddenForm.AlarmSound2.Stop();
}

 

※この例では、バックグラウンドフォームのフォーム名を「HiddenForm」として記述しています。

 

 

hint

フレームライブラリの標準フレームワークでは、本項で紹介されている手法で警報音の鳴動処理(アラームサウンド処理)が実装されています。