掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
シリアル通信でのフロー制御 (ID:18165)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
kkkさん、何度もすみません。 ちなみに、ログは最初の一部しか掲載していませんでした。 (たぶん)最後の設定が終わったときの結果がこれです IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8 IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13 IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:12 Replace:43 XonLimit:1024 XoffLimit:1024 > Replace:40は RTS Controlとなています > すなわちXon/Xoffの設定になっていません。 > Xon/Xoffの時は Shake:xx1, Replace:xx03 かな? この通り Replace:43 になっていますが、Shake:12 ですね。 もしかすると、あやしいのがフロー制御を設定している部分かもしれません。 実行部分を一部抜粋すると、以下のようになっています。 -------------------------------- GetCommState(FHandle, FDCB); // fOutxCtsFlow, fOutxDsrFlow, fDtrControl, fOutX, fInX, fRtsControl をオフにする FDCB.Flags := FDCB.Flags and $FEC0C003; FDCB.Flags := FDCB.Flags or dcb_Rts_Enable or dcb_Dtr_Enable dcb_OutX or dcb_InX; FDCB.Flags := FDCB.Flags or $00000003; // fBinary & fParity; SetCommState(FHandle, FDCB); ---------------------------------- 「〜をオフにする」がくさい感じです。 オフではなく、0にしてからフラグ更新するように代えると Shake:12 Replace:43 → Shake:9 Replace:83 になりました。 どうもXon/Xoffが有効らしい設定ですが、これでいいんでしょうか? これでテストしてみます。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.