void DVS128Interface::startReading(){
    CUsbIo dev;
    USB_DEVICE_DESCRIPTOR devDesc;
    DWORD status;
    bool found = false;

    devList = CUsbIo::CreateDeviceList(&usbIoID);
    if (devList == NULL){
        printf("Unable to build a device list!\n");
    }

    // Open and query usb devices to find the right one
    for (int i = 0; i < 127; i++){
        status = dev.Open(i,devList,&usbIoID);
        if ( status != USBIO_ERR_SUCCESS ) {
            if ( status != USBIO_ERR_NO_SUCH_DEVICE_INSTANCE ){
                fprintf(stdout,"UsbDev.Open returned with error 0x%08X\n",status);
            }
            break;
        }
        // Query device descriptor for comparison with PID and VID
        status = dev.GetDeviceDescriptor(&devDesc);
        if ( status == USBIO_ERR_SUCCESS ){
            found = true;
            if ( devDesc.iSerialNumber!=0 ){
                dev.Close();
                if (devDesc.idVendor == VID && devDesc.idProduct == PID){
                    fprintf(stdout,"Device found, starting reader.\n");
                    devIndex = i;
                    startReaderThread(devIndex);
                    break;
                } else {
                    fprintf(stdout,"Device not recognized\n");
                }
            } else {
                fprintf(stdout,"Querying device descriptor failed, status:0x%08X\n",status);
                dev.Close();
            }
        }

        if ( !found ) {
            fprintf(stdout,"There are no USB devices attached to the USBIO driver.\n");
        }
        else
            fprintf(stdout,"Device found...");
        CUsbIo::DestroyDeviceList(devList);
    }
}
void DVS128Interface::sendVendorRequest(UCHAR req, const char *buf, DWORD bufSize){
    CUsbIo dev;
    DWORD status;
    // open the device
    if(!dev.IsOpen()){
        status = dev.Open(devIndex,devList,&usbIoID);
        if ( status != USBIO_ERR_SUCCESS ) {
            printf("Could not open device: %x",status);
            return;
        }
    }
    printf("Sending Vendor Request: %x\n", req);
    USBIO_CLASS_OR_VENDOR_REQUEST request;
    ZeroMemory(&request,sizeof(request));
    request.Flags = 0;
    request.Type = RequestTypeVendor;
    request.Recipient = RecipientDevice;
    request.RequestTypeReservedBits = 0;
    request.Request = req;
    request.Value = 4;
    request.Index = 0;
    status = dev.ClassOrVendorOutRequest(
                buf,
                bufSize,
                &request
                );
    printf("Status: %x\n",status);
    dev.Close();
}
static void CloseUsbDevice()
	{
	// Close the device
	g_UsbDev.Close();
	PRINT_IF_VERBOSE("CUsbIo::Close called\n");
	}