Esempio n. 1
0
        private void listBoxDeviceSearch_SelectedIndexChanged(object sender, EventArgs e)
        {
            SelectDeviceString = listBoxDeviceSearch.Text?.ToString();
            SelectAddr         = BleGattDevice.GetAddress(SelectDeviceString);

            CsrBleControl.Only().BleHostScanStop();
        }
Esempio n. 2
0
        private async void buttonConnect_Click(object sender, EventArgs e)
        {
            if (listBoxDeviceSearch.SelectedIndex < 0 || string.IsNullOrEmpty(SelectDeviceString))
            {
                MessageBox.Show("未选择设备!");
                return;
            }


            var dev = BleGattDevice.String2Device(SelectDeviceString);

            if (dev != null)
            {
                if (await CsrBleControl.Only().BleHostConnect(dev))
                {
                    OnDeviceConnectEvent(dev);
                    OnUpdateDeviceConnectResult(dev);
                }
            }
            else
            {
                OnDeviceConnectEvent(null);
                OnUpdateDeviceConnectResult(null);
            }

            listBoxDeviceSearch.SelectedItem = null;
            SelectDeviceString = string.Empty;
            SelectAddr         = string.Empty;
        }
        private async void buttonConnect_Click(object sender, EventArgs e)
        {
            if (listBoxDeviceSearch.SelectedIndex < 0 || string.IsNullOrEmpty(_selectSearchDeviceString))
            {
                MessageBox.Show("未选中设备!");
                return;
            }

            var dev = BleGattDevice.String2Device(_selectSearchDeviceString);

            if (dev != null)
            {
                if (await CsrBleControl.Only().BleHostConnect(dev))
                {
                    OnDeviceConnectResults(CsrBleControl.Only().GattConnectDevices);
                    OnDeviceSearchResults(CsrBleControl.Only().GattSearchDevices);

                    _selectConnectDeviceString        = string.Empty;
                    listBoxDeviceConnect.SelectedItem = null;
                }
                else
                {
                    MessageBox.Show("设备连接异常!");
                }
            }
            else
            {
                MessageBox.Show("设备连接异常!");
                OnDeviceConnectResults(CsrBleControl.Only().GattConnectDevices);
            }


            _selectSearchDeviceString = string.Empty;
            _selectSearchAddress      = string.Empty;
        }
        private void listBoxDeviceSearch_SelectedIndexChanged(object sender, EventArgs e)
        {
            _selectSearchDeviceString = listBoxDeviceSearch.SelectedItem.ToString();
            _selectSearchAddress      = BleGattDevice.GetAddress(_selectSearchDeviceString);

            CsrBleControl.Only().BleHostScanStop();
        }
        private async void buttonDisconnect_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(_selectConnectDeviceString))
            {
                await CsrBleControl.Only().BleHostDisconnect(BleGattDevice.GetAddress(_selectConnectDeviceString));

                OnDeviceConnectResults(CsrBleControl.Only().GattConnectDevices);

                _selectConnectDeviceString        = string.Empty;
                listBoxDeviceConnect.SelectedItem = null;
            }
            else
            {
                await CsrBleControl.Only().BleHostDisconnect();

                OnDeviceConnectResults(null);
            }
        }
Esempio n. 6
0
 public void OnUpdateDeviceConnectResult(BleGattDevice dev)
 {
     if (InvokeRequired)
     {
         Invoke(new Action <BleGattDevice>(OnUpdateDeviceConnectResult), dev);
     }
     else
     {
         if (dev != null)
         {
             labelBleConnectStatus.Text      = dev.Device2String();
             labelBleConnectStatus.BackColor = Color.Lime;
         }
         else
         {
             labelBleConnectStatus.Text      = string.Empty;
             labelBleConnectStatus.BackColor = Color.LightGray;
         }
     }
 }
