tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル VB2010のSerialportの受信イベントについて
投稿日: 2011/11/24(Thu) 16:51
投稿者TANTAN
お世話になります。VB歴1年半のTANTANといいます。
VB2010のSerialportの受信イベントについての質問です。

今、VB2010の[System.IO.Ports.SerialPort]を使用して
バイナリ通信のRAMモニタソフトを設計しています。
基板とPCを繋げて、PCから「コマンド+アドレス+データ+チェックサム」を
送信すると、基板から「コマンド+アドレス+データ+チェックサム」がPCに
返されて、それのデータを表示するソフトを作ろうとしています。

環境は、
OS:XP
VB構成:VB2010ExpressEdition,日本語ServicePack1,日本語用の修正プログラム
SerialPort.BaudRate:38400bts
SerialPort.Parity:Even
(後は初期設定)
です。

現象を説明しますと、PC側から「メモリ読み出しコマンド」を[.Write]命令で送り
[SerialPort.ReceivedBytesThreshold=1]を設定します。
そして、発生した[Serialport]の[DataReceived]イベントの最初に、
[.Read]命令で、基板から返されたデータを読み出そうとするのですが、
特定のアドレスでのRead命令でエラーが起こります。
「IOExeptionはハンドルされませんでした。
 スレッドの終了またはアプリケーションの要求によって、I/O 処理は中止されました。」
 というエラーです。
自分でした対策として、有効だったのが
 [Read命令の前にDo While文でSerialport.BytestoRead<>0 になるまで待ってから
 Read命令に進む]
でして、今はとりあえずそれを使っています。(他にRead命令の前で100ms待たせると
エラーが出ずに実行できました。)

そして、質問なのですが、上の対策から推測するに、
「特定のアドレスにWriteで送ったコマンドのレスポンスが遅れ、受信イベントが発生した時点では
まだRead命令で読み込める状態ではなかったのでエラーが出る」
という状況かと思われますが、自分が知りたいのが

「アドレスによって、受信イベント発生時点で読み込めるデータ量やレスポンス速度に差が出るのか?」
ということです。

どなたか、アドバイスできる方がいましたら、レスの方お願いします。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。