タイトル : Re^5: 応答なし、約1分後に回復 投稿日 : 2012/08/15(Wed) 10:04 投稿者 : オショウ
> そこで質問は、下記の2点です。 > @シリアルポートのタイムアウトの時間はVBで設定できますか? > A一般的にポートのオープンは、フォームを開いた時、 > クローズは閉じたときだけですか? > 現行のソースでは、その都度オープンクローズしています。 > > レベルが低くて申し訳ありませんが、よろしくお願いいたします。 横から失礼・・・ .Output = ... で、出力命令を実行し、直後に .Portopen = False として、ポートをクローズすると、直前の出力命令が終わらないうち にポートが閉じられ、正しく通信が行われない場合があります。 よって、都度、Open/Close したい場合は、送信バッファの内容が空 になった(出力を終えた)か確認してから閉じるか・・・ フォームのLoad時にポートをOpenし、フォームを閉じる際にCloseす る方が無難。 ただし、シリアル通信での出力直後にフォームを閉じる動作を行うと 結局同様の問題が出る可能性があるので、送信バッファの監視を行い 必ず空になったら次動作を行う流れとして下さい。 ※ シリアル通信にはノイズの関係で、受信バッファにゴミが入ってくる ことがあります。よって、送信直前に受信バッファをクリアするとい う機能を必ず実行して、誤動作を極力無くす仕掛けをして下さい。 ※ FA的な環境の場合、器機との通信速度(ボーレート)が早ければ早 いほど、ノイズに弱くなります。RS-232Cのケーブル長やケーブルの品 質にも影響されます。一時的な回避方法には、通信速度を遅くすると 回避できる場合が多いです。覚えていて損は無いので・・・ 以上。参考まで |