4D v16.3

RECEIVE BUFFER

ホーム

 
4D v16.3
RECEIVE BUFFER

RECEIVE BUFFER 


 

RECEIVE BUFFER ( receiveVar ) 
引数   説明
receiveVar  テキスト変数 in データを受信する変数

説明   

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

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

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

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
USE CHARACTER SET
変数

 
プロパティ 

プロダクト: 4D
テーマ: 通信
番号: 172

Errorシステム変数が更新されることがあります。

 
履歴 

変更: 4D v6.8.3

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v16)
ランゲージリファレンス ( 4D v16.1)
ランゲージリファレンス ( 4D v16.2)
ランゲージリファレンス ( 4D v16.3)