アプリケーションは、始めにメディアコンバータとの接続処理を行う必要があります。
接続処理は、仮想アドレスマップの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プロトコルヘッダを作成します。
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に対し送信を行います。