public static void FindNanoPad() { if (UtilValues.PublicValue.nanoPads.Length != 0) { Array.Clear(UtilValues.PublicValue.nanoPads, 0, UtilValues.PublicValue.nanoPads.Length); Array.Resize(ref UtilValues.PublicValue.nanoPads, 0); } HIDDevice.interfaceDetails[] Pads = HIDDevice.getConnectedPads(); foreach (HIDDevice.interfaceDetails Pad in Pads) { SayobotNanoPad pad = new SayobotNanoPad { devicePath = Pad.devicePath, ProductID = Pad.PID }; pad.ReadingPadSettings(); HIDDevice PadDevice = new HIDDevice(pad.devicePath, false); byte[] writeData = CalcSHA(new byte[] { 0x02, 0x00, 0x00 }); PadDevice.write(writeData); System.Threading.Thread.Sleep(100); byte[] readData = PadDevice.read(); if (readData[1] == 0) { pad.OSVersion = readData[4].ToString(); } else { pad.OSVersion = "Unknown"; } writeData = CalcSHA(new byte[] { 0x02, 0x08, 0x01, 0x00 }); PadDevice.write(writeData); System.Threading.Thread.Sleep(100); readData = PadDevice.read(); if (readData[0] != 0xff) { byte[] nameEncode = new byte[readData[2]]; Array.Copy(readData, 3, nameEncode, 0, readData[2]); nameEncode = ChangeToSystemUnicodeEncoding(nameEncode); pad.Name = Encoding.Unicode.GetString(nameEncode); } else { pad.Name = Pad.product; } PadDevice.close(); Array.Resize(ref UtilValues.PublicValue.nanoPads, UtilValues.PublicValue.nanoPads.Length + 1); UtilValues.PublicValue.nanoPads[UtilValues.PublicValue.nanoPads.Length - 1] = pad; } }