private void listBoxDeviceSearch_SelectedIndexChanged(object sender, EventArgs e) { SelectDeviceString = listBoxDeviceSearch.Text?.ToString(); SelectAddr = BleGattDevice.GetAddress(SelectDeviceString); CsrBleControl.Only().BleHostScanStop(); }
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); } }
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; } } }
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; })); }
protected virtual void OnDeviceDisconnectEvent(BleGattDevice dev) { DeviceDisconnectEvent?.Invoke(dev); }
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; })); }