掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
シリアル通信でのフロー制御 (ID:18159)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
すいませんWriteTotalTimeoutMultiplierはタイムアウトに関しての設定なので 送信間隔には影響がないようです。^^;) 送信間隔をあけるにはソフトで1文字毎に処理してください。 >これは、WriteFileで勝手に書き込み(?)しても、Windows側で送信停止してくれるということでしょうか? Xon/Xoffをして指定してあればドライバ側(Windows側)で自動で送信停止・再開します。 モデムではなくても通信ドライバは存在します。(標準ポートの場合は標準ドライバが使用されます) なお通信レートが速くて相手の機器が遅い場合は複数バイトを連続で送ると相手の処理が追いつかない場合があります。 その様な時は前記のように1文字単位で分割して送ると効果があります。 ただし通信にUSBシリアル変換を使用している場合などは1文字毎に分割してもドライバ側である程度まとまるまで送信が開始されないのでFlushfilebuffers()を使用して強制書き込みする必要があります。 >自分で処理する場合 はWindowsのオープン処理でXon/Xoffのフロー制御なしと指定します ソフトでは1文字毎に区切りながら送信してその間に受信データの処理も行います。 受信データのXoff(^S)/Xon(^Q)に応じて送信を制御します。 ただ簡単なようで結構手間のかかる処理です。 Xoff受信後Xonを取りこぼすと通信がハングしてしまいますのでタイムアウト等の処理を入れる必要があります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.