簡単な質問。.NETSerialPortクラスには、シリアル入力ラインを取得するための次のプロパティがあります。
CDHolding-ポートのCarrierDetectラインの状態を取得します。CtsHolding-Clear-to-Send行の状態を取得します。DsrHolding-データセットレディ(DSR)信号の状態を取得します。
メモRIHoldingがありません。
さらに、PinChangedイベントがあります。これはSerialPinChange列挙値を提供します。これには次のメンバーがあり、Ringのメンバーが含まれています。
CtsChanged-Clear to Send(CTS)信号の状態が変更されました...DsrChanged-データセットレディ(DSR)信号の状態が変更されました。CDChanged-Carrier Detect(CD)信号の状態が変化しました。Ring-リングインジケータが検出されました。Break-入力でブレークが検出されました。
だから私の質問は、なぜRIHoldingプロパティがないのですか?
内部SerialStreamクラスを見るとCDHolding、、、CtsHoldingおよびDsrHoldingすべてがWin32GetCommModemStatus関数の呼び出しによって実装されていることがわかります。彼のlpModemStat出力値は次のいずれかです。
MS_CTS_ON0x0010CTS(clear-to-send)信号がオンになっています。MS_DSR_ON0x0020DSR(データセット対応)信号がオンになっています。MS_RING_ON0x0040リングインジケータ信号がオンになっています。MS_RLSD_ON0x0080RLSD(受信ライン信号検出)信号がオンになっています。(これはにマップされますCDHolding)
したがって、ビット6だけを見るプロパティを追加するのは簡単だったようRIHoldingです。なぜこれが省略されたのですか?