Esempio n. 7
0
        public async Task <bool> BleHostDisconnect(BleGattDevice gattDevice)
        {
            if (!IsBleHosted)
            {
                Error("[CSR]:BleHostInitialize Fail!");
                return(false);
            }

            return(await Task.Run(() =>
            {
                if (CsrBleDll.CsrBleHostDisconnect(gattDevice.Handle))
                {
                    Debug("[CSR]:CsrBleHostDisconnect true!");
                    if (_disconnectEvent.WaitOne(2500))
                    {
                        if (!GattConnectDevices.Contains(gattDevice))
                        {
                            Debug($"[CSR]:CsrBleHostDisconnect {gattDevice.Address} Success!");
                            OnDeviceConnectEvent("蓝牙断开成功:" + gattDevice.Address);
                            gattDevice.OnDeviceDisconnectEvent(true);
                            return true;
                        }
                    }
                }

                if (GattConnectDevices.Contains(gattDevice))
                {
                    GattConnectDevices.Remove(gattDevice);
                }

                gattDevice.OnDeviceDisconnectEvent(false);
                Debug($"[CSR]:CsrBleHostDisconnect {gattDevice.Address} Fail!");
                OnDeviceConnectEvent("蓝牙断开失败:" + gattDevice.Address);
                return false;
            }));
        }
Esempio n. 8
0
 protected virtual void OnDeviceDisconnectEvent(BleGattDevice dev)
 {
     DeviceDisconnectEvent?.Invoke(dev);
 }
Esempio n. 9
0
        public async Task <bool> BleHostConnect(BleGattDevice gattDevice)
        {
            if (!IsBleHosted)
            {
                Error("[CSR]:BleHostInitialize Fail!");
                return(false);
            }

            CsrBleDll.CsrBleHostStopLESearch();
            if (GattConnectDevices.Exists(d => d.Address == gattDevice.Address))
            {
                Warning($"[CSR]:BleHostConnect GattDevice {gattDevice.Address} Already Connected!");
                return(true);
            }

            return(await Task.Run(() =>
            {
                var csrDevice = _csrSearchResults.FindAll(r => r.deviceAddress.ToString() == gattDevice.Address);
                if (csrDevice.Count == 0)
                {
                    Error($"[CSR]:BleHostConnect Find GattDevice Error at {gattDevice.Address}");
                    return false;
                }

                GattSearchDevices.RemoveAll(d => d.Address == gattDevice.Address);

                GattConnectDevices.RemoveAll(d => d.Address == gattDevice.Address);
                GattConnectDevices.Add(gattDevice);
                Debug("[CSR]:GattConnectDevices Add Connecting Device!");

                if (CsrBleDll.CsrBleHostSetConnectionParams((ushort)CsrBleDefine.CSR_BLE_PARAMETER_IGNORE,
                                                            (ushort)CsrBleDefine.CSR_BLE_PARAMETER_IGNORE,
                                                            CsrBleDefine.MIN_CONN_INTERVAL, CsrBleDefine.MAX_CONN_INTERVAL,
                                                            CsrBleDefine.SLAVE_LATENCY, CsrBleDefine.LINK_TIMEOUT))
                {
                    //set parameters is success
                    if (CsrBleDll.CsrBleHostConnect(csrDevice[0].deviceAddress))
                    {
                        Debug("[CSR]:CsrBleHostConnect Start!");
                        if (_connectEvent.WaitOne(5000))
                        {
                            Debug($"[CSR]:CsrBleHostConnect {csrDevice[0].deviceAddress} Success!");
                            if (_databaseEvent.WaitOne(5000))
                            {
                                gattDevice.OnDeviceConnectEvent(true);
                                Debug($"[CSR]:DatabaseDiscover {csrDevice[0].deviceAddress} Success!");
                                OnDeviceConnectEvent("蓝牙连接成功:" + csrDevice[0].deviceAddress);
                                return true;
                            }
                        }
                    }
                }

                GattConnectDevices.Remove(gattDevice);
                gattDevice.OnDeviceConnectEvent(false);
                Debug("[CSR]:GattConnectDevices Remove Connect Fail Device!");

                Debug($"[CSR]:CsrBleHostConnect {csrDevice[0].deviceAddress} Fail!");
                OnDeviceConnectEvent("蓝牙连接失败:" + csrDevice[0].deviceAddress);
                return false;
            }));
        }