private async void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher watcher, BluetoothLEAdvertisementReceivedEventArgs eventArgs) { BluetoothLEDevice device = null; try { watcher.Stop(); device = await ConnectToDevice(eventArgs); GattDeviceService service = GetServiceData(device, wantedServiceUuidString); GattCharacteristic characteristic = GetCharacteristicData(service, wantedCharacteristicUuidString); BLEPort blePort = new BLEPort(device, characteristic); device.ConnectionStatusChanged += async(BluetoothLEDevice dev, object o) => { try { if (dev.ConnectionStatus == BluetoothConnectionStatus.Connected) { GattCommunicationStatus status = await characteristic.WriteClientCharacteristicConfigurationDescriptorAsync( GattClientCharacteristicConfigurationDescriptorValue.Notify); PortRequestedEventArgs portEventArgs = new PortRequestedEventArgs(blePort); OnPortRequested(portEventArgs); } } catch (Exception e) { if (dev != null) { dev.Dispose(); } ExceptionOccuredEventArgs exceptionEventArgs = new ExceptionOccuredEventArgs(e); OnWaitForPortConnectionsExceptionOccured(exceptionEventArgs); } }; } catch (Exception e) { if (device != null) { device.Dispose(); } ExceptionOccuredEventArgs exceptionEventArgs = new ExceptionOccuredEventArgs(e); OnWaitForPortConnectionsExceptionOccured(exceptionEventArgs); } finally { watcher.Start(); } }
public override void Start() { foreach (string portName in defaultSerialPortNames) { Port port = new SerialPort(portName); //port.PortClosed += PortClosedEventHandler; //port.Open(); PortRequestedEventArgs eventArgs = new PortRequestedEventArgs(port); OnPortRequested(eventArgs); } }
static void PortRequestedEventHandler(object sender, PortRequestedEventArgs eventArgs) { try { Port port = eventArgs.port; port.Open(); port.ClientConnectionRequested += ClientConnectionRequestedEventHandler; port.PortClosed += PortClosedEventHandler; port.ReadTaskExceptionOccured += PortExceptionOccuredEventHandler; port.WriteTaskExceptionOccured += PortExceptionOccuredEventHandler; port.WaitForConnectionRequestTaskExceptionOccured += PortExceptionOccuredEventHandler; unidentifiedPorts.Add(port); } catch (Exception e) { Util.DisplayExceptionInfo(e, "in PortRequest of " + eventArgs.port.ID); } }
private async Task WaitForPortConnections() { try { while (true) { TcpClient tcpClient = await tcpListener.AcceptTcpClientAsync(); TCPPort tcpPort = new TCPPort(tcpClient); PortRequestedEventArgs eventArgs = new PortRequestedEventArgs(tcpPort); OnPortRequested(eventArgs); } } catch (Exception e) { ExceptionOccuredEventArgs eventArgs = new ExceptionOccuredEventArgs(e); OnWaitForPortConnectionsExceptionOccured(eventArgs); } }
protected void OnPortRequested(PortRequestedEventArgs eventArgs) { EventHandler <PortRequestedEventArgs> handler = PortRequested; handler?.Invoke(this, eventArgs); }