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

タイトル Re^5: 応答なし、約1分後に回復
投稿日: 2012/08/15(Wed) 10:04
投稿者オショウ
> そこで質問は、下記の2点です。
> @シリアルポートのタイムアウトの時間はVBで設定できますか?
> A一般的にポートのオープンは、フォームを開いた時、
>  クローズは閉じたときだけですか?
>  現行のソースでは、その都度オープンクローズしています。
>
> レベルが低くて申し訳ありませんが、よろしくお願いいたします。

  横から失礼・・・
  .Output = ...
  で、出力命令を実行し、直後に
  .Portopen = False
  として、ポートをクローズすると、直前の出力命令が終わらないうち
  にポートが閉じられ、正しく通信が行われない場合があります。

  よって、都度、Open/Close したい場合は、送信バッファの内容が空
  になった(出力を終えた)か確認してから閉じるか・・・

  フォームのLoad時にポートをOpenし、フォームを閉じる際にCloseす
  る方が無難。

  ただし、シリアル通信での出力直後にフォームを閉じる動作を行うと
  結局同様の問題が出る可能性があるので、送信バッファの監視を行い
  必ず空になったら次動作を行う流れとして下さい。

※ シリアル通信にはノイズの関係で、受信バッファにゴミが入ってくる
  ことがあります。よって、送信直前に受信バッファをクリアするとい
  う機能を必ず実行して、誤動作を極力無くす仕掛けをして下さい。

※ FA的な環境の場合、器機との通信速度(ボーレート)が早ければ早
  いほど、ノイズに弱くなります。RS-232Cのケーブル長やケーブルの品
  質にも影響されます。一時的な回避方法には、通信速度を遅くすると
  回避できる場合が多いです。覚えていて損は無いので・・・

以上。参考まで

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

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