Example #1
0
        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();
            }
        }
Example #2
0
 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);
     }
 }
Example #3
0
        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);
            }
        }
Example #4
0
        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);
            }
        }
Example #5
0
        protected void OnPortRequested(PortRequestedEventArgs eventArgs)
        {
            EventHandler <PortRequestedEventArgs> handler = PortRequested;

            handler?.Invoke(this, eventArgs);
        }