gpt4 book ai didi

.net - 为什么 SerialPort 类没有 RIHolding 属性?

转载 作者:行者123 更新时间:2023-12-04 05:38:20 25 4
gpt4 key购买 nike

简单的问题。 .NET SerialPort类具有以下用于获取串行输入线的属性:

  • CDHolding - 获取端口的载波检测线的状态。
  • CtsHolding - 获取“清除发送”行的状态。
  • DsrHolding - 获取数据集就绪 (DSR) 信号的状态。

请注意 RIHolding 缺失。

此外,它还有 PinChanged事件。这提供了一个 SerialPinChange枚举值,它具有以下成员,并且确实包括一个用于 Ring 的成员:

  • CtsChanged - 清除发送 (CTS) 信号改变了状态...
  • DsrChanged - 数据集就绪 (DSR) 信号改变了状态...
  • CDChanged - 载波检测 (CD) 信号改变了状态...
  • Ring - 检测到响铃指示器。
  • Break - 在输入中检测到中断。

所以我的问题是,为什么没有 RIHolding 属性?


如果我们查看内部 SerialStream 类,我们会看到 CDHoldingCtsHoldingDsrHolding 是全部通过调用 Win32 GetCommModemStatus 实现功能。他的 lpModemStat 输出值是以下之一:

  • MS_CTS_ON 0x0010 CTS(清除发送)信号打开。
  • MS_DSR_ON 0x0020 DSR(数据集就绪)信号打开。
  • MS_RING_ON 0x0040 振铃指示信号开启。
  • MS_RLSD_ON 0x0080 RLSD(接收线路信号检测)信号打开。 (这映射到 CDHolding)

因此,添加一个仅查看第 6 位的 RIHolding 属性似乎是微不足道的。为什么将其排除在外?

最佳答案

由于振铃信号节奏,它本质上是一个 transient 信号。如果它打开,那么它不会持续很长时间。例如,美国为 2 秒,英国为 400 毫秒。所以信号的状态并不重要,它取决于时间,更糟糕的是,当你真的不走运时,你总是会观察到它。你最好在它打开时捕获它,因此 PinChanged 会报告它。

关于.net - 为什么 SerialPort 类没有 RIHolding 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11621509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com