/// <summary> /// Handles the VirtualPortCreated event of the _virtualComPortsFinder control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="LaJust.PowerMeter.Communications.VirtualComPortEventArgs"/> instance containing the event data.</param> private void VirtualComPortsFinder_VirtualPortCreated(object sender, VirtualComPortEventArgs e) { Trace.TraceInformation("{0}.VirtualPortCreated: PNPDeviceID={1} DeviceId={2} Caption={3}", CLASSNAME, e.PNPDeviceID, e.DeviceID, e.Caption); Trace.Indent(); IReceiver receiver = new Receiver(e.PNPDeviceID, e.DeviceID, _courtNumber++); int count; // Hook up event handlers receiver.StrikeDetected += OnStrikeDetected; receiver.PanelButtonPressed += OnPanelButtonPressed; receiver.DeviceStatusUpdate += OnDeviceStatusUpdate; receiver.DeviceRegistered += OnDeviceRegistered; // Clear any existing registrations from receiver receiver.ClearGameRegistrations(); lock (_recievers) { _recievers.Add(e.PNPDeviceID, receiver); count = _recievers.Count; } OnReceiverCountChanged(this, new ReceiverCountEventArgs() { Count = count }); Trace.Unindent(); }
/// <summary> /// Starts this instance to manage new receivers. /// </summary> /// <param name="courtNumber">The court number.</param> private void Start() { Trace.TraceInformation("{0}.Start: Starting monitoring CourtNumber={1}", CLASSNAME, _courtNumber); Trace.Indent(); // Populate the receiver manager with any existing receivers foreach (VirtualComPortEventArgs port in _virtualComPortsFinder.GetPorts()) { try { IReceiver receiver = new Receiver(port.PNPDeviceID, port.DeviceID, _courtNumber++); // Hook up event handlers receiver.StrikeDetected += OnStrikeDetected; receiver.PanelButtonPressed += OnPanelButtonPressed; receiver.DeviceStatusUpdate += OnDeviceStatusUpdate; receiver.DeviceRegistered += OnDeviceRegistered; // Clear any existing registrations from receiver receiver.ClearGameRegistrations(); _recievers.Add(port.PNPDeviceID, receiver); } catch (Exception ex) { Trace.TraceError("{0}.Start: Exception={1}", CLASSNAME, ex.GetBaseException()); } } _virtualComPortsFinder.StartMonitoring(VirtualComPortsFinderMode.Both); OnReceiverCountChanged(this, new ReceiverCountEventArgs() { Count = _recievers.Count }); Trace.Unindent(); }