#include <dcmcf.h>
#include <string.h>
#define WAITTIME 60
void SEND01(in, in_len, out, out_len)
char *in ;
unsigned DCLONG in_len ;
char *out ;
unsigned DCLONG out_len ;
{
/*★★引数定義★★*/ /*引数を使用している関数*/
/* sendsync, recvsync, sendrecv, receive */
DCLONG action ;/* 0 0 0 0 */
DCLONG commform ;/* 0 0 0 0 */
char termnam[16] ;/* 0 0 0 0 */
char resv01[16] ;/* 0 0 0 0 */
char senddata[256] ;/* 0 - 0 - */
DCLONG sdataleng ;/* 0 - 0 - */
char recvdata[256] ;/* - 0 0 0 */
DCLONG rdataleng ;/* - 0 0 0 */
DCLONG time ;/* - 0 0 0 */
DCLONG wachtime ;/* 0 0 0 - */
char resv02[16] ;/* 0 - - - */
DCLONG opcd ;/* 0 - - - */
DCLONG inbufleng ;/* - 0 0 0 */
/*★★変数定義 & 初期化★★*/
int rtn = 0x00 ;
/*★★引数初期化★★*/
action = NULL;
commform = NULL;
memset(termnam, 0, 16) ;
memset(resv01, 0, 16) ;
memset(senddata, 0, 256);
sdataleng = NULL;
memset(recvdata, 0, 256);
rdataleng = NULL;
time = NULL;
wachtime = NULL;
memset(resv02, 0, 16) ;
opcd = NULL;
inbufleng = NULL;
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆ ダイアログ開始要求送信(TP-BEGIN-DIALOGUE) ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*★★ sendsync引数設定 (初期化) ★★*/
action = DCMCFEMI ;
commform = DCNOFLAGS ;
strcpy(termnam, "otm01") ;
resv01[0] = NULL ;
/* senddataイニシャライズは省略 */
sdataleng = 54 ;
resv02[0] = NULL ;
opcd = DCNOFLAGS ;
wachtime = WAITTIME ;
/*★ senddata 設定 ★*/
/*★ 先頭8バイト目までは,MCFが使用する ★*/
senddata[8] = 0x00 ; /* レングス 01 */
senddata[9] = 0x0a ; /* サービスプリミティブの長さ */
strcpy(senddata + 10, "OTP1") ; /* 送信手順(OTP1) */
strcpy(senddata + 14, "BDR ") ;
/* サービスプリミティブコード */
/* TP_BEGIN_DIALOGUE req */
senddata[18] = 0x00 ; /* レングス 02 */
senddata[19] = 0x2a ; /* パラメタフィールドのトータル */
senddata[20] = 0x00 ; /* レングス 03 */
senddata[21] = 0x0d ; /* 起動側TPSUタイトルの長さ */
strcpy(senddata + 22, "PR") ; /* 型コード */
strcpy(senddata + 24, "SEND_TPSU");
/* 起動側TPSUタイトル(パラメタ1) */
senddata[33] = 0x00 ; /* レングス 04 */
senddata[34] = 0x02 ; /* 受信側AP(パラメタ 2省略) */
senddata[35] = 0x00 ; /* レングス 05 */
senddata[36] = 0x0d ; /* 受信側TPSUタイトルの長さ */
strcpy(senddata + 37, "PR") ; /* 型コード */
strcpy(senddata + 39, "RECV_TPSU");
/* 受信側TPSUタイトル(パラメタ3) */
senddata[48] = 0x00 ; /* レングス 06 */
senddata[49] = 0x04 ; /* 予備の長さ */
senddata[50] = 0x48 ;
/*全二重&ハンドシェイク機能単位(パラメタ4) */
senddata[51] = 0xff ; /* 予備 */
senddata[52] = 0x00 ; /* レングス 07 */
senddata[53] = 0x02 ; /* サービス品質(パラメタ5省略) */
senddata[54] = 0x00 ; /* レングス 08 */
senddata[55] = 0x02 ;
/* アプリケーションコンテキスト(パラメタ 6) */
senddata[56] = 0x00 ; /* レングス 09 */
senddata[57] = 0x04 ; /* 確認項目の長さ */
strcpy(senddata + 58, "AL") ; /* 確認項目(パラメタ 7) */
/* all(同期型) */
senddata[60] = 0x00 ; /* レングス 10 */
senddata[61] = 0x02 ; /* ユ-ザ情報(省略) */
/*▼▼ メッセージ送信開始(sendsync) ▼▼*/
rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
senddata, sdataleng, resv02, opcd,
wachtime);
if ( rtn != DCMCFRTN_00000 )
{
goto ERROR;
}
/*▲▲ メッセージ送信終了(sendsync) ▲▲*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆ ダイアログ開始応答受信(TP-BEGIN-DIALOGUE) ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*★★ recvsync引数設定 (初期化) ★★*/
action = DCMCFFRST ;
commform = DCNOFLAGS ;
resv01[0] = NULL ;
/*recvdataイニシャライズは省略*/
rdataleng = NULL ;
inbufleng = 256 ;
time = NULL ;
wachtime = WAITTIME ;
/*▼▼ メッセージ受信開始(recvsync) ▼▼*/
rtn = dc_mcf_recvsync(action, commform, termnam, resv01,
recvdata, &rdataleng, inbufleng,
&time, wachtime);
if ( rtn != DCMCFRTN_00000 )
{
goto ERROR;
}
/*▲▲ メッセージ受信終了(recvsync) ▲▲*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆ データ送信(TP-DATA) ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*★★ sendsync引数設定 (初期化) ★★*/
action = DCMCFEMI ;
commform = DCNOFLAGS ;
resv01[0] = NULL ;
sdataleng = 23 ;
resv02[0] = NULL ;
opcd = DCNOFLAGS ;
wachtime = WAITTIME ;
/*★ senddata clear ★*/
memset(senddata, 0, 256) ;
/*★ senddata 設定 ★*/
/*★ 先頭8バイト目までは,MCFが使用する ★*/
senddata[8] = 0x00 ; /* レングス 01 */
senddata[9] = 0x0a ; /* サービスプリミティブの長さ */
strcpy(senddata + 10, "OTP1"); /* 送信手順(OTP1) */
strcpy(senddata + 14, "TDR ");
/* サービスプリミティブコード */
/* TP_DT req */
senddata[18] = 0x00 ; /* レングス 02 */
senddata[19] = 0x02 ; /* パラメタ(省略) */
senddata[20] = 0x00 ; /* レングス 03 */
senddata[21] = 0x0b ; /* ユーザ情報の長さ */
senddata[22] = 0x80 ; /* 連結状態 */
strcpy(senddata + 23, "USERDATA"); /* ユーザデータ */
/*▼▼ データ送信(sendsync)開始 ▼▼*/
rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
senddata, sdataleng, resv02, opcd,
wachtime);
if ( rtn != DCMCFRTN_00000 )
{
goto ERROR;
}
/*▲▲ データ送信(sendsync)終了 ▲▲*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆ ハンドシェイク受信(TP-HANDSHAKE) ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*★★ recvsync引数設定 (初期化) ★★*/
action = DCMCFFRST ;
commform = DCNOFLAGS ;
resv01[0] = NULL ;
rdataleng = NULL ;
inbufleng = 256 ;
time = NULL ;
wachtime = WAITTIME ;
/*★★ recvdata clear ★★*/
memset(recvdata, 0, 256) ;
/*▼▼ メッセージ受信開始(recvsync) ▼▼*/
rtn = dc_mcf_recvsync(action, commform, termnam, resv01,
recvdata, &rdataleng, inbufleng,
&time, wachtime);
if ( rtn != DCMCFRTN_00000 )
{
goto ERROR;
}
/*▲▲ メッセージ受信終了(recvsync) ▲▲*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆ ハンドシェイク送信(TP-HANDSHAKE) ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*★★ sendsync引数設定 (初期化) ★★*/
action = DCMCFEMI ;
commform = DCNOFLAGS ;
resv01[0] = NULL ;
sdataleng = 14 ;
resv02[0] = NULL ;
opcd = DCNOFLAGS ;
wachtime = WAITTIME ;
/*★ senddata clear ★*/
memset(senddata, 0, 256) ;
/*★ senddata 設定 ★*/
/*★ 先頭8バイト目までは,MCFが使用する ★*/
senddata[8] = 0x00 ; /* レングス 01 */
senddata[9] = 0x0a ; /* サービスプリミティブの長さ */
strcpy(senddata + 10, "OTP1"); /* 送信手順(OTP1) */
strcpy(senddata + 14, "HSP ");
/* サービスプリミティブコード */
senddata[18] = 0x00 ; /* レングス 02 */
senddata[19] = 0x02 ; /* パラメタ(省略) */
senddata[20] = 0x00 ; /* レングス 3 */
senddata[21] = 0x02 ; /* ユーザ情報(省略) */
/*▼▼ データ送信開始(sendsync) ▼▼*/
rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
senddata, sdataleng, resv02, opcd,
wachtime);
if ( rtn != DCMCFRTN_00000 )
{
goto ERROR;
}
/*▲▲ データ送信終了(sendsync) ▲▲*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆ ダイアログ終了要求送受信(TP-END-DIALOGUE) ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*★★ sendrecv引数設定 ★★*/
action = DCMCFEMI ;
commform = DCMCFIO ;
resv01[0] = NULL ;
sdataleng = 18 ;
rdataleng = NULL ;
inbufleng = 256 ;
time = NULL ;
wachtime = WAITTIME ;
/*★ senddata and recvdata clear ★*/
memset(senddata, 0, 256) ;
memset(recvdata, 0, 256) ;
/*★ senddata 設定 ★*/
/*★ 先頭8バイト目までは,MCFが使用する ★*/
senddata[8] = 0x00 ; /* レングス 01 */
senddata[9] = 0x0a ; /* サービスプリミティブの長さ */
strcpy(senddata + 10, "OTP1") ; /* 送信手順(OTP1) */
strcpy(senddata + 14, "EDR ") ;
/* サービスプリミティブコード */
/* TP_END_DIALOGUE req */
senddata[18] = 0x00 ; /* レングス 02 */
senddata[19] = 0x06 ; /* パラメタ全体の長さ */
senddata[20] = 0x00 ; /* レングス 03 */
senddata[21] = 0x04 ; /* 確認項目の長さ */
strcpy(senddata + 22, "TR") ; /* 確認項目(パラメタ1) */
senddata[24] = 0x00 ; /* レングス 04 */
senddata[25] = 0x02 ; /* ユーザ情報(省略) */
/*▼▼ メッセージ送受信開始(sendrecv) ▼▼*/
rtn = dc_mcf_sendrecv(action, commform, termnam, resv01,
senddata, sdataleng, recvdata,
&rdataleng, inbufleng, &time,
wachtime);
if ( rtn != DCMCFRTN_00000 )
{
goto ERROR;
}
/*▲▲ メッセージ送受信終了(sendrecv)▲▲*/
ERROR : ;
}
#include <dcmcf.h>
#include <string.h>
#define WAITTIME 60
void RECV01(in, in_len, out, out_len)
char *in ;
unsigned DCLONG in_len ;
char *out ;
unsigned DCLONG out_len ;
{
/*★★引数定義★★*/ /*引数を使用している関数*/
/* sendsync, recvsync, sendrecv, receive */
DCLONG action ;/* 0 0 0 0 */
DCLONG commform ;/* 0 0 0 0 */
char termnam[16] ;/* 0 0 0 0 */
char resv01[16] ;/* 0 0 0 0 */
char senddata[256] ;/* 0 - 0 - */
DCLONG sdataleng ;/* 0 - 0 - */
char recvdata[256] ;/* - 0 0 0 */
DCLONG rdataleng ;/* - 0 0 0 */
DCLONG time ;/* - 0 0 0 */
DCLONG wachtime ;/* 0 0 0 - */
char resv02[16] ;/* 0 - - - */
DCLONG opcd ;/* 0 - - - */
DCLONG inbufleng ;/* - 0 0 0 */
/*★★変数定義 & 初期化★★*/
int rtn = NULL ;
/*★★引数初期化★★*/
action = NULL;
commform = NULL;
memset(termnam, 0, 16) ;
memset(resv01, 0, 16) ;
memset(senddata, 0, 256);
sdataleng = NULL;
memset(recvdata, 0, 256);
rdataleng = NULL;
time = NULL;
wachtime = NULL;
memset(resv02, 0, 16) ;
opcd = NULL;
inbufleng = NULL;
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆ ダイアログ開始要求受信(TP-BEGIN-DIALOGUE) ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*★★ receive引数設定 (初期化) ★★*/
action = DCMCFFRST;
commform = DCNOFLAGS;
termnam[0] = NULL ;
/*recvdataイニシャライズは省略*/
resv01[0] = NULL ;
rdataleng = NULL ;
inbufleng = 256 ;
time = NULL ;
/*▼▼ ダイアログ開始要求受信開始(receive) ▼▼*/
rtn = dc_mcf_receive(action, commform, termnam, resv01,
recvdata, &rdataleng, inbufleng,
&time);
if ( rtn != DCMCFRTN_00000 )
{
goto ERROR;
}
/*▲▲ ダイアログ開始要求受信終了(receive) ▲▲*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆ ダイアログ開始応答送信(TP-BEGIN-DIALOGUE) ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*★★ sendsync引数設定 (初期化) ★★*/
action = DCMCFEMI ;
commform = DCNOFLAGS ;
resv01[0] = NULL ;
sdataleng = 18 ;
resv02[0] = NULL ;
opcd = DCNOFLAGS ;
wachtime = WAITTIME ;
/*★ senddata 設定 ★*/
/*★ 先頭8バイト目までは,MCFが使用する ★*/
senddata[8] = 0x00 ; /* レングス 01 */
senddata[9] = 0x0a ; /* サービスプリミティブの長さ */
strcpy(senddata + 10, "OTP1") ; /* 送信手順(OTP1) */
strcpy(senddata + 14, "BDPA") ;
/* サービスプリミティブコード */
/* TP_BEGIN_DIALOGUE rsp */
senddata[18] = 0x00 ; /* レングス 02 */
senddata[19] = 0x06 ; /* パラメタ全体の長さ */
senddata[20] = 0x00 ; /* レングス 03 */
senddata[21] = 0x04 ; /* 結果の長さ */
strcpy(senddata + 22, "AC") ; /* 結果(パラメタ 1) */
senddata[24] = 0x00 ; /* レングス 04 */
senddata[25] = 0x02 ; /* ユーザ情報(省略) */
/*▼▼ メッセージ送信開始(sendsync) ▼▼*/
rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
senddata, sdataleng, resv02, opcd,
wachtime);
if ( rtn != DCMCFRTN_00000 )
{
goto ERROR;
}
/*▲▲ メッセージ送信終了(sendsync) ▲▲*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆ TP_DATA受信(TP-DT) ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*★★ recvsync引数設定 (初期化) ★★*/
action = DCMCFFRST ;
commform = DCNOFLAGS ;
resv01[0] = NULL ;
rdataleng = NULL ;
inbufleng = 256 ;
time = NULL ;
wachtime = WAITTIME ;
/*★★ recvdata clear ★★*/
memset(recvdata, 0, 256) ;
/*▼▼ メッセージ受信開始(recvsync) ▼▼*/
rtn = dc_mcf_recvsync(action, commform, termnam, resv01,
recvdata, &rdataleng, inbufleng,
&time, wachtime);
if ( rtn != DCMCFRTN_00000 )
{
goto ERROR;
}
/*▲▲ メッセージ受信終了(recvsync) ▲▲*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆ ハンドシェイク(TP-HANDSHAKE) ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*★★ sendrecv引数設定 (初期化) ★★*/
action = DCMCFEMI ;
commform = DCMCFIO ;
resv01[0] = NULL ;
sdataleng = 18 ;
rdataleng = NULL ;
inbufleng = 256 ;
time = NULL ;
wachtime = WAITTIME ;
/*★★ senddata clear★★*/
memset(senddata, 0, 256);
/*★★ recvdata clear★★*/
memset(recvdata, 0, 256);
/*★ senddata 設定 ★*/
/*★ 先頭8バイト目までは,MCFが使用する ★*/
senddata[8] = 0x00 ; /* レングス 01 */
senddata[9] = 0x0a ; /* サービスプリミティブの長さ */
strcpy(senddata + 10, "OTP1") ; /* 送信手順(OTP1) */
strcpy(senddata + 14, "HSR ") ; /* サービスプリミティブ */
/* TP_HANDSHAKE */
senddata[18] = 0x00 ; /* レングス 02 */
senddata[19] = 0x06 ; /* パラメタ全体の長さ */
senddata[20] = 0x00 ; /* レングス 03 */
senddata[21] = 0x04 ; /* 緊急確認項目の長さ */
strcpy(senddata + 22, "NR") ;
/* 緊急確認項目(パラメタ 1) */
senddata[24] = 0x00 ; /* レングス 04 */
senddata[25] = 0x02 ; /* ユーザ情報(省略) */
/*▼▼ メッセージ送受信開始(sendrecv) ▼▼*/
rtn = dc_mcf_sendrecv(action, commform, termnam, resv01,
senddata, sdataleng, recvdata,
&rdataleng, inbufleng, &time,
wachtime);
if ( rtn != DCMCFRTN_00000 )
{
goto ERROR;
}
/*▲▲ メッセージ送受信終了(sendrecv) ▲▲*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆ ダイアログ終了要求受信(TP-END-DIALOGUE) ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*★★ recvsync引数設定 (初期化) ★★*/
action = DCMCFFRST ;
commform = DCNOFLAGS ;
resv01[0] = NULL ;
rdataleng = NULL ;
inbufleng = 256 ;
time = NULL ;
wachtime = WAITTIME ;
/*★★ recvdata clear★★*/
memset(recvdata, 0, 256) ;
/*▼▼ メッセージ受信開始(recvsync) ▼▼*/
rtn = dc_mcf_recvsync(action, commform, termnam, resv01,
recvdata, &rdataleng, inbufleng,
&time, wachtime);
if ( rtn != DCMCFRTN_00000 )
{
goto ERROR;
}
/*▲▲ メッセージ受信終了(recvsync)▲▲*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*◆ ダイアログ終了応答送信(TP-END-DIALOGUE) ◆*/
/*◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆*/
/*★★ sendsync引数設定 (初期化) ★★*/
action = DCMCFEMI ;
commform = DCNOFLAGS ;
resv01[0] = NULL ;
sdataleng = 14 ;
resv02[0] = NULL ;
opcd = DCNOFLAGS ;
wachtime = WAITTIME ;
/*★★ senddata clear★★*/
memset(senddata, 0, 256) ;
/*★ senddata 設定 ★*/
/*★ 先頭8バイト目までは,MCFが使用する ★*/
senddata[8] = 0x00 ; /* レングス 01 */
senddata[9] = 0x0a ; /* サービスプリミティブの長さ */
strcpy(senddata + 10, "OTP1") ; /* 送信手順(OTP1) */
strcpy(senddata + 14, "EDP ") ;
/* サービスプリミティブコード */
senddata[18] = 0x00 ; /* レングス 02 */
senddata[19] = 0x02 ; /* パラメタ(省略) */
senddata[20] = 0x00 ; /* レングス 03 */
senddata[21] = 0x02 ; /* ユーザ情報(省略) */
/*▼▼ メッセージ送信開始(sendsync) ▼▼*/
rtn = dc_mcf_sendsync(action, commform, termnam, resv01,
senddata, sdataleng, resv02, opcd,
wachtime);
/*▲▲ メッセージ送信終了(sendsync) ▲▲*/
ERROR : ;
}