タイトル : Re^4: VB2010のSerialportの受信イベントについて 投稿日 : 2011/11/25(Fri) 00:34 投稿者 : TANTAN
オショウさん、回答していただいてありがとうございます > 理論的には、イベントが発生する条件は、受信しないと発生しない > ので、ありえないのですが、PCのスペックが低い場合、イベント > の先頭で読み出しを行うと、『受信バイトがゼロ』となる事象は、 > 私も経験があります。 > > PCのスペックが十分にあった場合は・・・どこかにプログラム的 > な問題があって、正常に動作していないことがあります。 > 当方、VB2010での通信プログラムに関わるのは初めてでして、今回の 相談内容もソフトが悪いのか、システム的にしょうがないのかの判断が つかず困っていました。オショウさんのように実体験に基づいた話が聞けて とても助かります。 PCのスペックは標準以上なので、読めない原因はプログラムにあるかと 思われるので、プログラムの無駄を省くか、Read命令前に、 Do while serialport.BytetoRead <> 0 Loop を書くなどして、確実に受信するプログラム作りを見直してみようと思います。 > 受信データの区切り文字に何か固定のコード(デリミタ)になるも > のの通信の場合は(テキスト形式でもバイナリ形式でも)、そのコ > ードを受信するまで待ち合わせることができます。 > > 無い場合は、確実に1バイト受信方式で読み貯めてから一気に処理 > を行うことになるでしょう。 今回、区切り文字が無い仕様でして(条件に書くのを忘れてしまいました、すみません) 1文字めのコマンド文字からデータの長さを判断して、再度受信イベントを起こす という形式で書いています。 1バイト受信方式で読み貯めるというのは自分の考えにはありませんでした。 わざわざコードまで書いていただき本当にありがとうございます。 (受信イベントが起こった時に、その受信したデータを区切り文字まで読み込んだ事と データの有無を確認して、完全な受信データを渡してくれるコードでしょうか。また 手元に環境があるときに考えさせていただきます。) 今回の件に関して、体験談含めて有効なアドバイスももらえたので これらを参考にさせてもらいながら進めてみようと思います。 また、新たに相談・質問が出た場合はよろしくお願いします。 |