Use EV_RINGTE for Modem Ring Detection (103637)
The information in this article applies to:
- Microsoft Windows Software Development Kit (SDK) 3.1
This article was previously published under Q103637 SUMMARY
Many communications applications need ring detection. The documentation for
SetCommState() indicates that EV_RING should be the event to set for this
purpose. However, the EV_RING bit does not work as expected; the EV_RINGTE
(ring indicator trailing edge) event should be used for ring detection.
The trailing edge of the ring indicator (RI) generates a modem status
register (MSR) interrupt, which in turn sets the EV_RINGTE bit. EV_RING is
set to the current status of RI. Because the interrupt does not occur until
RI changes from high to low, EV_RING almost always is low (except when it
happens to be high during another MSR interrupt).
The EV_RINGTE event is not referenced in the SetCommEventMask()
documentation; however, it is defined in WINDOWS.H, and will be supported
in future versions of 16-bit Windows.
NOTE: The information in this article applies to the 16-bit comm driver in
Windows 95 also.
EV_RING
EV_RING is set when the ring indicator is detected high during Modem Status
Register (MSR) interrupt processing. This is an absolute state, but since
it is read only during MSR interrupt processing, it will almost always be
zero. The only time it will not be zero is when the ring indicator is high
and the MSR interrupt is triggered for some other reason, such as a change
in the state of a line (CD, CTS, or DSR). Because of this, EV_RING has no
real value for detecting a ring.
EV_RINGTE
EV_RINGTE is set when a ring is detected on the modem. The trailing edge of
a ring indicator generates an MSR interrupt, which in turn sets the
EV_RINGTE event. Use this event to detect a ring.
Modification Type: | Major | Last Reviewed: | 6/24/2004 |
---|
Keywords: | kb16bitonly KB103637 |
---|
|