接続処理

■接続処理

アプリケーションは、始めにメディアコンバータとの接続処理を行う必要があります。
接続処理は、仮想アドレスマップのI/O空間(00300000H)を初期化する事で行われます。

 

■初期化情報の作成

初期化情報を仮想アドレスマップへ設定するために必要な情報テーブルを作成します。

PSER_DEVCTL pIoMap;

pIoMap = (PSER_DEVCTL)( (DWORD)(TxBuffer)  + sizeof(SVHEAD) );

pIoMap->ctrl_reg = SER_CR_START;  ―――――――――――①

pIoMap->baudrate = 9600;  ―――――――――――――――②

pIoMap->data_bit = 0;

pIoMap->parity_bit = 0;

pIoMap->stop_bit = 0;

pIoMap->flow_ctrl = 0;

pIoMap->xon_char = 0x11;

pIoMap->xoff_char = 0x13;

pIoMap->break_bit = 0;

pIoMap->signal_ctrl = 0x0003;

pIoMap->mode = 0; ―――――――――――――――――――③

pIoMap->tx_wait = 2000;

pIoMap->sampl_time = 0xffffffff;

pIoMap->age_time = 0;

pIoMap->ctrl_cmd_retx_intval = 0;

pIoMap->ctrl_cmd_retx_cnt = 0;

pIoMap->data_cmd_retx_intval = 0;

pIoMap->data_cmd_retx_cnt = 0;

pIoMap->host_tx_resum = 55; ――――――――――――――④

pIoMap->host_tx_pause = 45;

pIoMap->rs232c_rx_resum = 55;

pIoMap->re232c_rx_pause = 50;

①アプリケーションとメディアコンバータを接続するため、デバイスオープンのSER_CR_START (0001H) を設定しています。

②メディアコンバータのCOMポートに関する内容の設定をしています。

③アプリケーションとメディアコンバータの間で行われる通信に関する設定をしています。ここでは、ステータス変化の通知、生存時間の監視、制御コマンドの再送、データの再送を行わない設定にしています。

④メディアコンバータの内部バッファ管理に関する設定をしています。仮想アドレスMAPの詳細については、付録を参照してください。

 

 

■F&eITプロトコルヘッダの作成

作成した初期化情報テーブルの内容を、仮想アドレスマップへ書き込むために、F&eITプロトコルヘッダを作成します。

PSVHEAD pSVHead;

pSVHead = (PSVHEAD)(TxBuffer);

memset( pSVHead, 0x00, sizeof( SVHEAD ) );

pSVHead->bSVHCommand = SV_WRITE | SV_NO_ACK_FLAG;  ―― ①

pSVHead->dwSVHVAddr = SV_VA_IO_CTRL; ――――――――― ②

pSVHead->wSVHAccessSize = sizeof( SER_DEVCTL );

pSVHead->wSVHId = SV_ID;

pSVHead->bSVHVer = SV_VER;

pSVHead->wSVHSeqNo = (++SeqNo);  ――――――――――― ③

pSVHead->wSVHReplyId = (++ReplyId);

pSVHead->wSVHStatus = 0;

①仮想アドレスMAPへの書き込みコマンドである事を設定しています。ここでは、応答なしのコマンドを指定しています。

(注意)仮想COMモードでは、応答なしコマンドが拡張仕様として規定されています。詳しくは、付録の拡張F&eITプロトコルを参照してください。

②書き込みをする仮想アドレスMAPのアドレスとサイズを設定しています。

③このコマンドのシーケンス番号と、応答IDを設定します。シーケンス番号は、コマンド毎にインクリメントする必要があります。応答識別子は、応答なしのコマンドの場合、設定する必要はありません。

 

■送信

作成した初期化情報をF&eITプロトコルのデータとして、Socketに対し送信を行います。