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