シリアルのフロー制御とTCP/IPの連携


 シリアル・LAN変換をするときに、シリアルのフロー制御を使用すればTCPパケットの送信/受信をコントロールしてデータ喪失を防ぐことが出来ます。

TCP/IP通信では、受付可能byte数をTCP接続相手に連絡するパケットがあり、これにより受信側の処理が追いつかず、受付可能byte数が少ない場合、送信側に送信を控えさせる事が可能です。

LANTRONIX社デバイスサーバは、受付可能byte数をTCP接続相手に連絡、TCP/IP通信を制御しデータ喪失を防ぎます。 下記の場合に制御がかかります。

  a. シリアル側デバイスにおいて内部処理が追いつかず、RTS/CTS制御の「RTSネゲート」を出して

   相手にシリアル送信を止めてもらう。   これに伴いTCP/IP通信も制御する。

   b. シリアル側デバイスにおいて内部処理が追いつかず、XON/XOFF制御の「XOFF」を出して

   相手にシリアル送信を止めてもらう。   これに伴いTCP/IP通信も制御する。

(フロー制御の話ではありませんが、シリアル送信がLAN側受信より遅く処理が間に合わない場合も同じ)

  ------------------------------------------------------------------------------------------------------

 

上記a. b.を行うにあたり設定出来るフロー制御方式は以下の通りとなります。

・No Flow:  フロー制御を使用しません。

・CTS/RTS: ハードウェアフロー制御を使用します。

・Xon/Xoff: ソフトウェアフロー制御を使用します。

 データ送信停止はXoff 、再開するときはXonを用います。

 制御命令Xon/Xoffはデバイスサーバ内部で処理され、デバイスサーバの向こうへは出ません。   

  Xoff : 0x13 (Ctrl+s)

  Xon : 0x11 (Ctrl+q)                                     (08/11/12誤記訂正)

・Xon/Xoff pass characters to host: ソフトウェアフロー制御を使用します。

 データ送信停止はXoff 、再開するときはXonを用います。

 制御命令Xon/Xoffはデバイスサーバ内部で処理され、デバイスサーバの向こうへも出ます。

 Evolution OS製品には本設定が無いのでご注意下さい。

 

 ------------------------------------------------------------------------------

Com Port Redirector (CPR)でRTS/CTSフロー制御を使用する場合,「RFC2217機能」を設定すると

アプリケーションから直接RTS/CTS制御も可能です。
 

最終更新:
2017-10-03 10:24
改訂:
1.16
評価点数:0 (0 件の投票)
Chuck Norris has counted to infinity. Twice.