RECEIVE BUFFER

4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次

version 6.8.3 (Modified)


RECEIVE BUFFER (receiveVar)

引数説明
receiveVar変数データを受信する変数

説明

RECEIVE BUFFER は、SET CHANNELコマンドで前もって開いたシリアルポートからデータを読み込みます。シリアルポートは、コマンドで読み込まれるまで内容を保持するバッファを持ちます。RECEIVE BUFFERはシリアルバッファから文字を読み込み、receiveVarに格納して、バッファを消去します。バッファ中に文字が存在しなければ、receiveVarは何も含みません。

Windows

Windowsのシリアルポートバッファのサイズは10KBに制限されています。つまり、バッファがオーバーフローする可能性があるということです。バッファがいっぱいになった後、新しい文字を受信すると、最も古いものと置き換えられます。古くなった文字は失われるため、新しい文字を受信する際は、すみやかにバッファを読み込むことが重要です。

Mac OS

Mac OS 9.xのシリアルポートのバッファサイズは、10KBに制限されます。Mac OS Xでは理論上は制限がありません(利用可能なメモリによる)。バッファがいっぱいになった後、新しい文字を受信すると、最も古いものと置き換えられます。古くなった文字は失われるため、新しい文字を受信する際は、すみやかにバッファを読み込むことが重要です。

Note: 4Dプラグインには、シリアルポートのバッファサイズを増加させられるものがあります。

RECEIVE BUFFERコマンドはRECEIVE PACKETと異なり、バッファ中のデータが何であれ、それを即座に返します。RECEIVE PACKETはバッファ中に指定した文字を発見するまで、または指定した数の文字が入力されるまで待ちます。

RECEIVE BUFFERの実行中に、Ctrl-Alt-Shift (Windows) または Command-Option-Shift (Macintosh) を押して、受信を中断できます。中断することにより、エラー-9994が生成されます。ON ERR CALLを使用してインストールしたエラー処理メソッドにより、このエラーをとらえることができます。

例題

以下のプロジェクトメソッドLISTEN TO SERIAL PORTは、RECEIVE BUFFERコマンドを使用してシリアルポートからテキストを取得し、それをインタープロセス変数に追加します:

      ` LISTEN TO SERIAL PORT
      ` シリアルポートを開く
   SET CHANNEL (201; Speed 9600 + Data Bits 8 + Stop Bits One + Parity None)
   <>IP_Listen_Serial_Port:=True
   While (<>IP_Listen_Serial_Port)
      RECEIVE BUFFER($vtBuffer) 
      If ((Length($vtBuffer)+Length(<>vtBuffer))>MAXTEXTLEN) 
         <>vtBuffer:=""
      End if 
      <>vtBuffer:=<>vtBuffer+$Buffer 
   End while

この時点で、他のプロセスからインタープロセス変数<>vtBufferを読み込み、シリアルポートから受信したデータの処理を行うことができます。

シリアルポートの監視を中断するには、以下のコードを実行します:

      ` シリアルポートの待ち受けを停止する
   <>IP_Listen_Serial_Port:=False

プロセス間でのコンフリクトを避けるために、セマフォを利用してインタープロセス変数<>vtBufferへのアクセスを保護する必要がある点に注意してください。詳細はSemaphoreコマンドを参照してください。


参照

ON ERR CALL, RECEIVE PACKET, Semaphore, SET CHANNEL, 変数.


4D - Documentation   French   English   German   Spanish   日本語   4D v11 SQLコマンドテーマリスト   4D v11 SQLインデックス   4D v11 SQL定数テーマリスト   戻る   前   次