通信バッファは、どうも、複数存在して、
改行コードがくると、次のバッファに順番に値が格納されているようなんですが、(つまり、番号のついたバッファが複数存在して、改行コードがくると、情報が次のバッファに格納されるというイメージ?)
こういう認識でいいのでしょうか?
RS-232Cはシリアル通信プロトコルの一種で、データビット長は7ビットまたは8ビットです。その意味では、データの順番はビット順で、7ビットまたは8ビットを1つの固まりにしていると言えます。
また、RS-232Cは調歩同期通信ですから、改行などのデータの種類ではなくクロックにしたがってデータを送受信しています。
ご質問の意図は、おそらくRS-232Cに対応するCOMポートの仕様だと思うのですが、少なくともデバイスドライバ・レベルでは、ひとつのCOMポートに対してはバッファは1本ですし、改行などのコードによって切り替わるということもありません。
http://ja.wikipedia.org/wiki/RS-232
RS232Cはシリアル通信です。
バッファーが存在してるとしたら、ドライバーか何かが入っていて
バッファリングしてるだけです。
どのレベルで、RS232Cと通信しようとしてるのか不明ですが・・。
PCのRS232Cなら、Windows標準でついているハイパーターミナルで
受信データとか見れるはずです。
LabVIEWのことでしょうか。
言語仕様を知らないのですが、ご質問の状況だと、C言語におけるgets関数のようなメソッドを使っているのではないでしょうか。
getcのようなバイト単位で取得するメソッドを使うか、自力でハンドシェイク・プログラムを書く必要があると思います。
RS-232Cハンドシェイク・プログラムについては、「自動計測 システムのための Visual Basic6入門」(2000年2月8日発売/金藤仁 著)に書いてあるのですが、現在は絶版のようです。
LabVIEWのシリアル読み取りに関して回答します。
VISAシリアルポート構成関数に「終端文字を有効にする」(デフォルト:True)というパラメータがあります。
このパラメータがTrueのときは、シリアルポートから終端文字が読み込まれると読み取りを終了させます。
Falseのときは終端文字に関わらず、VISA読み取り関数のバイトカウントパラメータで指定されたバイト数のデータを読み取ります。
終端文字についてもVISAシリアルポート構成関数で指定することができます。(デフォルト:0x0A)
シリアルのバッファにつきましては、VISA I/Oバッファサイズ設定関数にて、受信バッファと送信バッファのそれぞれに任意のバッファサイズを割り当てることが可能です。(デフォルト:4096バイト)
LabVIEW的にも1つのポートにおける受信バッファの数は1つです。
現象は、LabVIEWのVISAシリアルポート構成の終端文字を有効にするパラメータがTrueに設定されているが故の動作であると思われます。
NI-VISAソフトウェア マニュアル
http://sine.ni.com/nips/nisearchservlet?nistype=psrelcon&nid=121...
貴重な情報ありがとうございます。
labviewで30行くらいのメッセージを受信しているのですが、1行に10文字くらいしか書いていなくても、4096バイトごとに読み込んではきださせると1行分しかでてきません。んで、また4096読み込むと、次の2行目が出てくる、、、という風な動作をしたので、もしかして、これって1個のメモリーじゃなくて、メモリーの配列になっているのか?と思ったんですが、、、、