# VisualBasic.NETからのDDE接続

マニュアル > サーバ作成ガイド > インターフェース編 > DDEインターフェース > # VisualBasic.NETからのDDE接続 |

概要

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

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

Step1.サーバ設定 | タグ登録設定を行います。
Step2.VBの基本設定 | VB.NETからDDE接続などをする上で必要な定義を行います。
Step3.値の読み書き | VB.NETから任意のタイミングでアイテム値の読み書きを行えるようにします。

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

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

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

Step1.サーバ設定

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

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

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

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

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

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

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

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

Step2.VBの基本設定

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

| サンプルでは、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ボタン押下で値の読み込みが行われます。

    '------------------------------------------
    ' 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ボタン押下で値の書き込みが行われます。

    '------------------------------------------
    ' 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

| Commonクラス(Common.vb)に記述してあるソースコードの中で、重要となるメソッドは以下となります。
コマンド | 説明
DdeInitializeA | DDE通信を開始するコマンドです。サーバのアプリケーション名と、トピック名を指定します。成功すると、DDE通信のチャネルを返します。このチャネルを利用して、他のDDE通信関連のコマンドを実行します。
DdeConnect | DDEサーバーにコネクションを行います。
DdeDisconnect | DDEサーバーとの接続を切断します。
DdeGetData | データを取得します。
DdeClientTransaction | クライアントとサーバーの間のデータトランザクションを開始します。