掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
シリアル通信でのフロー制御 (ID:18160)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> >これは、WriteFileで勝手に書き込み(?)しても、Windows側で送信停止してくれるということでしょうか? > Xon/Xoffをして指定してあればドライバ側(Windows側)で自動で送信停止・再開します。 > モデムではなくても通信ドライバは存在します。(標準ポートの場合は標準ドライバが使用されます) うーむ・・・。 最初そうだと思って、WriteFileしまくっていたんですが(もちろんポートの設定も 機械の設定もフロー制御はXon/Xoffです)、機械側の動作を停止し、受信のみにの状態に 設定しても止まらずに送信し続けるんです。 送信前に、このように送信キューに空きがでるまで待つようにしています。 repeat ClearCommError(FHandle, dwError, @Stat); until (FOutQueueSize - Stat.cbOutQue) >= Size; Windows側で送信がストップしているなら、空きができないはずなので、 無限ループに陥るはずです。 そのため、送信キューの状態チェック前に、受信キューを調べて Xoff/Xonの状態をチェックするようにしました。 これで機械側を待機状態にし送信すると、確かに止まるようになりました。 ん〜・・・矛盾してる・・・。 ますますわからないです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.