したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

RS232Cでバイナリファイルの終わりの検出について

2igoten:2008/10/24(金) 11:30:34
おお! 記念すべき初めての質問ですね、丁寧に説明しちゃおうかな。

バイナリデータの終わりの検出ですね。
幾つかの考え方があります。
1、通信時間を見て判断する。
2、データ長のヘッダーを付ける。
3、エンドマークを付ける。
4、ピンチェンジを利用する。

1、DataRecievedの中でタイマーを設定し有る時間に次のデータが
来ない場合は、さっきのデータが最後のデータだったんだなと判断する方法です。
送る方で連続でデータを送らない制御が必要になります。
タイマーは500mSec(0.5秒)位に設定すればよいでしょう。
この方法が一番簡単です。

2、あらかじめ送るデータ長がわかっている場合は、4バイト程度の固定のヘッダーに
長さを書き込んで送る方法が有ります。
受信側はこのヘッダーを読み込んでデータの終わりを判断します。
この方法が一番お奨めです。
データの長さを先ず送り、100mSec位してデータを送ると、受信側は
データのByte配列の大きさをあらかじめ設定できますので、受信処理が簡単になります。


3、バイナリデータにエンドマーク!と驚かれるかもしれませんが、出来ます。
「¥¥」などのエスケープキャラクタを思い出して下さい。
2バイト又は4倍とのエンドマークを付けます。
データにエンドマークと同じデータが出現した場合はエスケープで同じマークを重ねます。
受信側ではエンドマークを監視する必要が有ります。
2バイトですと同じデータの出現確立が1/65536になります。
エンドマークは0x0とか0xFF等は止めたほうがいいです。

4、DTRやCTSをデータの終わりでOn/Offする方法が有ります。
DTRの場合について説明しますと、送信側は送信が終わったら、
DTRをOffします、受信側はDSRHoldingを見ていて、データの終わりを
判断します。
送信側は再度データを送る前にDTRをONします。
送信側でDTRをOffする時はデータ送信後100mSec位開けると良いでしょう。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板