タイトル : Re^3: シリアル通信の割込み禁止 投稿日 : 2009/10/21(Wed) 06:51 投稿者 : オショウ
> ご助言ありがとうございます。 > とありましたのでデリゲートをはずしたところ、 > _comdt_1.Textに受信データをセットするところでエラーになってしまいます。 > デリゲートをうまく使わない方法があるのでしょうか? SerialPortコントロールをフォームに貼っておられると 思いましたが・・・ 私は通常、コントロールを貼らないでクラス生成して、 送受信するプログラムを作りますので、デリゲートは必 要だったのですが。 コントロールでも『必要』であるなら、戻して下さい。 因みに・・・ SerialPort.ReceivedBytesThreshold が受信バイト数の ような使い方をされていますが、それは間違いです。 BytesToRead で、実際に受信したバイト数を使うべきです。 ReceivedBytesThreshold は、あくまで受信イベントを発生 させる為のバイト数で、イベントが発生した時点ではそれ 以上の受信データが既にバッファに溜まっているかもしれ ないからです。 デリミタがあるプロトコルならば・・・ .RadTo("デリミタ文字") とすればよいでしょう。 尚、受信イベントを処理するルーチンでは・・・ If e.EventType = SerialData.Chars Then 〜 として、イベントの種類を確認して、データ受信の時のみ 受信動作を行うようにして下さい。 そうすれば、タイムアウト以外では、Try 〜 は必要なくな ります。 以上。参考まで |