简单的问题。.NETSerialPort类具有以下用于获取串行输入行的属性:
CDHolding- 获取端口的载波检测线的状态。CtsHolding- 获取 Clear-to-Send 行的状态。DsrHolding- 获取数据集就绪 (DSR) 信号的状态。
笔记RIHolding不见了。
此外,它还有PinChanged活动。这提供了一个SerialPinChange枚举值,它具有以下成员,并且确实包括一个用于 Ring:
CtsChanged- 清除发送 (CTS) 信号已更改状态...DsrChanged- 数据集就绪 (DSR) 信号已更改状态...CDChanged- 载波检测 (CD) 信号已更改状态...Ring- 检测到环形指示器。Break- 在输入时检测到中断。
所以我的问题是,为什么没有RIHolding财产?
如果我们查看内部SerialStream类,我们会看到CDHolding、CtsHolding和DsrHolding都是通过调用 Win32GetCommModemStatus函数实现的。他的lpModemStat输出值为以下之一:
MS_CTS_ON0x0010CTS(清除发送)信号打开。MS_DSR_ON0x0020DSR(数据集就绪)信号打开。MS_RING_ON0x0040振铃指示灯信号亮。MS_RLSD_ON0x0080RLSD(接收线路信号检测)信号开启。(这映射到CDHolding)
所以,添加一个只查看第 6 位的属性似乎是微不足道的RIHolding。为什么这个被遗漏了?