3

簡単な質問。.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_ON 0x0010CTS(clear-to-send)信号がオンになっています。
  • MS_DSR_ON 0x0020DSR(データセット対応)信号がオンになっています。
  • MS_RING_ON 0x0040リングインジケータ信号がオンになっています。
  • MS_RLSD_ON 0x0080RLSD(受信ライン信号検出)信号がオンになっています。(これはにマップされますCDHolding

したがって、ビット6だけを見るプロパティを追加するのは簡単だったようRIHoldingです。なぜこれが省略されたのですか?

4

1 に答える 1

4

これは本来、リング信号のリズムによる一時的な信号です。オンになっている場合、非常に長い間オンのままになることはありません。たとえば、米国では 2 秒、英国では 400 ミリ秒です。したがって、信号の状態はあまり意味がありません。タイミングに依存し、最悪の場合、本当に不運な場合は常に信号がオフになります。オンになったときにそれをキャッチした方がよいため、PinChanged はそれを報告します。

于 2012-07-24T05:00:04.553 に答える