public bool TryConnect() { _disconnecting = false; if (_connecting) { return(true); } _connecting = true; try { DeviceInterface deviceInterface = FindDevice(); if (deviceInterface == null) { return(false); } Thread.Sleep(500); _deviceInterfaceFile = deviceInterface.OpenFile(PacketSize); var caps = _deviceInterfaceFile.Capabilities; _log.Debug("InputReportByteLength: " + caps.InputReportByteLength); _log.Debug("OutputReportByteLength: " + caps.NumberOutputDataIndices); _log.Debug("OutputReportByteLength: " + caps.OutputReportByteLength); BeginAsyncRead(); ReadDeviceInfo(); ReadAudioPatterns(); ReadLedPatterns(); OnConnected(); return(true); } finally { _connecting = false; } }
public void Dispose() { if (_handle != null) { _handle.Dispose(); _handle = null; } }
private bool TryOpen(int blockSize) { Dispose(); DeviceInterface deviceInterface; Guid hidGuid = DeviceInformationSet.GetHidGuid(); using (var deviceInformationSet = new DeviceInformationSet(hidGuid, DiGetClassFlags.Present | DiGetClassFlags.DeviceInterface)) { deviceInterface = deviceInformationSet.GetDeviceInterfaces(hidGuid) .Where(d => d.IsValidUsbDevice) .FirstOrDefault(dis => (dis.Details.DevicePath.Contains("16c0") && dis.Details.DevicePath.Contains("0478")) || (dis.Details.DevicePath.Contains("03eb") && dis.Details.DevicePath.Contains("2067"))); if (deviceInterface != null) { _handle = deviceInterface.OpenFile(blockSize + 3); return(true); } return(false); } }
private void OnDisconnected() { try { _disconnecting = true; IsConnected = false; if (_deviceInterfaceFile != null) { _deviceInterfaceFile.Dispose(); _deviceInterfaceFile = null; Thread.Sleep(500); } if (Disconnected != null) { Disconnected(this, new EventArgs()); } } finally { _disconnecting = false; } }
public bool TryConnect() { _disconnecting = false; if (_connecting) { return true; } _connecting = true; try { DeviceInterface deviceInterface = FindDevice(); if (deviceInterface == null) { return false; } Thread.Sleep(500); _deviceInterfaceFile = deviceInterface.OpenFile(PacketSize); var caps = _deviceInterfaceFile.Capabilities; _log.Debug("InputReportByteLength: " + caps.InputReportByteLength); _log.Debug("OutputReportByteLength: " + caps.NumberOutputDataIndices); _log.Debug("OutputReportByteLength: " + caps.OutputReportByteLength); BeginAsyncRead(); ReadDeviceInfo(); ReadAudioPatterns(); ReadLedPatterns(); OnConnected(); return true; } finally { _connecting = false; } }
private bool TryOpen(int blockSize) { Dispose(); DeviceInterface deviceInterface; Guid hidGuid = DeviceInformationSet.GetHidGuid(); using (var deviceInformationSet = new DeviceInformationSet(hidGuid, DiGetClassFlags.Present | DiGetClassFlags.DeviceInterface)) { deviceInterface = deviceInformationSet.GetDeviceInterfaces(hidGuid) .Where(d => d.IsValidUsbDevice) .FirstOrDefault(dis => (dis.Details.DevicePath.Contains("16c0") && dis.Details.DevicePath.Contains("0478")) || (dis.Details.DevicePath.Contains("03eb") && dis.Details.DevicePath.Contains("2067"))); if (deviceInterface != null) { _handle = deviceInterface.OpenFile(blockSize + 3); return true; } return false; } }