Circuit: [RTS] o---. | o | |=| Push switch o | | [CTS] o---+ | | | | | 10K |_| | [GND] o---' Code: using System; using System.IO.Ports; using System.Media; namespace Doorbell { class Program { static void Main(string[] args) { using (var Port = new SerialPort("COM1")) { bool OldPinState = false; Port.PinChanged += (sender, e) => { if (e.EventType == SerialPinChange.CtsChanged) { var NewPinState = Port.CtsHolding; if (NewPinState && !OldPinState) { SystemSounds.Beep.Play(); } OldPinState = NewPinState; } }; Port.Open(); Port.RtsEnable = true; Console.WriteLine("Press any key to exit."); Console.ReadKey(true); } } } }