投稿日 | : 2003/02/03(Mon) 11:27 |
投稿者 | : ゆうや |
Eメール | : curren62036@yahoo.co.jp |
URL | : |
タイトル | : Re^3: OnComm イベントについて |
> 送られてくるデータサイズはまちまちですが、RThresholdプロパティは1にしておりまして、1バ
イトの
> データが来るたびに、OnComm イベントでトラップできるようにしています。
> データサイズをあわせるということは、送られてくるデータのサイズによってRThresholdプロパテ
ィを毎回
> 変更する、又はInputLenプロパティを用いて受信データ数を制限して合わせるということが必要と
> 考えてよろしいでしょうか?
1バイト受信したらイベントを発生させたい時は1、100バイト受信したらイベントを発生させたい時は10
0にする、ということでした。語弊があったかもしれません。すみません。
因みに、受信したバイト数はInBufferCountで調べられます。1バイト受信したら1だと思いますよ。
OnCommイベントのところって、
Private Sub MSComm1_OnComm()
Dim Buffer
‘受信イベントが発生した場合
If MSComm1.CommEvent = comEvReceive Then
Buffer = MSComm1.Input ' ←受信バッファ内のデータをすべて取り出す
End If
End Sub
こんな感じになっていますか?1バイトのデータ毎にOnCommイベントを発生させて、データをどっかに退
避すれば次々とデータを取得できそうなのですが・・・。
> データ要求するコマンドを送信し、タイマー関数を使ってしばらく待った後に、
> Inputプロパティによって読み出すことができます。
> 無限ループは作っておりません。
Timerを使っているのですね。・・Timerが悪さをしているということはないでしょうか。前に、シリア
ル通信をすると、全てのイベントがトラップされなくなり・・と書かれていましたが、それとOnCommイベ
ントが発生しないというのも何か関係ありそうな気がするんですけど。Intervalが凄い短いとかないです
か??Interval=1とか。
Commコントロールでのデータのやりとりの方法はいろいろあります。駄目なら違う方法で・・とか、い
ろいろやってみるのもいいかもしれません。私も1ヶ月くらい悩んでましたから(-.-)
まともなお返事ができませんでしたが、いろいろデバッグしてみてください。