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

マニュアル > カスタマイズガイド > アラーム > # アラーム発生時に警報音を鳴らす |

概要

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

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

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

カスタマイズ例

１）アラームマスタの設定

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

アラームＩＤ,発生復帰,確認,発生条件,コメント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

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

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

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

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

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

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

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

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

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

Fileプロパティ

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

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

RepeatCountプロパティ ・・・ -1

RepeatWaitTime ・・・ 0

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

３）警報音を鳴らすスクリプトの実装

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

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

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

４）警報音を停止するスクリプトの実装（ボタンなど）

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

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

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

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

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