TRL:Terminal Request Library
ターミナルリクエストライブラリ

TrlClientLib(Windows版)- VB.NETでの利用

インストール方法
  1. PC上にダウンロードした「TrlClientLib.dll」を「参照」してください。
  2. ローカルにコピーした場合は、「TrlClientLib.dll」と同じフォルダ(DebugまたはRelease)に「TrlSupport.dll」と「TrlSupport64.dll」を置いて下さい。

※開発したPC以外に、アプリケーションと共に配布する場合は、「TrlClientLib.dll」と「TrlSupport.dll」と「TrlSupport64.dll」をアプリケーション(.exeファイル)と同じフォルダに配置してください。



アンインストール方法
  1. PC上にダウンロードしたファイルをフォルダごと削除してください。


使用方法

クラスの宣言
 Formクラス内で、TrlClientLib.Clientクラスを宣言してください。
Public Class Form1

    Private WithEvents objTrlClient As TrlClientLib.Client

End Class

インスタンスの作成と破棄
 FormのLoadイベントなどでClientクラスのインスタンスを作成します。
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

    objTrlClient = New TrlClientLib.Client

End Sub
 FormのFormClosedイベントなどでClientクラスのインスタンスを破棄します。
Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As FormClosedEventArgs) Handles Me.FormClosed

    objTrlClient = Nothing

End Sub

リクエスト
 サーバーへ以下のリクエストを処理する例を記載しています。
  1. 商品名問い合わせ
    • クライアントからのリクエスト情報(pstrData)には、"0001"(処理区分)に続いて商品コードをセット。
    • サーバーからのレスポンス情報として、商品名を取得します。
 ButtonのClickイベントなどに、リクエストのロジックを追加します。 以下の例では、通信状況を表示するためListBoxをひとつフォーム上に配置しています。ボタンを配置し、ButtonのTextを"通信開始"としておきます。 また、"0001"という処理コードに続けて、TextBoxの文字列(商品コード)をリクエスト情報としてセットしています。
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

    Dim strErrorMessage As String = ""

    If Button1.Text = "通信開始" Then
        ListBox1.Items.Clear()
        If objTrlClient.TrlRequest("192.168.0.2", 65001, My.Computer.Name, "0001" & TextBox1.Text, Application.StartupPath & "\Files", strErrorMessage) = True Then

            Button1.Text = "通信中断"
        Else
            Call MsgBox(strErrorMessage, MsgBoxStyle.Exclamation)
        End If
    Else
        objTrlClient.TrlAbort()
    End If

End Sub
TrlRequestメソッド
サーバーへリクエストします。 Public Function TrlRequest( _ ByVal pstrIp As String, _ ByVal pintPort As Integer, _ ByVal pstrClientKey As String, _ ByRef pstrData As String, _ ByVal pstrFolder As String, _ ByRef pstrErrorMessage As String) As Boolean
引数内容
pstrIp String型
サーバーのIPアドレスです。
pintPort Integer型
サーバー側で待ち受けているTCPソケット番号です。
pstrClientKey String型
サーバー側でクライアントを識別するための文字列です。各端末で重複しない値をセットすることを推奨します。
pstrData String型
サーバーへ受け渡すリクエスト情報で、任意の文字列です。処理を判別するコードや値をサーバー側へ受け渡すことができます。 ※送信できるリクエストは1KBまでです。 なお、この引数はShift-JISにエンコードしてバイナリデータとして送信され、サーバー側で適切なエンコードに戻されます。よって、送信できる文字数は、すべてが半角文字であれば1024文字、すべてが全角文字であれば512文字ということになります。バイナリ情報などを送信したい場合は一旦ファイルに出力してから、サーバーからTrlRecvFileメソッドを実行して受け渡してください。
pstrFolder String型
サーバーからファイル送受信が実行された際、読み込み先、保存先として使用するフォルダです。 サーバーからTrlSendFileが実行された際、このフォルダに保存されます。 サーバーからTrlRecvFileが実行された際、このフォルダにあるファイルが送信されますので、事前にこのフォルダに必要なファイルを準備しておく必要があります。
pstrErrorMessage String型
メソッドが失敗した場合に、エラーメッセージが返されます。
戻り値
Boolean型
True
リクエスト成功です。

