人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

RS232Cの バッファについて知りたい。
通信バッファは、どうも、複数存在して、
改行コードがくると、次のバッファに順番に値が格納されているようなんですが、(つまり、番号のついたバッファが複数存在して、改行コードがくると、情報が次のバッファに格納されるというイメージ?)
こういう認識でいいのでしょうか?

●質問者: youkan_ni_ocha
●カテゴリ:学習・教育 科学・統計資料
✍キーワード:RS232C イメージ コード バッファ 存在
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● pahoo
●23ポイント

RS-232Cはシリアル通信プロトコルの一種で、データビット長は7ビットまたは8ビットです。その意味では、データの順番はビット順で、7ビットまたは8ビットを1つの固まりにしていると言えます。

また、RS-232Cは調歩同期通信ですから、改行などのデータの種類ではなくクロックにしたがってデータを送受信しています。


ご質問の意図は、おそらくRS-232Cに対応するCOMポートの仕様だと思うのですが、少なくともデバイスドライバ・レベルでは、ひとつのCOMポートに対してはバッファは1本ですし、改行などのコードによって切り替わるということもありません。


参考サイト

◎質問者からの返答

labviewで30行くらいのメッセージを受信しているのですが、1行に10文字くらいしか書いていなくても、4096バイトごとに読み込んではきださせると1行分しかでてきません。んで、また4096読み込むと、次の2行目が出てくる、、、という風な動作をしたので、もしかして、これって1個のメモリーじゃなくて、メモリーの配列になっているのか?と思ったんですが、、、、


2 ● ken33jp
●23ポイント

http://ja.wikipedia.org/wiki/RS-232

RS232Cはシリアル通信です。

バッファーが存在してるとしたら、ドライバーか何かが入っていて

バッファリングしてるだけです。

どのレベルで、RS232Cと通信しようとしてるのか不明ですが・・。

PCのRS232Cなら、Windows標準でついているハイパーターミナルで

受信データとか見れるはずです。


3 ● pahoo
●22ポイント

LabVIEWのことでしょうか。

言語仕様を知らないのですが、ご質問の状況だと、C言語におけるgets関数のようなメソッドを使っているのではないでしょうか。

getcのようなバイト単位で取得するメソッドを使うか、自力でハンドシェイク・プログラムを書く必要があると思います。

RS-232Cハンドシェイク・プログラムについては、「自動計測 システムのための Visual Basic6入門」(2000年2月8日発売/金藤仁 著)に書いてあるのですが、現在は絶版のようです。


4 ● Beirii
●22ポイント

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...

◎質問者からの返答

貴重な情報ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