イベント記述時のポイント


DAQ-DNCでは各コンポーネント毎に様々なイベントを用意しております。

例) エラー発生時:OnErrorイベント、入力タスク実行:OnTaskInputイベント

 

イベント発生時にお客様の独自コードを記述いただくことで、より自由度の高いアプリを作成頂くことが可能です。

DncDaqのエラーイベントが発生した際に、ラベルにエラー情報を記述する例を以下に示します。

 

1.Visual Studioでイベントハンドラを自動生成する

Visual Studio デザイナー画面上でDncDaqを選択した状態で、プロパティウインドウからイベントを選択します。
イベント一覧が画面上に表示されますので、OnError 欄でクリックする事によって、イベント発生時の処理を記述するコードが自動生成されます。

・プロパティウインドウ画面
  

 

・自動生成されたイベントハンドラ記述部

   private void dncDaq1_OnError_1(object sender, short DeviceNo, dnc.common.DncErrorEventArgs e)

   {

   }

2.自動生成されたコードにイベント発生時の処理を記述する

    イベントハンドラ記述部にイベント発生時に実行する処理を記述してください。 

    この際、Dncの処理によっては別スレッドで実行されている場合があります。
    別スレッドで発生したイベントの処理において、UIスレッドのコントロールを操作する場合にはInvokeが必要となります。

    Invoke要不要の判定には、InvokeRequired をご使用ください。

 

・自動生成されたイベントハンドラへの記述例

private void dncDaq1_OnError_1(object sender, short DeviceNo, dnc.common.DncErrorEventArgs e)

{

    if (InvokeRequired == true)

    {

      //----------------------------------------

      // イベント引数内のステータス情報をラベルに連携します。

      // エラーイベントは別スレッドで実行されるためInvokeでフォームコントロールを操作します。

      //----------------------------------------

      Invoke(new Action(() => txtDaqError.Text = "デバイスNo.:" + DeviceNo.ToString() +

                                                              "エラータイプ:" + e.ErrorType.ToString() +

                                                              "エラーNo.:" + e.Error.ToString() +

                                                              "パラメータ:" + e.Param.ToString()));

    }

    else

    {

      //----------------------------------------

      // イベント引数内のステータス情報をラベルに連携します。

      // Invoke不要なため直接でフォームコントロールを操作します。

      //----------------------------------------

     txtDaqError.Text = "デバイスNo.:" + DeviceNo.ToString() +

                              "エラータイプ:" + e.ErrorType.ToString() +

                              "エラーNo.:" + e.Error.ToString() +

                              "パラメータ:" + e.Param.ToString();

    }

}