private bool OpenCustomDevice(out WinUsbDevice usb, out UsbEndpointReader reader, out UsbEndpointWriter writer)
        {
            usb    = null;
            reader = null;
            writer = null;

            var device = UsbDevice.AllWinUsbDevices.FirstOrDefault(d => d.Vid == 0x1974 && d.Pid == 0x0001) as WinUsbRegistry;

            if (device != null)
            {
                if (device.Open(out usb))
                {
                    writer = usb.OpenEndpointWriter(WriteEndpointID.Ep01);
                    writer.Reset();
                    writer.Flush();

                    reader = usb.OpenEndpointReader(ReadEndpointID.Ep01);
                    reader.Reset();
                    reader.Flush();
                    reader.ReadBufferSize      = 32;
                    reader.DataReceived       += CustomDataReceived;
                    reader.DataReceivedEnabled = true;
                    return(true);
                }
            }
            return(false);
        }