[
板情報
|
カテゴリランキング
]
したらばTOP
■掲示板に戻る■
全部
1-100
最新50
|
メール
| |
RS232Cでバイナリファイルの終わりの検出について
2
:
igoten
: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
(省略可)
:
※書き込む際の注意事項は
こちら
※画像アップローダーは
こちら
(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板