简单的问题。.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_ON
0x0010
CTS(清除发送)信号打开。MS_DSR_ON
0x0020
DSR(数据集就绪)信号打开。MS_RING_ON
0x0040
振铃指示灯信号亮。MS_RLSD_ON
0x0080
RLSD(接收线路信号检测)信号开启。(这映射到CDHolding
)
所以,添加一个只查看第 6 位的属性似乎是微不足道的RIHolding
。为什么这个被遗漏了?