public bool OpenDevice() { if (this.CheckIfPresentAndGetUSBDevicePath()) { this.WriteHandleToUSBDevice = USBM.CreateFile(this.DevicePath, 1073741824U, 3U, IntPtr.Zero, 3U, 0U, IntPtr.Zero); uint lastWin32Error1 = (uint)Marshal.GetLastWin32Error(); this.ReadHandleToUSBDevice = USBM.CreateFile(this.DevicePath, 2147483648U, 3U, IntPtr.Zero, 3U, 0U, IntPtr.Zero); uint lastWin32Error2 = (uint)Marshal.GetLastWin32Error(); if (lastWin32Error1 == 0U && lastWin32Error2 == 0U) { this.AttachedState = true; } else { this.AttachedState = false; if (lastWin32Error1 == 0U) { this.WriteHandleToUSBDevice.Close(); } if (lastWin32Error2 == 0U) { this.ReadHandleToUSBDevice.Close(); } } } else { this.AttachedState = false; } this.InfoDevice = this.GetInfoForDevice(); return(this.AttachedState); }
internal USBM.MyDeviceInfo GetInfoForDevice() { byte[] lpBuffer = new byte[65]; byte[] INBuffer = new byte[65]; uint lpNumberOfBytesWritten = 0; uint lpNumberOfBytesRead = 0; uint num1 = 0; uint num2 = 0; uint num3 = 0; uint num4 = 0; uint num5 = 0; USBM.MyDeviceInfo myDeviceInfo = new USBM.MyDeviceInfo(); try { if (this.AttachedState) { lpBuffer[0] = (byte)0; lpBuffer[1] = byte.MaxValue; lpBuffer[2] = (byte)55; for (uint index = 3; index < 65U; ++index) { lpBuffer[index] = byte.MaxValue; } if (USBM.WriteFile(this.WriteHandleToUSBDevice, lpBuffer, 65U, ref lpNumberOfBytesWritten, IntPtr.Zero)) { INBuffer[0] = (byte)0; if (this.ReadFileManagedBuffer(this.ReadHandleToUSBDevice, INBuffer, 65U, ref lpNumberOfBytesRead, IntPtr.Zero)) { num1 = ((uint)INBuffer[9] << 8) + (uint)INBuffer[8]; num2 = ((uint)INBuffer[9] << 8) + (uint)INBuffer[8]; num3 = ((uint)INBuffer[17] << 8) + (uint)INBuffer[16]; num4 = ((uint)INBuffer[19] << 8) + (uint)INBuffer[18]; num5 = ((uint)INBuffer[21] << 8) + (uint)INBuffer[20]; } } myDeviceInfo.CalibValue = (double)num1 / 10000.0; myDeviceInfo.CalibValue1 = 1.0 + ((double)num2 - 30000.0) * 1E-05; myDeviceInfo.CalibValue2 = 1.0 + ((double)num3 - 30000.0) * 1E-05; myDeviceInfo.CalibValue3 = 1.0 + ((double)num4 - 30000.0) * 1E-05; myDeviceInfo.CalibValue4 = 1.0 + ((double)num5 - 30000.0) * 1E-05; myDeviceInfo.Subtype = (int)INBuffer[7]; myDeviceInfo.UnitVersion = (int)INBuffer[6]; } } catch (Exception ex) { } return(myDeviceInfo); }