VisualBasic.NETからのDDE接続

<< Click to Display Table of Contents >>

マニュアル > サーバ作成ガイド > インターフェース編 > DDEインターフェース >

VisualBasic.NETからのDDE接続

概要

VisualBasic.Netによって開発した独自のDDEクライアントアプリケーションから、FA-ServerのDDEインターフェースに対して、DDE接続するための設定例及び、アプリケーションの作成例について解説します。

 

ここで紹介する手順としては、大きく分けて以下の3ステップです。

Step1.サーバ設定

タグ登録設定を行います。

Step2.VBの基本設定

VB.NETからDDE接続などをする上で必要な定義を行います。

Step3.値の読み書き

VB.NETから任意のタイミングでアイテム値の読み書きを行えるようにします。

 

この機能のサンプルは、以下からご利用頂けます。

 

なお、サンプル及び詳細の説明は、VB.Net2010で行います。

 

attention

本サンプルはCF_TEXTのみの対応であり、CF_UNICODETEXTには対応していないため注意してください。

 

Step1.サーバ設定

準備としてタグの登録を行います。ここでは、仮想デバイスのタグを作成します。

 

1.左側のツリーの「Driver」を右クリックし「ユニット追加」を選択します。
c_interface_0072

 

2.「メモリ」の「仮想通信」「仮想デバイス」を選択し、「OK」を押します。
c_interface_0073

 

3.「U01」を右クリックし「フォルダ追加」を選択します。
c_interface_0074

 

4.「F01」を右クリックし「タグ追加」を選択します。
c_interface_0075

 

5.左側のリストから「T01」を右クリックし、「プロパティ」を選択します。
c_interface_0076

 

6.「アドレス設定」タブから「04 - D データレジスタ」を選択し、「OK」を押します。
c_interface_0077
※ここでは、D0000(ワードレジスタ)を数値タグ(整数バイナリ)として設定しています。
 

7.同様の手順でT02を追加し、タイプに「07 - アスキー」を選択し、以下のように設定を行います。
c_interface_0082
※ここでは、D0001(自由指定)を文字タグ(アスキー)として設定しています。

 

 

Step2.VBの基本設定

VB.NET側の基本的な作成内容について説明します。概要のみの説明となっているため、詳細はサンプルと見比べながら確認してください。

 

hint

サンプルでは、DDEに関する処理をCommonクラス(Common.vb)に定義しています。一通りの接続から値の読み書きの処理コードを含めております。これからの作成方法では、そのCommonクラスを利用する形での構築方法を記載しています。

 

1.DDEサーバーへのコネクション処理を定義します。
初期処理及びコネクションを行います。初期処理は「SuDdeInit」、コネクションは「FnDdeConnect」で行っています。

'------------------------------------------
' DDE Start & Connect
'------------------------------------------
Private Sub btStart_Click(sender As System.Object, e As System.EventArgs) Handles btStart.Click
    Dim vAppName As String = txAppName.Text
    Dim vTopiName As String = txTopiName.Text

    SuDdeInit(txAppName.Text, txTopiName.Text)

    mvConv = FnDdeConnect(vAppName, vTopiName)
    If mvConv = 0 Then
        MessageBox.Show(vAppName & "/" & vTopiName & vbCrLf & "Connect failure!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Exit Sub
    End If

    btDisConnect.Enabled = True
    btRead.Enabled = True
    btWrite.Enabled = True
    btStart.Enabled = False

End Sub

 

2.OPCサーバーへのディスコネクション処理を定義します。
ディスコネクションは「FnDdeConnectEnd」で行います。

'------------------------------------------
' DDE DisConnect
'------------------------------------------
Private Sub btDisConnect_Click(sender As System.Object, e As System.EventArgs) Handles btDisConnect.Click

    FnDdeConnectEnd(mvConv)

    btDisConnect.Enabled = False
    btRead.Enabled = False
    btWrite.Enabled = False
    btStart.Enabled = True

End Sub

 

 

Step3.値の読み書き

任意のタイミングでアイテム値の読み書きを行う方法を紹介します。

 

 

読み込み

任意のタイミングでアイテム値の読み込みを行います。読み込みは「FnDdeRequest」で行います。

 

サンプルではReadボタン押下で値の読み込みが行われます。

c_interface_0083

 

'------------------------------------------
' DDE Read
'------------------------------------------
Private Sub btRead_Click(sender As System.Object, e As System.EventArgs) Handles btRead.Click

    Dim vItemName As String = txItemName1.Text
    txRead.Text = FnDdeRequest(mvConv, vItemName)

End Sub

 

 


書き込み

 

任意のタイミングでアイテム値の書き込みを行います。読み込みは「FnDdePoke」で行います。

 

サンプルではWriteボタン押下で値の書き込みが行われます。

c_interface_0084

 

'------------------------------------------
' DDE Write
'------------------------------------------
Private Sub btWrite_Click(sender As System.Object, e As System.EventArgs) Handles btWrite.Click

    Dim vItemName As String = txItemName2.Text
    FnDdePoke(mvConv, vItemName, txWrite.Text)

End Sub

 

hint

Commonクラス(Common.vb)に記述してあるソースコードの中で、重要となるメソッドは以下となります。

 

コマンド

説明

DdeInitializeA

DDE通信を開始するコマンドです。サーバのアプリケーション名と、トピック名を指定します。成功すると、DDE通信のチャネルを返します。このチャネルを利用して、他のDDE通信関連のコマンドを実行します。

DdeConnect

DDEサーバーにコネクションを行います。

DdeDisconnect

DDEサーバーとの接続を切断します。

DdeGetData

データを取得します。

DdeClientTransaction

クライアントとサーバーの間のデータトランザクションを開始します。