False
リクエスト失敗です。エラーメッセージが、pstrErrorMessageに格納されています。
TrlAbortメソッド
サーバーへの通信を強制中断します。 Public Sub TrlAbort()

イベントプロシージャの定義
 コードの表示画面の上段にあるドロップダウンリストの「クラス名」で「objTrlClient」を選択します。
続いて、ドロップダウンリストの「メソッド名」で「TrlClientEvent」を選択するとイベントプロシージャがコード内に現れます。
Private Sub objTrlClient_TrlClientEvent( _
    ByVal pintStatus As TrlClientLib.Client.TRL_STATUS, _
    ByVal pstrData As String, _
    ByVal pstrErrorMessage As String) Handles objTrlClient.TrlClientEvent

    Select Case pintStatus

        Case TrlClientLib.Client.TRL_STATUS.mInfo
            Call mdlSetControl(MDL_CONTROL.ListBox, "INF:" & pstrData)

        Case TrlClientLib.Client.TRL_STATUS.mResult
            Call mdlSetControl(MDL_CONTROL.ListBox, "RET:" & pstrData) 'pstrDataに商品名がセットされている。
            Call mdlSetControl(MDL_CONTROL.Button, "通信開始")

        Case TrlClientLib.Client.TRL_STATUS.mError
            Call mdlSetControl(MDL_CONTROL.ListBox, "ERR:" & pstrErrorMessage)
            Call mdlSetControl(MDL_CONTROL.Button, "通信開始")

    End Select

End Sub

Enum MDL_CONTROL
    ListBox = 0
    Button = 1
End Enum

Private Sub mdlSetListBox(ByVal pItem As String)

    ListBox1.Items.Insert(0, Format(Now(), "yyyy/MM/dd HH:mm:ss") & pItem)

End Sub

Private Sub mdlSetButton(ByVal pText As String)

    Button1.Text = pText

End Sub

'--- TrlClientEventはメインスレッドとは別のスレッドから呼ばれるのでInvokeによるアクセスが必要となります。
'--- Invokeに関してはインターネット上に詳しい情報がありますので、説明は省略します。
Private Sub mdlSetControl(ByVal ptypControl As MDL_CONTROL, ByVal pstrValue As String)

    Dim aFunc As Action(Of String) = Nothing

    Try
        Select Case ptypControl
            Case MDL_CONTROL.ListBox
                aFunc = New Action(Of String)(AddressOf mdlSetListBox)
            Case MDL_CONTROL.Button
                aFunc = New Action(Of String)(AddressOf mdlSetButton)
        End Select
        Invoke(aFunc, New Object() {pstrValue})
    Catch ex As Exception
    Finally
        aFunc = Nothing
    End Try

End Sub
TrlClientEventイベント
サーバーからレスポンスを受け取った場合や通信エラーとなった場合に発生します。 また、サーバーから実行されている状況が報告されます。 Private Sub objTrlClient_TrlClientEvent( _ ByVal pintStatus As TrlClientLib.Client.TRL_STATUS, _ ByVal pstrData As String, _ ByVal pstrErrorMessage As String) Handles objTrlClient.TrlClientEvent
引数内容
pintStatus TrlClientLib.Client.TRL_STATUS型
mInfo
リクエストスレッドからの状況報告です。pstrDataに報告内容が格納されています。

mResult
リクエストスレッドからの終了報告です。pstrDataにサーバーからのレスポンス情報が格納されています。リクエストスレッドは停止します。

mError
リクエストスレッドからのエラー報告です。pstrErrorMessageにエラー内容が格納されています。リクエストスレッドは停止します。TrlAbortが呼ばれた際も発生します。
pstrData String型
サーバーからレスポンス時にセットされたレスポンス情報です。この値はサーバーから任意の文字列をセットできるので、処理の結果情報などを受け取ることができます。
pstrErrorMessage String型
通信が失敗した場合などに、エラーメッセージが返されます。

ダウンロード
ファイル内容
20160415_TrlClientLib_Windows.zip ベータ版(バージョン0.0.0.0)を配布します。十分、動作ご確認の上、ご利用ください。





累積:
今日:
昨日:
Copyright (C) 2016 森山商店 All Rights Reserved.