4.4.2 バイナリデータを使用する場合のCallメソッドの使用例
バイナリデータを使用する場合のCallメソッドの使用例を次に示します。
この例で呼び出すSPPのサービスの情報は次のとおりです。
-
サービスグループ名:SVGRP1
-
呼び出すサービス名:SERV1
-
リモートAPI機能:未使用
-
構成ファイル:指定あり(プロファイルID="TP1Host1")
- 〈この項の構成〉
(1) Callメソッドの使用例(CUP.NET,C#の場合(リモートAPI機能未使用時))
using System; using Hitachi.OpenTP1; using Hitachi.OpenTP1.Client; namespace MyCompany { public class MyApplication1 { … public static void Main(string[] args) { try { TP1Client clt = new TP1Client(); // TP1Clientの生成 clt.OpenRpc("TP1Host1"); // RPCオープン int maxInLen = 512; // 入力データ格納領域長 int maxOutLen = 512; // 応答データ格納領域長 int inLen = 0; // 入力データ長 int outLen = maxOutLen; // 応答データ最大長 byte[] inData; // 入力データ格納領域 byte[] outData; // 応答データ格納領域 String inStr = "Say Hello to OpenTP1!"; // 入力データ String outStr = null; // 応答データ byte[] inDataTemp; inData = new byte[maxInLen]; System.Text.Encoding enc = System.Text.Encoding.Default; inDataTemp = enc.GetBytes(inStr); System.Array.Copy( // 入力データの設定 inDataTemp, 0, inData, 0, inDataTemp.Length); inLen += inDataTemp.Length; outData = new byte[maxOutLen]; // RPC実行 clt.Call("SVGRP1", "SERV1", inData, inLen, outData, ref outLen, TP1ClientFlags.DCNOFLAGS); outStr = enc.GetString(outData, 0, outLen); clt.CloseRpc(); // RPCクローズ } catch (TP1ClientException exp) { // Client .NETが検知したエラー } catch (TP1Exception exp) { // Client .NET(OpenTP1共通クラス)が検知したエラー } catch (Exception exp) { // 予期しない例外 } } } }
(2) Callメソッドの使用例(CUP.NET,Visual Basicの場合(リモートAPI機能未使用時))
Imports System Imports Hitachi.OpenTP1 Imports Hitachi.OpenTP1.Client Namespace MyCompany Public Class MyApplication1 … Public Shared Sub Main(ByVal args() As String) Dim clt As TP1Client Dim maxInLen As Integer = 512 ' 入力データ格納領域長 Dim maxOutLen As Integer = 512 ' 応答データ格納領域長 Dim inLen As Integer ' 入力データ長 Dim outLen As Integer ' 応答データ最大長 Dim inData(maxInLen - 1) As Byte ' 入力データ格納領域 Dim outData(maxOutLen - 1) As Byte ' 応答データ格納領域 Dim inStr As String ' 入力データ Dim outStr As String ' 応答データ Dim inDataTemp() As Byte Dim enc As System.Text.Encoding Try clt = New TP1Client() ' TP1Clientの生成 clt.OpenRpc("TP1Host1") ' RPCオープン inLen = 0 outLen = maxOutLen inStr = "Say Hello to OpenTP1!" enc = System.Text.Encoding.Default inDataTemp = enc.GetBytes(inStr) System.Array.Copy(inDataTemp, 0, inData, _ 0, inDataTemp.Length) ' 入力データの設定 inLen += inDataTemp.Length ' RPC実行 clt.Call("SVGRP1", "SERV1", inData, inLen, _ outData, outLen, TP1ClientFlags.DCNOFLAGS) outStr = enc.GetString(outData, 0, outLen) clt.CloseRpc() ' RPCクローズ Catch exp As TP1ClientException ' Client .NETが検知したエラー Catch exp As TP1Exception ' Client .NET(OpenTP1共通クラス)が検知したエラー Catch exp As Exception ' 予期しない例外 End Try End Sub End Class End Namespace